diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 00000000..1a50d40d --- /dev/null +++ b/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +skip = ./node_modules*,./dist/*,./package-lock.json,./lib/srfi/*,./assets/UnicodeData.txt,./scripts/numerals.scm diff --git a/.github/workflows/codespell.yaml b/.github/workflows/codespell.yaml new file mode 100644 index 00000000..0823a94a --- /dev/null +++ b/.github/workflows/codespell.yaml @@ -0,0 +1,17 @@ +name: Codespell + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Codespell + uses: codespell-project/actions-codespell@v2 \ No newline at end of file diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 4d17cf9b..76d9cfa5 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -7,7 +7,7 @@ Main interpreter data flow. Main public function is `exec` that accept string (code) and Environment instance. If environment is not specified it use main user environment (same as lips.env) which is child of global environment. `exec` use internal `parse` function that is JavaScript generator that parse single S-Expression and `exec` use `evaluate` to evaluate the expression. -`evaluate` use multiple features like handling of Syntax, Macros and it auto resolve promises. `evaluate` may or may not return a promise. But `exec` always return a promise, so it's easier to use. You can never know which expression return a promise and which don't. `evaluate` also use `apply` function that was inspired by meta circual evaluator (but it was refactored into this state, it was not like this from beginning). +`evaluate` use multiple features like handling of Syntax, Macros and it auto resolve promises. `evaluate` may or may not return a promise. But `exec` always return a promise, so it's easier to use. You can never know which expression return a promise and which don't. `evaluate` also use `apply` function that was inspired by meta circular evaluator (but it was refactored into this state, it was not like this from beginning). ## UML Diagram of all classes @@ -16,7 +16,7 @@ Main public function is `exec` that accept string (code) and Environment instanc ## Lexer Lexer is created as simple state machine with `Lexer._rules` that specify -all the states. The sate change is simple it can change from null to given +all the states. The state change is simple it can change from null to given state for a given token (e.g. symbol), remain in same state and move from given state to null. The last change produce new token. Rules are dynamic the parser can be update by syntax extensions so `Lexer.rules` is a getter diff --git a/CHANGELOG.md b/CHANGELOG.md index ec293c59..7f068e7b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,7 +57,7 @@ * property throw error when name is used without ellipsis * fix using dot notation inside syntax-rules macros * typecheck `string->symbol` and `symbol->string` -* fix `parent.frame` inside `Intepreter` +* fix `parent.frame` inside `Interpreter` * fix `eval` without env * fix quote as delimiter * fix comma dot as two tokens @@ -362,7 +362,7 @@ * `if` no longer require boolean as cond * change how arrays are presented, they are look like scheme vector `#(...)` * rename `string` to `repr` -* new API `lips.Intepreter` - for using interpreter that have different stdout/stdin +* new API `lips.Interpreter` - for using interpreter that have different stdout/stdin * balanced_parenthesis now throw exception on broken code * remove global env from public API (you can still access it using `env.parent`) * remove `->` function (it will collide with SRFI 197 that may be implemented in the future) @@ -395,7 +395,7 @@ * improve balancing parenthesis * expose balanced method in public API (preferred name) * optional brackets -* `interator?` function and detection if iterators from `repr` and `type` [#51](https://github.com/jcubic/lips/issues/51) +* `iterator?` function and detection if iterators from `repr` and `type` [#51](https://github.com/jcubic/lips/issues/51) * `add-repr!` function to add string representations to objects * new `string=?`, `sort`, `in`, `list-tail` and `bound?` functions * add new `exit` function into executable interpreter @@ -689,7 +689,7 @@ ### Features * new nth and reverse functions * new type checking functions null? regex? pair? string? number? symbol? array? object? boolean? -* add lips source code that throwed exception in JavaScript error message +* add lips source code that threw exception in JavaScript error message ### Bug fixes * fix lambda with rest parameter ### Breaking diff --git a/LICENSE b/LICENSE index 674012dd..d3bec000 100644 --- a/LICENSE +++ b/LICENSE @@ -71,7 +71,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- -Part of the library (contentloaded function) licesed with +Part of the library (contentloaded function) licensed with Copyright (c) 2005-2010 Diego Perini and NWBOX S.a.s. diff --git a/README.md b/README.md index 00b1efb9..36facd7a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![npm](https://img.shields.io/badge/npm-1.0.0%E2%80%93beta.16-blue.svg)](https://www.npmjs.com/package/@jcubic/lips) ![1.0.0 Complete](https://img.shields.io/github/milestones/progress-percent/jcubic/lips/1?label=1.0.0%20Complete) [![Build and test](https://github.com/jcubic/lips/actions/workflows/build.yaml/badge.svg?branch=devel&event=push)](https://github.com/jcubic/lips/actions/workflows/build.yaml) -[![Coverage Status](https://coveralls.io/repos/github/jcubic/lips/badge.svg?branch=devel&27bf4fb65e05b7570ad966f858c29bcc)](https://coveralls.io/github/jcubic/lips?branch=devel) +[![Coverage Status](https://coveralls.io/repos/github/jcubic/lips/badge.svg?branch=devel&61cb7f36a3668cabc9125f4c4bce1141)](https://coveralls.io/github/jcubic/lips?branch=devel) [![Join Gitter Chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jcubic/lips) ![NPM Download Count](https://img.shields.io/npm/dm/@jcubic/lips) ![JSDelivr Download count](https://img.shields.io/jsdelivr/npm/hm/@jcubic/lips) @@ -79,7 +79,7 @@ https://github.com/jcubic/lips/blob/master/lib/js/bookmark.js ``` Create any link in your bookmarks, edit it and copy paste the content of that file. -Affter you click on the link it will create the REPL at the bottom of the page. +After you click on the link it will create the REPL at the bottom of the page. (NOTE: It may not work on every page because of content security policy; e.g. google.com or gihub.com) @@ -203,7 +203,7 @@ Executables also return a S-Expression according to SRFI-176 use `lips --version ## Limitations Because LIPS is tree walking interpreter sometimes it may be slow. Especially if you want to -process long arrays and use callback function. If the array is quite large each pice of code +process long arrays and use callback function. If the array is quite large each piece of code inside the callback may slow down the processing. For example see: script [reference.scm](https://github.com/jcubic/lips/blob/devel/scripts/reference.scm) @@ -222,12 +222,12 @@ something like this: (arr.sort fn)) ``` -Another example of slow performace is using LIPS with React, the more code you put into components +Another example of slow performance is using LIPS with React, the more code you put into components the slower the app will become. Examples: * [Preact app that update SVG](https://codepen.io/jcubic/pen/PojYxBP) - it requires to use debounce. -* [React with Hooks](https://codepen.io/jcubic/pen/PoKQmpq?editors=1000) - on click the UI freezes for ~300ms, you can see warnigs in dev tools. +* [React with Hooks](https://codepen.io/jcubic/pen/PoKQmpq?editors=1000) - on click the UI freezes for ~300ms, you can see warnings in dev tools. The issue with performance is tracked in [#197](https://github.com/jcubic/lips/issues/197). diff --git a/REFERENCE.md b/REFERENCE.md index 9f207376..67c4a909 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -5,7 +5,7 @@ (- n1 n2 ...) (- n) -Substract number passed as argument. If only one argument is passed +Subtracts n2 and subsequent numbers from n1. If only one argument is passed it will negate the value. ``` @@ -14,21 +14,21 @@ it will negate the value. (. obj . args) (get obj . args) -Function use object as base and keep using arguments to get the +This function uses an object as a base and keeps using arguments to get the property of JavaScript object. Arguments need to be a strings. -e.g. `(. console "log")` if you use any function inside LIPS is -will be weakly bind (can be rebind), so you can call this log function +e.g. `(. console "log")` if you use any function inside LIPS it +will be weakly bound (can be rebound), so you can call this log function without problem unlike in JavaScript when you use `var log = console.log`. -`get` is an alias because . don't work in every place, e.g. you can't -pass it as argument. +`get` is an alias because . doesn't work everywhere, e.g. you can't +pass it as an argument. ``` ## * ``` (* . numbers) -Multiplicate all numbers passed as arguments. If single value is passed +Multiplies all numbers passed as arguments. If single value is passed it will return that value. ``` @@ -36,7 +36,7 @@ it will return that value. ``` (** a b) -Function calculate number a to to the power of b. +Function that calculates number a to to the power of b. ``` ## / @@ -44,29 +44,29 @@ Function calculate number a to to the power of b. (/ n1 n2 ...) (/ n) -Divide number passed as arguments one by one. If single argument -is passed it will calculate (/ 1 n1). +Divides n1 by n2 and subsequent arguments one by one. If single argument +is passed it will calculate (/ 1 n). ``` ## & ``` (& a b) -Function calculate and bit operation. +Function that calculates the bitwise and operation. ``` ## % ``` (% n1 n2) -Function get reminder of it's arguments. +Function returns the remainder of n1/n2 (modulo). ``` ## + ``` (+ . numbers) -Sum all numbers passed as arguments. If single value is passed it will +Sums all numbers passed as arguments. If single value is passed it will return that value. ``` @@ -74,95 +74,97 @@ return that value. ``` (< x1 x2 ...) -Function compare its numerical arguments and check if they are -monotonically decreasing +Function that compares its numerical arguments and checks if they are +monotonically increasing, i.e. x1 < x2 and x2 < x3 and so on. ``` ## << ``` (<< a b) -Function left shit the value a by value b. +Function that left shifts the value a by value b bits. ``` ## <= ``` (<= x1 x2 ...) -Function compare its numerical arguments and check if they are -monotonically nonincreasing +Function that compares its numerical arguments and checks if they are +monotonically nondecreasing, i.e. x1 <= x2 and x2 <= x3 and so on. ``` ## = ``` (== x1 x2 ...) -Function compare its numerical arguments and check if they are equal +Function that compares its numerical arguments and checks if they are +all equal. ``` ## == ``` (== x1 x2 ...) -Function compare its numerical arguments and check if they are equal +Function that compares its numerical arguments and checks if they are +all equal. ``` ## > ``` -(> x1 x2 ...) +(> x1 x2 x3 ...) -Function compare its numerical arguments and check if they are -monotonically increasing +Function that compares its numerical arguments and checks if they are +monotonically decreasing, i.e. x1 > x2 and x2 > x3 and so on. ``` ## >= ``` (>= x1 x2 ...) -Function compare its numerical arguments and check if they are -monotonically nondecreasing +Function that compares its numerical arguments and checks if they are +monotonically nonincreasing, i.e. x1 >= x2 and x2 >= x3 and so on. ``` ## >> ``` (>> a b) -Function right shit the value a by value b. +Function that right shifts the value a by value b bits. ``` ## | ``` (| a b) -Function calculate or bit operation. +Function that calculates the bitwise or operation. ``` ## ~ ``` (~ number) -Function negate the value. +Function that calculates the bitwise inverse (flip all the bits). ``` ## 1- ``` (1- number) -Function substract 1 from the number and return result. +Function that subtracts 1 from the number and return result. ``` ## 1+ ``` (1+ number) -Function add 1 to the number and return result. +Function that adds 1 to the number and return result. ``` ## abs ``` (abs number) -Function create absolute value from number. +Function that returns the absolute value (magnitude) of number. ``` ## acos @@ -174,21 +176,21 @@ Function create absolute value from number. ``` (alist->assign alist . list-of-alists) -Function that work like Object.assign but for LIPS alist. +Function that works like Object.assign but for LIPS alists. ``` ## alist->object ``` (alist->object alist) -Function convert alist pairs to JavaScript object. +Function that converts alist pairs to a JavaScript object. ``` ## always ``` (always constant) -Higher order function returns new function that always return given constant. +Higher-order function that returns a new thunk that always returns the given constant when called. ``` ## angle @@ -202,16 +204,16 @@ Returns angle of the complex number in polar coordinate system. ``` (append item ...) -Function will create new list with eac argument appended to the end. -It will always return new list and not modify it's arguments. +Function that creates a new list with each argument appended end-to-end. +It will always return a new list and not modify its arguments. ``` ## append! ``` (append! arg1 ...) -Destructive version of append, it modify the list in place. It return -new list where each argument is appened to the end. It may modify +Destructive version of append, it can modify the lists in place. It returns +a new list where each argument is appended to the end. It may modify lists added as arguments. ``` @@ -219,14 +221,14 @@ lists added as arguments. ``` (apply fn list) -Function that call function with list of arguments. +Function that calls fn with the list of arguments. ``` ## apropos ``` (apropos name) -Search environment and display names that match the given name. +Search the current environment and display names that match the given name. name can be regex, string or symbol. ``` @@ -234,14 +236,14 @@ name can be regex, string or symbol. ``` (array->list array) -Function convert JavaScript array to LIPS list. +Function that converts a JavaScript array to a LIPS cons list. ``` ## array? ``` (array? expression) -Function check if value is an arrray. +Predicate that tests if value is an array. ``` ## asin @@ -253,21 +255,21 @@ Function check if value is an arrray. ``` (assoc obj alist) -Function return pair from alist that match given key using equal? check. +Returns pair from alist that match given key using equal? check. ``` ## assq ``` (assq obj alist) -Function return pair from alist that match given key using eq? check. +Returns pair from a list that matches given key using eq? check. ``` ## assv ``` (assv obj alist) -Function return pair from alist that match given key using eqv? check. +Returns pair from alist that match given key using eqv? check. ``` ## atan @@ -279,7 +281,7 @@ Function return pair from alist that match given key using eqv? check. ``` (await value) -Function unquote quoted promise so it can be automagicaly evaluated (resolved +Unquotes a quoted promise so it can be automagically evaluated (resolved to its value). ``` @@ -287,35 +289,35 @@ to its value). ``` (binary fn) -Function return new function with arguments limited to two. +Returns a new function with arguments limited to two. ``` ## binary-port? ``` (binary-port? port) -Function test if argument is binary port. +Function that tests if argument is binary port. ``` ## boolean? ``` (boolean? x) -Function return true if value is boolean. +Returns true if value is boolean. ``` ## boolean=? ``` (boolean=? b1 b2 ...) -Function check if all arguments are boolean and if they are the same. +Checks if all arguments are boolean and if they are the same. ``` ## bound? ``` (bound? x [env]) -Function check if variable is defined in given environement or interaction environment +Function that check if the variable is defined in the given environment, or interaction-environment if not specified. ``` @@ -323,8 +325,8 @@ if not specified. ``` (buffer->u8vector bin) -Cross platform function that can be used in both Node and Browser. -It can be used together with %read-file or %read-binary-file and convert +Cross platform function that can be used in both Node and browser. +It can be used together with %read-file or %read-binary-file to convert the result ArrayBuffer or Buffer to u8vector. ``` @@ -332,7 +334,7 @@ the result ArrayBuffer or Buffer to u8vector. ``` (u8vector v1 v2 ...) -Create usigned 8-bit integer vector from give arguments. +Create unsigned 8-bit integer vector (C unsigned char) from give arguments. ``` ## bytevector-append @@ -348,7 +350,7 @@ Create new bytevector u8vector that is created from joining each argument. (bytevector-copy v start) (bytevector-copy v start end) -Function and return new vector from start to end. If no start and end is provided +Returns a new vector from start to end. If no start and end is provided whole vector is copied and returned. ``` @@ -366,238 +368,238 @@ starting at at. ``` (u8vector-length v) -return length of usigned 8-bit integer vector. +return length of unsigned 8-bit integer vector (C unsigned char). ``` ## bytevector-u8-ref ``` (u8vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## bytevector-u8-set! ``` (u8vector-set! vector k) -Function set value of usigned 8-bit integer vector at index k. If index is out of range it throw exception. +Function set value of unsigned 8-bit integer vector (C unsigned char) at index k. If index is out of range it throw exception. ``` ## bytevector? ``` (u8vector? x) -Function return #t of argument is usigned 8-bit integer vector otherwise it return #f. +Returns #t of argument is unsigned 8-bit integer vector (C unsigned char) otherwise it return #f. ``` ## caaaaar ``` (caaaaar arg) -Function calculate (car (car (car (car (car arg))))) +Function that calculates (car (car (car (car (car arg))))) ``` ## caaaadr ``` (caaaadr arg) -Function calculate (car (car (car (car (cdr arg))))) +Function that calculates (car (car (car (car (cdr arg))))) ``` ## caaaar ``` (caaaar arg) -Function calculate (car (car (car (car arg)))) +Function that calculates (car (car (car (car arg)))) ``` ## caaadar ``` (caaadar arg) -Function calculate (car (car (car (cdr (car arg))))) +Function that calculates (car (car (car (cdr (car arg))))) ``` ## caaaddr ``` (caaaddr arg) -Function calculate (car (car (car (cdr (cdr arg))))) +Function that calculates (car (car (car (cdr (cdr arg))))) ``` ## caaadr ``` (caaadr arg) -Function calculate (car (car (car (cdr arg)))) +Function that calculates (car (car (car (cdr arg)))) ``` ## caaar ``` (caaar arg) -Function calculate (car (car (car arg))) +Function that calculates (car (car (car arg))) ``` ## caadaar ``` (caadaar arg) -Function calculate (car (car (cdr (car (car arg))))) +Function that calculates (car (car (cdr (car (car arg))))) ``` ## caadadr ``` (caadadr arg) -Function calculate (car (car (cdr (car (cdr arg))))) +Function that calculates (car (car (cdr (car (cdr arg))))) ``` ## caadar ``` (caadar arg) -Function calculate (car (car (cdr (car arg)))) +Function that calculates (car (car (cdr (car arg)))) ``` ## caaddar ``` (caaddar arg) -Function calculate (car (car (cdr (cdr (car arg))))) +Function that calculates (car (car (cdr (cdr (car arg))))) ``` ## caadddr ``` (caadddr arg) -Function calculate (car (car (cdr (cdr (cdr arg))))) +Function that calculates (car (car (cdr (cdr (cdr arg))))) ``` ## caaddr ``` (caaddr arg) -Function calculate (car (car (cdr (cdr arg)))) +Function that calculates (car (car (cdr (cdr arg)))) ``` ## caadr ``` (caadr arg) -Function calculate (car (car (cdr arg))) +Function that calculates (car (car (cdr arg))) ``` ## caar ``` (caar arg) -Function calculate (car (car arg)) +Function that calculates (car (car arg)) ``` ## cadaaar ``` (cadaaar arg) -Function calculate (car (cdr (car (car (car arg))))) +Function that calculates (car (cdr (car (car (car arg))))) ``` ## cadaadr ``` (cadaadr arg) -Function calculate (car (cdr (car (car (cdr arg))))) +Function that calculates (car (cdr (car (car (cdr arg))))) ``` ## cadaar ``` (cadaar arg) -Function calculate (car (cdr (car (car arg)))) +Function that calculates (car (cdr (car (car arg)))) ``` ## cadadar ``` (cadadar arg) -Function calculate (car (cdr (car (cdr (car arg))))) +Function that calculates (car (cdr (car (cdr (car arg))))) ``` ## cadaddr ``` (cadaddr arg) -Function calculate (car (cdr (car (cdr (cdr arg))))) +Function that calculates (car (cdr (car (cdr (cdr arg))))) ``` ## cadadr ``` (cadadr arg) -Function calculate (car (cdr (car (cdr arg)))) +Function that calculates (car (cdr (car (cdr arg)))) ``` ## cadar ``` (cadar arg) -Function calculate (car (cdr (car arg))) +Function that calculates (car (cdr (car arg))) ``` ## caddaar ``` (caddaar arg) -Function calculate (car (cdr (cdr (car (car arg))))) +Function that calculates (car (cdr (cdr (car (car arg))))) ``` ## caddadr ``` (caddadr arg) -Function calculate (car (cdr (cdr (car (cdr arg))))) +Function that calculates (car (cdr (cdr (car (cdr arg))))) ``` ## caddar ``` (caddar arg) -Function calculate (car (cdr (cdr (car arg)))) +Function that calculates (car (cdr (cdr (car arg)))) ``` ## cadddar ``` (cadddar arg) -Function calculate (car (cdr (cdr (cdr (car arg))))) +Function that calculates (car (cdr (cdr (cdr (car arg))))) ``` ## caddddr ``` (caddddr arg) -Function calculate (car (cdr (cdr (cdr (cdr arg))))) +Function that calculates (car (cdr (cdr (cdr (cdr arg))))) ``` ## cadddr ``` (cadddr arg) -Function calculate (car (cdr (cdr (cdr arg)))) +Function that calculates (car (cdr (cdr (cdr arg)))) ``` ## caddr ``` (caddr arg) -Function calculate (car (cdr (cdr arg))) +Function that calculates (car (cdr (cdr arg))) ``` ## cadr ``` (cadr arg) -Function calculate (car (cdr arg)) +Function that calculates (car (cdr arg)) ``` ## call-with-input-file @@ -629,289 +631,290 @@ Proc is executed with given port and after it returns, the port is closed. ``` (call-with-values producer consumer) -Calls its producer argument with no values and a continuation that, -when passed some values, calls the consumer procedure with those -values as arguments. +Calls the producer procedure with no arguments, then calls the +consumer procedure with the returned value as an argument -- unless +the returned value is a special Values object created by (values), if it is +the values are unpacked and the consumer is called with multiple arguments. ``` ## car ``` (car pair) -Function returns car (head) of the list/pair. +This function returns the car (item 1) of the list. ``` ## cdaaaar ``` (cdaaaar arg) -Function calculate (cdr (car (car (car (car arg))))) +Function that calculates (cdr (car (car (car (car arg))))) ``` ## cdaaadr ``` (cdaaadr arg) -Function calculate (cdr (car (car (car (cdr arg))))) +Function that calculates (cdr (car (car (car (cdr arg))))) ``` ## cdaaar ``` (cdaaar arg) -Function calculate (cdr (car (car (car arg)))) +Function that calculates (cdr (car (car (car arg)))) ``` ## cdaadar ``` (cdaadar arg) -Function calculate (cdr (car (car (cdr (car arg))))) +Function that calculates (cdr (car (car (cdr (car arg))))) ``` ## cdaaddr ``` (cdaaddr arg) -Function calculate (cdr (car (car (cdr (cdr arg))))) +Function that calculates (cdr (car (car (cdr (cdr arg))))) ``` ## cdaadr ``` (cdaadr arg) -Function calculate (cdr (car (car (cdr arg)))) +Function that calculates (cdr (car (car (cdr arg)))) ``` ## cdaar ``` (cdaar arg) -Function calculate (cdr (car (car arg))) +Function that calculates (cdr (car (car arg))) ``` ## cdadaar ``` (cdadaar arg) -Function calculate (cdr (car (cdr (car (car arg))))) +Function that calculates (cdr (car (cdr (car (car arg))))) ``` ## cdadadr ``` (cdadadr arg) -Function calculate (cdr (car (cdr (car (cdr arg))))) +Function that calculates (cdr (car (cdr (car (cdr arg))))) ``` ## cdadar ``` (cdadar arg) -Function calculate (cdr (car (cdr (car arg)))) +Function that calculates (cdr (car (cdr (car arg)))) ``` ## cdaddar ``` (cdaddar arg) -Function calculate (cdr (car (cdr (cdr (car arg))))) +Function that calculates (cdr (car (cdr (cdr (car arg))))) ``` ## cdadddr ``` (cdadddr arg) -Function calculate (cdr (car (cdr (cdr (cdr arg))))) +Function that calculates (cdr (car (cdr (cdr (cdr arg))))) ``` ## cdaddr ``` (cdaddr arg) -Function calculate (cdr (car (cdr (cdr arg)))) +Function that calculates (cdr (car (cdr (cdr arg)))) ``` ## cdadr ``` (cdadr arg) -Function calculate (cdr (car (cdr arg))) +Function that calculates (cdr (car (cdr arg))) ``` ## cdar ``` (cdar arg) -Function calculate (cdr (car arg)) +Function that calculates (cdr (car arg)) ``` ## cddaaar ``` (cddaaar arg) -Function calculate (cdr (cdr (car (car (car arg))))) +Function that calculates (cdr (cdr (car (car (car arg))))) ``` ## cddaadr ``` (cddaadr arg) -Function calculate (cdr (cdr (car (car (cdr arg))))) +Function that calculates (cdr (cdr (car (car (cdr arg))))) ``` ## cddaar ``` (cddaar arg) -Function calculate (cdr (cdr (car (car arg)))) +Function that calculates (cdr (cdr (car (car arg)))) ``` ## cddadar ``` (cddadar arg) -Function calculate (cdr (cdr (car (cdr (car arg))))) +Function that calculates (cdr (cdr (car (cdr (car arg))))) ``` ## cddaddr ``` (cddaddr arg) -Function calculate (cdr (cdr (car (cdr (cdr arg))))) +Function that calculates (cdr (cdr (car (cdr (cdr arg))))) ``` ## cddadr ``` (cddadr arg) -Function calculate (cdr (cdr (car (cdr arg)))) +Function that calculates (cdr (cdr (car (cdr arg)))) ``` ## cddar ``` (cddar arg) -Function calculate (cdr (cdr (car arg))) +Function that calculates (cdr (cdr (car arg))) ``` ## cdddaar ``` (cdddaar arg) -Function calculate (cdr (cdr (cdr (car (car arg))))) +Function that calculates (cdr (cdr (cdr (car (car arg))))) ``` ## cdddadr ``` (cdddadr arg) -Function calculate (cdr (cdr (cdr (car (cdr arg))))) +Function that calculates (cdr (cdr (cdr (car (cdr arg))))) ``` ## cdddar ``` (cdddar arg) -Function calculate (cdr (cdr (cdr (car arg)))) +Function that calculates (cdr (cdr (cdr (car arg)))) ``` ## cddddar ``` (cddddar arg) -Function calculate (cdr (cdr (cdr (cdr (car arg))))) +Function that calculates (cdr (cdr (cdr (cdr (car arg))))) ``` ## cdddddr ``` (cdddddr arg) -Function calculate (cdr (cdr (cdr (cdr (cdr arg))))) +Function that calculates (cdr (cdr (cdr (cdr (cdr arg))))) ``` ## cddddr ``` (cddddr arg) -Function calculate (cdr (cdr (cdr (cdr arg)))) +Function that calculates (cdr (cdr (cdr (cdr arg)))) ``` ## cdddr ``` (cdddr arg) -Function calculate (cdr (cdr (cdr arg))) +Function that calculates (cdr (cdr (cdr arg))) ``` ## cddr ``` (cddr arg) -Function calculate (cdr (cdr arg)) +Function that calculates (cdr (cdr arg)) ``` ## cdr ``` (cdr pair) -Function returns cdr (tail) of the list/pair. +This function returns the cdr (all but first) of the list. ``` ## ceiling ``` (ceiling number) -Function calculate ceiling of a number. +Function that calculates the ceiling of a number. ``` ## char->integer ``` (char->integer chr) -Function return codepoint of Unicode character. +Returns the codepoint of Unicode character. ``` ## char-alphabetic? ``` (char-alphabetic? chr) -Function return true if character is leter of the ASCII alphabet. +Returns true if character is leter of the ASCII alphabet. ``` ## char-ci? ``` (char-ci=? ``` (char-ci? ``` (char=? ``` (char (+ 2 (* 3 10)) --> 32 ``` ## concat ``` (concat . strings) -Function create new string by joining its arguments +Function that creates a new string by joining its arguments. ``` ## cons ``` (cons left right) -Function return new Pair out of two arguments. +This function returns a new list with the first appended +before the second. If the second is not a list cons will +return a dotted pair. ``` ## cos ``` -# +(cos n) + +Function that calculates cosine of a number. ``` ## current-directory ``` (current-directory) -Return corrent working directory, default it's path from where +Returns the current working directory, default is the path from where the script was executed. ``` @@ -1097,37 +1110,55 @@ the script was executed. ``` (current-environment) -Function return current environement. +Function that returns the current environment (they're first-class objects!) ``` ## current-error-port ``` (current-output-port) -Function return default stdout port. +Returns the default stderr port. ``` ## current-input-port ``` -current-input-port) +(current-input-port) + +Returns the default stdin port. +``` -Function return default stdin port. +## current-jiffy +``` +(current-jiffy) + +Return current jiffy. In LIPS is jiffy since start of the process. +You can divide this value by (jiffies-per-second) to get seconds since +start of the process. And you can add %%start-jiffy to get jiffy since +January 1, 1970. ``` ## current-output-port ``` (current-output-port) -Function return default stdout port. +Returns the default stdout port. +``` + +## current-second +``` +(current-second) + +Functionn return exact integer of the seconds since January 1, 1970 ``` ## curry ``` (curry fn . args) -Higher order function that create curried version of the function. -The result function will have parially applied arguments and it -will keep returning functions until all arguments are added +Higher-order function that creates a curried version of the function. +The result function will have partially applied arguments and it +will keep returning one-argument functions until all arguments are provided, +then it calls the original function with the accumulated arguments. e.g.: (define (add a b c d) (+ a b c d)) @@ -1140,28 +1171,30 @@ e.g.: ``` (debugger) -Function stop JavaScript code in debugger. +Function that triggers the JavaScript debugger (e.g. the browser devtools) +using the "debugger;" statement. If a debugger is not running this +function does nothing. ``` ## defmacro? ``` (defmacro? expression) -Function check if object is macro and it's expandable. +Checks if object is a macro and it's expandable. ``` ## degree->radians ``` (degree->radians x) -Convert degree to radians. +Convert degrees to radians. ``` ## delete-file ``` (delete-file filename) -Function delete the file of given name. +Deletes the file of given name. ``` ## denominator @@ -1183,36 +1216,37 @@ or #f otherwise. ``` (dir obj) -Function return all props on the object including those in prototype chain. +Returns all props on the object including those in prototype chain. ``` ## display ``` -(display arg [port]) +(display string [port]) -Function send string to standard output or provied port. +This function outputs the string to the standard output or +the port if given. No newline. ``` ## display-error ``` (display-error . args) -Display error message. +Display an error message on stderr. ``` ## dynamic-wind ``` (dynamic-wind before thunk after) -Function accept 3 procedures/lambdas and execute thunk with before and always -after even if error accur +Accepts 3 procedures/lambdas and executes before, then thunk, and +always after even if an error occurs in thunk. ``` ## empty? ``` (empty? object) -Function return true if value is undfined empty list. +Function that returns #t if value is nil (an empty list) or undefined. ``` ## env @@ -1220,22 +1254,22 @@ Function return true if value is undfined empty list. (env) (env obj) -Function return list of values (functions, macros and variables) -inside environment and it's parents. +Function that returns a list of names (functions, macros and variables) +that are bound in the current environment or one of its parents. ``` ## environment-bound? ``` (environment-bound? env symbol) -Function check if symbol is bound variable similar to bound?. +Checks if symbol is a bound variable similar to bound?. ``` ## environment? ``` (environment? obj) -Function check if object is LIPS environment. +Checks if object is a LIPS environment. ``` ## eof-object @@ -1249,7 +1283,7 @@ Procedure returns eof object that indicate end of the port ``` (eof-object? arg) -Function check if value is eof object, returned from input string +Checks if value is eof object, returned from input string port when there are no more data to read. ``` @@ -1257,23 +1291,23 @@ port when there are no more data to read. ``` (eq? a b) -Function compare two values if they are identical. +Function that compares two values if they are identical. ``` ## equal? ``` (equal? a b) -Function check if values are equal if both are pair or array -it compares the their elements recursivly. +The function checks if values are equal. If both are a pair or an array +it compares their elements recursively. ``` ## eqv? ``` (eqv? a b) -Function compare the values. It return true if they are the same, they -need to have same type +Function that compares the values. It returns true if they are the same, they +need to have the same type. ``` ## error @@ -1302,16 +1336,16 @@ Returns the message encapsulated by error-object. ``` (error-object? obj) -Function check if object is of Error object throwed by error function. +Checks if object is of Error object thrown by error function. ``` ## escape-regex ``` (escape-regex string) -Function return new string where all special operators used in regex, -are escaped with slash so they can be used in RegExp constructor -to match literal string +Function that returns a new string where all special operators used in regex, +are escaped with backslashes so they can be used in the RegExp constructor +to match a literal string. ``` ## eval @@ -1319,29 +1353,31 @@ to match literal string (eval expr) (eval expr environment) -Function evalute LIPS Scheme code. +Function that evaluates LIPS Scheme code. If the second argument is provided +it will be the environment that the code is evaluated in. ``` ## even? ``` (even? number) -Function check if number is even. +Checks if number is even. ``` ## every ``` (every fn list) -Function call function fn on each item of the list, if every value is true +Function that calls fn on each item of the list, if every value returns true it will return true otherwise it return false. +Analogous to Python all(map(fn, list)). ``` ## exact ``` (inexact->exact number) -Funcion convert real number to exact ratioanl number. +Function that converts real number to exact rational number. ``` ## exact->inexact @@ -1355,7 +1391,7 @@ Convert exact number to inexact. ``` (exact-integer? n) -Function returns #t if z is both exact and an integer; otherwise +Returns #t if z is both exact and an integer; otherwise returns #f. ``` @@ -1366,21 +1402,23 @@ returns #f. ## exp ``` -# +(exp n) + +Function that calculates e raised to the power of n. ``` ## expt ``` (** a b) -Function calculate number a to to the power of b. +Function that calculates number a to to the power of b. ``` ## f32vector ``` (f32vector v1 v2 ...) -Create 32-bit IEEE floating point number vector from give arguments. +Create 32-bit IEEE-754 floating point number vector (C float) from give arguments. ``` ## f32vector->list @@ -1392,35 +1430,35 @@ Create 32-bit IEEE floating point number vector from give arguments. ``` (f32vector-length v) -return length of 32-bit IEEE floating point number vector. +return length of 32-bit IEEE-754 floating point number vector (C float). ``` ## f32vector-ref ``` (f32vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## f32vector-set! ``` (f32vector-set! vector k) -Function set value of 32-bit IEEE floating point number vector at index k. If index is out of range it throw exception. +Function set value of 32-bit IEEE-754 floating point number vector (C float) at index k. If index is out of range it throw exception. ``` ## f32vector? ``` (f32vector? x) -Function return #t of argument is 32-bit IEEE floating point number vector otherwise it return #f. +Returns #t of argument is 32-bit IEEE-754 floating point number vector (C float) otherwise it return #f. ``` ## f64vector ``` (f64vector v1 v2 ...) -Create 64-bit IEEE floating point number vector from give arguments. +Create 64-bit IEEE-754 floating point number vector (C double) from give arguments. ``` ## f64vector->list @@ -1432,28 +1470,28 @@ Create 64-bit IEEE floating point number vector from give arguments. ``` (f64vector-length v) -return length of 64-bit IEEE floating point number vector. +return length of 64-bit IEEE-754 floating point number vector (C double). ``` ## f64vector-ref ``` (f64vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## f64vector-set! ``` (f64vector-set! vector k) -Function set value of 64-bit IEEE floating point number vector at index k. If index is out of range it throw exception. +Function set value of 64-bit IEEE-754 floating point number vector (C double) at index k. If index is out of range it throw exception. ``` ## f64vector? ``` (f64vector? x) -Function return #t of argument is 64-bit IEEE floating point number vector otherwise it return #f. +Returns #t of argument is 64-bit IEEE-754 floating point number vector (C double) otherwise it return #f. ``` ## features @@ -1471,9 +1509,9 @@ Function return #t of argument is 64-bit IEEE floating point number vector other (filter fn list) (filter regex list) -Higher order function that call `fn` for each element of the list -and return list for only those elements for which funtion return -true value. If called with regex it will create matcher function. +Higher-order function that calls `fn` for each element of the list +and return a new list for only those elements for which fn returns +a truthy value. If called with a regex it will create a matcher function. ``` ## find @@ -1481,29 +1519,29 @@ true value. If called with regex it will create matcher function. (find fn list) (find regex list) -Higher order Function find first value for which function return true. -If called with regex it will create matcher function. +Higher-order function that finds the first value for which fn return true. +If called with a regex it will create a matcher function. ``` ## finite? ``` (finite? x) -Function check if value is finite. +Checks if value is finite. ``` ## flatten ``` (flatten list) -Return shallow list from tree structure (pairs). +Returns a shallow list from tree structure (pairs). ``` ## flip ``` (flip fn) -Higher order function that return new function where first two arguments are swapped. +Higher-order function that returns a new function where the first two arguments are swapped. Example: @@ -1516,7 +1554,7 @@ Example: ``` (floor number) -Function calculate floor of a number. +Function that calculates the floor of a number. ``` ## floor-quotient @@ -1534,11 +1572,19 @@ Function calculate floor of a number. # ``` +## flush-output +``` +(flush-output [port]) + +If output-port is buffered, this causes the contents of its buffer to be written to +the output device. Otherwise it has no effect. Returns an unspecified value. +``` + ## flush-output-port ``` (flush-output-port port) -Functio do nothing, flush is not needed in LIPS in both NodeJS and Browser. +Function do nothing, flush is not needed in LIPS in both NodeJS and Browser. The function is added, so it don't throw exception when using R7RS code. ``` @@ -1546,99 +1592,101 @@ The function is added, so it don't throw exception when using R7RS code. ``` (fold fn init . lists) -Function fold is reverse of the reduce. it call function `fn` -on each elements of the list and return single value. -e.g. it call (fn a1 b1 (fn a2 b2 (fn a3 b3 '()))) -for: (fold fn '() alist blist) +Function fold is left-to-right reversal of reduce. It call `fn` +on each pair of elements of the list and returns a single value. +e.g. it computes (fn 'a 'x (fn 'b 'y (fn 'c 'z 'foo))) +for: (fold fn 'foo '(a b c) '(x y z)) ``` ## fold-left ``` (fold fn init . lists) -Function fold is reverse of the reduce. it call function `fn` -on each elements of the list and return single value. -e.g. it call (fn a1 b1 (fn a2 b2 (fn a3 b3 '()))) -for: (fold fn '() alist blist) +Function fold is left-to-right reversal of reduce. It call `fn` +on each pair of elements of the list and returns a single value. +e.g. it computes (fn 'a 'x (fn 'b 'y (fn 'c 'z 'foo))) +for: (fold fn 'foo '(a b c) '(x y z)) ``` ## fold-right ``` (reduce fn init list . lists) -Higher order function take each element of the list and call -the function with result of previous call or init and next element -on the list until each element is processed and return single value +Higher-order function that takes each element of the list and calls +the fn with result of previous call or init and the next element +of the list until each element is processed, and returns a single value as result of last call to `fn` function. -e.g. it call (fn a3 b3 (fn a2 b2 (fn a1 b1 init))) -for (reduce fn init alist blist) +e.g. it computes (fn 'c 'z (fn 'b 'y (fn 'a 'x 'foo))) +for: (reduce fn 'foo '(a b c) '(x y z)) ``` ## for-each ``` (for-each fn . lists) -Higher order function that call function `fn` by for each -value of the argument. If you provide more then one list as argument +Higher-order function that calls function `fn` on each +value of the argument. If you provide more than one list it will take each value from each list and call `fn` function -with that many argument as number of list arguments. +with that many arguments as number of list arguments. ``` ## force ``` (force promise) -Function force the promise and evaluate delayed expression. +Function that forces the promise and evaluates the delayed expression. ``` ## format ``` (format string n1 n2 ...) -Function accepts string template and replacing any escape sequences -by arguments: +This function accepts a string template and replaces any +escape sequences in its inputs: -* ~a value as if printed with display -* ~s value as if printed with write +* ~a value as if printed with `display` +* ~s value as if printed with `write` * ~% newline character -* ~~ literal tilde '~' is inserted +* ~~ literal tilde '~' -if there missing arguments or other escape character it throw exception. +If there are missing inputs or other escape characters it +will error. ``` ## function? ``` (function? expression) -Function check if value is a function. +Predicate that tests if value is a callable function. ``` ## gcd ``` (gcd n1 n2 ...) -Function return the greatest common divisor of their arguments. +Function that returns the greatest common divisor of the arguments. ``` ## gensym ``` (gensym) -Function generate unique symbol, to use with macros as meta name. +Generates a unique symbol that is not bound anywhere, +to use with macros as meta name. ``` ## gensym-interal ``` (gensym-interal symbol) -Parser extension that create new quoted named gensym. +Parser extension that creates a new quoted named gensym. ``` ## gensym? ``` (gensym? value) -Function return #t if value is symbol and it's gensym. It returns #f otherwise. +Returns #t if value is a symbol created by gensym. It returns #f otherwise. ``` ## get @@ -1646,21 +1694,37 @@ Function return #t if value is symbol and it's gensym. It returns #f otherwise. (. obj . args) (get obj . args) -Function use object as base and keep using arguments to get the +This function uses an object as a base and keeps using arguments to get the property of JavaScript object. Arguments need to be a strings. -e.g. `(. console "log")` if you use any function inside LIPS is -will be weakly bind (can be rebind), so you can call this log function +e.g. `(. console "log")` if you use any function inside LIPS it +will be weakly bound (can be rebound), so you can call this log function without problem unlike in JavaScript when you use `var log = console.log`. -`get` is an alias because . don't work in every place, e.g. you can't -pass it as argument. +`get` is an alias because . doesn't work everywhere, e.g. you can't +pass it as an argument. +``` + +## get-environment-variable +``` +(get-environment-variable name) + +Returns given environment variable. This function throws exception +when called in browser. +``` + +## get-environment-variables +``` +(get-environment-variables) + +Returns all process environment variables as an alist. This function throws exception +when called in browser. ``` ## get-output-bytevector ``` (get-output-string port) -Function get full string from string port. If nothing was wrote +Gets full string from string port. If nothing was wrote to given port it will return empty string. ``` @@ -1668,22 +1732,23 @@ to given port it will return empty string. ``` (get-output-string port) -Function get full string from string port. If nothing was wrote +Gets full string from string port. If nothing was wrote to given port it will return empty string. ``` -## get-script +## get-resource ``` -(get-script url) +(get-resource url) -Load JavaScript file in browser by adding script tag to head of the current document. +Load JavaScript or CSS file in browser by adding script/link tag to head of the current document. +When called from Node it allow it allows to load JavaScript files only. ``` ## http-get ``` (http-get url) -Node.js Function that send HTTP Request and return string or +Node.js function that sends a HTTP Request and returns a string or binary Buffer object. ``` @@ -1691,7 +1756,7 @@ binary Buffer object. ``` (identity n) -No op function. it just returns its argument. +No-op function. It just returns its argument. ``` ## imag-part @@ -1705,14 +1770,15 @@ Return imaginary part of the complex number n. ``` (in key value) -Function use is in operator to check if value is in object. +Function that uses the Javascript "in" operator to check if key is +a valid property in the value. ``` ## indexed-db? ``` (indexed-db?) -Function test if indexedDB is available. +Function that tests if IndexedDB is available. ``` ## inexact @@ -1726,7 +1792,7 @@ Convert exact number to inexact. ``` (inexact->exact number) -Funcion convert real number to exact ratioanl number. +Function that converts real number to exact rational number. ``` ## inexact? @@ -1738,49 +1804,49 @@ Funcion convert real number to exact ratioanl number. ``` (infinite? x) -Function check if value is infinite. +Checks if value is infinite. ``` ## input-port-open? ``` (input-port-open? port) -Function check if argument is input-port and if you can read from it. +Checks if argument is input-port and if you can read from it. ``` ## input-port? ``` (input-port? arg) -Function return true if argument is input port. +Returns true if argument is input port. ``` ## instanceof ``` (instanceof type obj) -Function check of object is instance of object. +Predicate that tests if the obj is an instance of type. ``` ## integer->char ``` (integer->char chr) -Function convert number argument to chararacter. +Function that converts number argument to character. ``` ## integer? ``` (integer? x) -Function check if argument x is integer. +Checks if the argument x is integer. ``` ## interaction-environment ``` (interaction-environment) -Function return interaction environement equal to lips.env can be overwritten, +Returns the interaction environment equal to lips.env. This can be overwritten when creating new interpreter with lips.Interpreter. ``` @@ -1788,57 +1854,63 @@ when creating new interpreter with lips.Interpreter. ``` (iterator? x) - Function check if value is JavaScript iterator object + Checks if value is JavaScript iterator object. +``` + +## jiffies-per-second +``` +# ``` ## join ``` (join separator list) -Function return string by joining elements of the list +Function that returns a string by joining elements of the list using separator. ``` ## key->string ``` (key->string symbol) -If symbol is key it convert that to string - remove colon. +If symbol is a keyword it converts that to string and removes the colon. ``` ## key? ``` (key? symbol) -Function check if symbol is key symbol, have colon as first character. +Checks if symbol is a keyword (has a colon as first character). ``` ## lcm ``` (lcm n1 n2 ...) -Function return the least common multiple of their arguments. +Function that returns the least common multiple of the arguments. ``` ## length ``` (length expression) -Function return length of the object, the object can be list -or any object that have length property. +Function that returns the length of the object. The object can be a LIPS +list or any object that has a "length" property. Returns undefined if the +length could not be found. ``` ## list ``` (list . args) -Function create new list out of its arguments. +Function that creates a new list out of its arguments. ``` ## list->array ``` (list->array list) -Function convert LIPS list into JavaScript array. +Function that converts a LIPS list into a JavaScript array. ``` ## list->f32vector @@ -1870,7 +1942,7 @@ Function convert LIPS list into JavaScript array. ``` (list->string _list) -Function return string from list of characters. +Returns a string from a list of characters. ``` ## list->u16vector @@ -1892,7 +1964,7 @@ Function return string from list of characters. ``` (list->array list) -Function convert LIPS list into JavaScript array. +Function that converts a LIPS list into a JavaScript array. ``` ## list-copy @@ -1907,14 +1979,14 @@ of the list are not copied, they are passed as is. ``` (list-match? predicate list) -Function check if consecutive elements of the list match the predicate function. +Checks if consecutive elements of the list match the predicate function. ``` ## list-ref ``` (list-ref list n) -Returns n element of a list. +Returns n-th element of a list. ``` ## list-tail @@ -1928,8 +2000,8 @@ Returns the sublist of list obtained by omitting the first k elements. ``` (list? obj) -Function test if value is proper linked list structure. -The car of each pair can be any value. It return false on cycles." +Predicate that tests if value is a proper linked list structure. +The car of each pair can be any value. It returns false on cyclic lists." ``` ## load @@ -1937,8 +2009,8 @@ The car of each pair can be any value. It return false on cycles." (load filename) (load filename environment) -Function fetch the file and evaluate its content as LIPS code, -If second argument is provided and it's environment the evaluation +Fetches the file (from disk or network) and evaluates its content as LIPS code. +If the second argument is provided and it's an environment the evaluation will happen in that environment. ``` @@ -1946,7 +2018,7 @@ will happen in that environment. ``` (log z) -Funcntion calculates natural logarithm of z. Where argument can be +Function that calculates natural logarithm of z where the argument can be any number (including complex negative and rational). If the value is 0 it return NaN. ``` @@ -1955,7 +2027,7 @@ If the value is 0 it return NaN. ``` (macro? expression) -Function check if value is a macro. +Predicate that tests if value is a macro. ``` ## magnitude @@ -1969,21 +2041,21 @@ Returns magnitude of the complex number in polar coordinate system. ``` (make-u8vector k fill) -Allocate new usigned 8-bit integer vector of length k, with optional initial values. +Allocate new unsigned 8-bit integer vector (C unsigned char) of length k, with optional initial values. ``` ## make-f32vector ``` (make-f32vector k fill) -Allocate new 32-bit IEEE floating point number vector of length k, with optional initial values. +Allocate new 32-bit IEEE-754 floating point number vector (C float) of length k, with optional initial values. ``` ## make-f64vector ``` (make-f64vector k fill) -Allocate new 64-bit IEEE floating point number vector of length k, with optional initial values. +Allocate new 64-bit IEEE-754 floating point number vector (C double) of length k, with optional initial values. ``` ## make-list @@ -2002,42 +2074,42 @@ Create new complex number from polar parameters. ``` (make-promise fn) -Function create promise from a function. +Function that creates a promise from a function. ``` ## make-rectangular ``` (make-rectangular im re) -Create complex number from imaginary and real part. +Creates a complex number from imaginary and real part (a+bi form). ``` ## make-s16vector ``` (make-s16vector k fill) -Allocate new signed 16-bit integer vector of length k, with optional initial values. +Allocate new signed 16-bit integer vector (C short) of length k, with optional initial values. ``` ## make-s32vector ``` (make-s32vector k fill) -Allocate new signed 32-bit integer vector of length k, with optional initial values. +Allocate new signed 32-bit integer vector (C unsigned int) of length k, with optional initial values. ``` ## make-s8vector ``` (make-s8vector k fill) -Allocate new signed 8-bit integer vector of length k, with optional initial values. +Allocate new signed 8-bit integer vector (C signed char) of length k, with optional initial values. ``` ## make-string ``` (make-string k [char]) -Function return new string with k elements, if char is provied +Returns new string with k elements. If char is provided it's filled with that character. ``` @@ -2045,35 +2117,35 @@ it's filled with that character. ``` (make-tags expression) -Function that return list structure of code with better syntax then raw LIPS +Returns a list structure of code with better syntax then raw LIPS ``` ## make-u16vector ``` (make-u16vector k fill) -Allocate new usigned 16-bit integer vector of length k, with optional initial values. +Allocate new unsigned 16-bit integer vector (C unsigned short) of length k, with optional initial values. ``` ## make-u32vector ``` (make-u32vector k fill) -Allocate new usigned 32-bit integer vector of length k, with optional initial values. +Allocate new unsigned 32-bit integer vector (C int) of length k, with optional initial values. ``` ## make-u8vector ``` (make-u8vector k fill) -Allocate new usigned 8-bit integer vector of length k, with optional initial values. +Allocate new unsigned 8-bit integer vector (C unsigned char) of length k, with optional initial values. ``` ## make-vector ``` (make-vector n [fill]) -Create new vector with n empty elements. If fill is specified it will set +Creates a new vector with n empty elements. If fill is specified it will set all elements of the vector to that value. ``` @@ -2081,103 +2153,104 @@ all elements of the vector to that value. ``` (map fn . lists) -Higher order function that call function `fn` by for each -value of the argument. If you provide more then one list as argument +Higher-order function that calls function `fn` with each +value of the list. If you provide more then one list as argument it will take each value from each list and call `fn` function with that many argument as number of list arguments. The return -values of the function call is acumulated in result list and -returned by the call to map. +values of the fn calls are accumulated in a result list and +returned by map. ``` ## match ``` (match pattern string) -function return match object from JavaScript as list or #f if not match. +Function that returns a match object from JavaScript as a list or #f if +no match. ``` ## max ``` (max n1 n2 ...) -Return maximum of it's arguments. +Returns the maximum of its arguments. ``` ## member ``` (member obj list) -Function return first object in the list that match using equal? function. +Returns first object in the list that match using equal? function. ``` ## memq ``` (memq obj list) -Function return first object in the list that match using eq? function. +Returns first object in the list that match using eq? function. ``` ## memv ``` (memv obj list) -Function return first object in the list that match using eqv? function. +Returns first object in the list that match using eqv? function. ``` ## min ``` (min n1 n2 ...) -Return minimum of it's arguments. +Returns the minimum of its arguments. ``` ## modulo ``` (modulo a b) -Function return modulo operation on it's argumennts. +Returns modulo operation on its argumennts. ``` ## n-ary ``` (n-ary n fn) -Return new function that limit number of arguments to n. +Returns a new function that limits the number of arguments to n. ``` ## nan? ``` (nan? x) -Function check if argument x is Not a Number (NaN) value. +Checks if argument x is Not a Number (NaN) value. ``` ## native-symbol? ``` (native-symbol? object) -Function check if value is JavaScript symbol. +Checks if value is JavaScript Symbol. ``` ## native.number ``` (native.number obj) -If argument is number it will convert to native number. +If argument is a number it will convert it to a native number. ``` ## negative? ``` (negative? x) -Function check if number is smaller then 0 +Checks if the number is smaller then 0 ``` ## new ``` (new obj . args) -Function create new JavaScript instance of an object. +Function that creates new JavaScript instance of an object. ``` ## new-library @@ -2198,43 +2271,44 @@ Write newline character to standard output or given port ``` (not x) -Function return true if value is false and false otherwise. +Returns true if value is false and false otherwise. ``` ## nth ``` (nth index obj) -Function return nth element of the list or array. If used with different -value it will throw exception +Function that returns the nth element of the list or array. +If used with a non-indexable value it will error. ``` ## null-environment ``` (null-environment) -Function return new base environment with std lib. +Returns a clean environment with only the standard library. ``` ## null? ``` (null? expression) -Function check if value is nulish. +Predicate that tests if value is null-ish (i.e. undefined, nil, or +Javascript null). ``` ## number->string ``` (number->string x [radix]) -Function convert number to string with optional radix (number base). +Function that converts number to string with optional radix (number base). ``` ## number? ``` (number? expression) -Function check if value is a number or NaN value. +Predicate that tests if value is a number or NaN value. ``` ## numbers? @@ -2246,47 +2320,54 @@ Function check if value is a number or NaN value. ``` (numerator n) -Return numberator of rational or same number if n is not rational. +Return numerator of rational or same number if n is not rational. ``` -## object-expander +## object->alist +``` +(object->alist object) + +Function that converts a JavaScript object to Alist ``` -(object-expander reaonly '(:foo (:bar 10) (:baz (1 2 3)))) -(object-expander reaonly '(:foo :bar)) +## object-expander +``` +(object-expander readonly '(:foo (:bar 10) (:baz (1 2 3)))) +(object-expander readonly '(:foo :bar)) -Recursive function helper for defining LIPS code for create objects -using key like syntax. if no values are used it will create JavaScript -shorthand objects where keys are used for keys and values +Recursive function helper for defining LIPS code to create objects +using key like syntax. If no values are used it will create a JavaScript +shorthand objects where keys are used for keys and the values. ``` ## object? ``` (object? expression) -Function check if value is an plain object. +Predicate that tests if value is an plain object (not another LIPS type). ``` ## odd? ``` (odd? number) -Function check if number os odd. +Checks if number is odd. ``` ## once ``` (once fn) -Higher order function that return new function, that is guarantee -to be called only once. +Higher-order function that returns a new function, that only calls the original +on the first invocation, and immediately returns the first call's result again +on subsequent invocations. ``` ## open-binary-input-file ``` (open-binary-input-file filename) -Function return new Input Binary Port with given filename. In Browser +Returns new Input Binary Port with given filename. In Browser user need to provide global fs variable that is instance of FS interface. ``` @@ -2294,7 +2375,7 @@ user need to provide global fs variable that is instance of FS interface. ``` (open-binary-output-file filename) -Function open file and return port that can be used for writing. If file +Opens file and return port that can be used for writing. If file exists it will throw an Error. ``` @@ -2309,7 +2390,7 @@ Create new input binary port with given bytevector ``` (open-input-file filename) -Function return new Input Port with given filename. In Browser user need to +Returns new Input Port with given filename. In Browser user need to provide global fs variable that is instance of FS interface. ``` @@ -2317,7 +2398,7 @@ provide global fs variable that is instance of FS interface. ``` (open-input-string string) -Function create new string port as input that can be used to +Creates new string port as input that can be used to read S-exressions from this port using `read` function. ``` @@ -2334,7 +2415,7 @@ After done with the data the output buffer can be obtained by calling ``` (open-output-file filename) -Function open file and return port that can be used for writing. If file +Function that opens file and return port that can be used for writing. If file exists it will throw an Error. ``` @@ -2342,7 +2423,7 @@ exists it will throw an Error. ``` (open-output-string) -Function create new output port that can used to write string into +Creates new output port that can used to write string into and after finish get the whole string using `get-output-string`. ``` @@ -2350,52 +2431,53 @@ and after finish get the whole string using `get-output-string`. ``` (output-port-open? port) -Function check if argument is output-port and if you can write to it. +Checks if argument is output-port and if you can write to it. ``` ## output-port? ``` (output-port? arg) -Function return true if argument is output port. +Returns true if argument is output port. ``` ## pair-map ``` (pair-map fn list) -Function call fn argument for pairs in a list and return combined list with -values returned from function fn. It work like the map but take two items from list +Function that calls fn argument for pairs in a list and returns a combined list with +values returned from function fn. It works likes map but take two items from the list each time. ``` ## pair? ``` (pair? expression) -Function check if value is a pair or list structure. +Predicate that tests if value is a pair or list structure. ``` ## parent.frame ``` (parent.frame) -Return parent environment if called from inside function. -If no parent frame found it return nil. +Returns the parent environment if called from inside a function. +If no parent frame can be found it returns nil. ``` ## parent.frames ``` (parent.frames) -Funcion return list of environments from parent frames (lambda function calls) +Returns the list of environments from parent frames (lambda function calls) ``` ## peek-char ``` (peek-char port) -Function get character from string port or EOF object if no more -data in string port. +This function reads and returns a character from the string +port, or, if there is no more data in the string port, it +returns an EOF. ``` ## peek-u8 @@ -2411,86 +2493,88 @@ it return eof object. ``` (pipe . fns) -Higher order function and create new function that apply all functions -From left to right and return it's value. Reverse of compose. +Higher-order function that creates a new function that applies all functions +from left to right and returns the last value. Reverse of compose. e.g.: -((pipe (curry + 2) (curry * 3)) 3) -15 +((pipe (curry + 2) (curry * 3)) 10) --> (* 3 (+ 2 10)) --> 36 ``` ## plain-object? ``` (plain-object? x) -Function check if value is plain JavaScript object. Created using object macro. +Checks if value is a plain JavaScript object created using the object macro. ``` ## pluck ``` -(pluck . string) +(pluck . strings) -If called with single string it will return function that will return -key from object. If called with more then one argument function will -return new object by taking all properties from given object. +If called with a single string it will return a function that when +called with an object will return that key from the object. +If called with more then one string the returned function will +create a new object by copying all properties from the given object. ``` ## port? ``` (port? x) -Function return true of argumet is nput or output port port object. +Returns true if the argument is an input or output port object. ``` ## positive? ``` (positive? x) -Function check if number is larger then 0 +Checks if the number is larger then 0 ``` ## pprint ``` (pprint expression) -Pretty print list expression, if called with non-pair it just call -print function with passed argument. +This function will pretty print its input to stdout. If it is called +with a non-list, it will just call the print function on its +input. ``` ## pretty-format ``` (pretty-format pair) -Function return pretty printed string from pair expression. +Returns a pretty printed string from pair expression. ``` ## print ``` (print . args) -Function convert each argument to string and print the result to -standard output (by default it's console but it can be defined -it user code), the function call newline after printing each arg. +This function converts each input into a string and prints +the result to the standard output (by default it's the +console but it can be defined in user code). This function +calls `(newline)` after printing each input. ``` ## procedure? ``` (function? expression) -Function check if value is a function. +Predicate that tests if value is a callable function. ``` ## promise? ``` (promise? obj) -Function check if value is a promise created with delay or make-promise. +Checks if the value is a promise created with delay or make-promise. ``` ## promisify ``` (promisify fn) -Simple function for adding promises to NodeJS callback based function. +Simple function for adding promises to NodeJS two-callback based functions. Function tested only with fs module. ``` @@ -2498,21 +2582,22 @@ Function tested only with fs module. ``` (prototype? obj) -Function check if value is JavaScript Object prototype. +Predicate that tests if value is a valid JavaScript prototype, +i.e. calling (new) with it will not throw ' is not a constructor'. ``` ## qsort ``` (qsort list predicate) -Sort the list using quick sort alorithm according to predicate. +Sorts the list using the quick sort algorithm according to predicate. ``` ## quoted-symbol? ``` (quoted-symbol? code) -Helper function that test if value is quoted symbol. To be used in macros +Helper function that tests if value is a quoted symbol. To be used in macros that pass literal code that is transformed by parser. usage: @@ -2528,7 +2613,7 @@ usage: ``` (quotient a b) -Return quotient from divition as integer. +Return quotient from division as integer. ``` ## quotient&remainder @@ -2540,14 +2625,14 @@ Return quotient from divition as integer. ``` (radians->degree x) -Convert radians to degree. +Convert radians to degrees. ``` ## raise ``` (raise obj) -Throws new exception with given object. +Throws the object verbatim (no wrapping an a new Error). ``` ## random @@ -2555,28 +2640,32 @@ Throws new exception with given object. (random) (random seed) -Function generate new random real number using Knuth algorithm. +Function that generates new random real number using Knuth algorithm. ``` ## range ``` -(range n) +(range stop) +(range start stop) +(range start stop step) -Function return list of n numbers from 0 to n - 1 +Returns a list of numbers from start to stop with optional step. +If start is not defined it starts from 0. If start is larger than stop +the step needs to be negative otherwise it will hang in an infinite loop. ``` ## rational? ``` (rational? x) -Function check if value is rational. +Checks if the value is rational. ``` ## rationalize ``` (rationalize number tolerance) -Function returns simplest rational number differing from number by no more +Returns simplest rational number approximation differing from number by no more than the tolerance. ``` @@ -2584,12 +2673,13 @@ than the tolerance. ``` (read [string]) -Function if used with string will parse the string and return -list structure of LIPS code. If called without an argument it -will read string from standard input (using browser prompt or -user defined way) and call itself with that string (parse is) -function can be used together with eval to evaluate code from -string +This function, if used with a string, will parse it and +return the LIPS code, if there is any. If called with a +port, it will parse the next item from the port. If called +without an input, it will read a string from standard input +(using the browser's prompt or a user defined input method) +and calls itself with that string. This function can be used +together with `eval` to evaluate code from a string. ``` ## read-bytevector @@ -2609,7 +2699,7 @@ return the only bytes that are available (read-bytevector! bytevector port start) (read-bytevector! bytevector port start end) -Function read next bytes from binary input port and write them into byte vector. +Reads next bytes from binary input port and write them into byte vector. if not start is specified it start to write into 0 position of the vector until the end or end the vector if no end is specified. ``` @@ -2618,14 +2708,16 @@ the end or end the vector if no end is specified. ``` (read-char port) -Function read next character from input port. +This function reads and returns the next character from the +input port. ``` ## read-line ``` (read-char port) -Function read next character from input port. +This function reads and returns the next line from the input +port. ``` ## read-string @@ -2660,76 +2752,79 @@ Return real part of the complex number n. ``` (real? x) -Function check if argument x is real. +Checks if the argument x is real. ``` ## reduce ``` (reduce fn init list . lists) -Higher order function take each element of the list and call -the function with result of previous call or init and next element -on the list until each element is processed and return single value +Higher-order function that takes each element of the list and calls +the fn with result of previous call or init and the next element +of the list until each element is processed, and returns a single value as result of last call to `fn` function. -e.g. it call (fn a3 b3 (fn a2 b2 (fn a1 b1 init))) -for (reduce fn init alist blist) +e.g. it computes (fn 'c 'z (fn 'b 'y (fn 'a 'x 'foo))) +for: (reduce fn 'foo '(a b c) '(x y z)) ``` ## regex? ``` (regex? x) -Function return true of value is regular expression, it return false otherwise. +Returns true if value is a regular expression, or false otherwise. ``` ## remainder ``` (% n1 n2) -Function get reminder of it's arguments. +Function returns the remainder of n1/n2 (modulo). ``` ## remainder__ ``` (modulo a b) -Function return reminder from division operation. +Returns remainder from division operation. ``` ## replace ``` (replace pattern replacement string) -Function change pattern to replacement inside string. Pattern can be string -or regex and replacement can be function or string. +Function that changes pattern to replacement inside string. Pattern can be a +string or regex and replacement can be function or string. See Javascript +String.replace(). ``` ## repr ``` (repr obj) -Function return string LIPS representation of an object as string. +Function that returns a LIPS code representation of the object as a string. ``` ## require ``` (require module) -Function to be used inside Node.js to import the module. +Function used inside Node.js to import a module. ``` ## require.resolve ``` (require.resolve path) -Return path relative the current module. +Returns the path relative to the current module. + +Only available when LIPS is running under Node.js. ``` ## reset ``` (reset) -Function reset environment and remove all user defined variables. +Function resets the environment and removes all user defined variables. ``` ## response->buffer @@ -2741,11 +2836,11 @@ Function reset environment and remove all user defined variables. ``` (response->text binary res) -Function read all text from Node.js HTTP response object. If binary argument +Reads all text from a Node.js HTTP response object. If binary argument is true it will return Buffer object that can be converted to u8vector. -***Warrning:*** it may overflow the stack (part of Node) when converting -whole buffer to u8vector. +***Warning:*** it may overflow the Javascript call stack when converting the +whole buffer to u8vector, because LIPS doesn't have TCO. ``` ## response->text @@ -2757,22 +2852,22 @@ whole buffer to u8vector. ``` (reverse list) -Function will reverse the list or array. If value is not a list -or array it will throw exception. +Function that reverses the list or array. If value is not a list +or array it will error. ``` ## round ``` (round number) -Function calculate round of a number. +Function that calculates the round of a number. ``` ## s16vector ``` (s16vector v1 v2 ...) -Create signed 16-bit integer vector from give arguments. +Create signed 16-bit integer vector (C short) from give arguments. ``` ## s16vector->list @@ -2784,35 +2879,35 @@ Create signed 16-bit integer vector from give arguments. ``` (s16vector-length v) -return length of signed 16-bit integer vector. +return length of signed 16-bit integer vector (C short). ``` ## s16vector-ref ``` (s16vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## s16vector-set! ``` (s16vector-set! vector k) -Function set value of signed 16-bit integer vector at index k. If index is out of range it throw exception. +Function set value of signed 16-bit integer vector (C short) at index k. If index is out of range it throw exception. ``` ## s16vector? ``` (s16vector? x) -Function return #t of argument is signed 16-bit integer vector otherwise it return #f. +Returns #t of argument is signed 16-bit integer vector (C short) otherwise it return #f. ``` ## s32vector ``` (s32vector v1 v2 ...) -Create signed 32-bit integer vector from give arguments. +Create signed 32-bit integer vector (C unsigned int) from give arguments. ``` ## s32vector->list @@ -2824,35 +2919,35 @@ Create signed 32-bit integer vector from give arguments. ``` (s32vector-length v) -return length of signed 32-bit integer vector. +return length of signed 32-bit integer vector (C unsigned int). ``` ## s32vector-ref ``` (s32vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## s32vector-set! ``` (s32vector-set! vector k) -Function set value of signed 32-bit integer vector at index k. If index is out of range it throw exception. +Function set value of signed 32-bit integer vector (C unsigned int) at index k. If index is out of range it throw exception. ``` ## s32vector? ``` (s32vector? x) -Function return #t of argument is signed 32-bit integer vector otherwise it return #f. +Returns #t of argument is signed 32-bit integer vector (C unsigned int) otherwise it return #f. ``` ## s8vector ``` (s8vector v1 v2 ...) -Create signed 8-bit integer vector from give arguments. +Create signed 8-bit integer vector (C signed char) from give arguments. ``` ## s8vector->list @@ -2864,84 +2959,86 @@ Create signed 8-bit integer vector from give arguments. ``` (s8vector-length v) -return length of signed 8-bit integer vector. +return length of signed 8-bit integer vector (C signed char). ``` ## s8vector-ref ``` (s8vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## s8vector-set! ``` (s8vector-set! vector k) -Function set value of signed 8-bit integer vector at index k. If index is out of range it throw exception. +Function set value of signed 8-bit integer vector (C signed char) at index k. If index is out of range it throw exception. ``` ## s8vector? ``` (s8vector? x) -Function return #t of argument is signed 8-bit integer vector otherwise it return #f. +Returns #t of argument is signed 8-bit integer vector (C signed char) otherwise it return #f. ``` ## scheme-report-environment ``` (scheme-report-environment version) -Function return new Environment object for given Scheme Spec version. -Only argument 5 is supported that create environemnt for R5RS. +Returns new Environment object for given Scheme Spec version. +Only argument 5 is supported that create environment for R5RS. ``` ## search ``` (search pattern string) -Function return first found index of the pattern inside a string +Function that returns the first found index of the pattern inside a string. ``` ## set-car! ``` (set-car! obj value) -Function that set car (head) of the list/pair to specified value. -It can destroy the list. Old value is lost. +Function that sets the car (first item) of the list/pair to specified value. +The old value is lost. ``` ## set-cdr! ``` (set-cdr! obj value) -Function that set cdr (tail) of the list/pair to specified value. -It can destroy the list. Old value is lost. +Function that sets the cdr (tail) of the list/pair to specified value. +It will destroy the list. The old tail is lost. ``` ## set-current-directory! ``` (set-current-directory! string) -Function change current working directory to provided string. +Changes the current working directory to provided string. ``` ## set-obj! ``` (set-obj! obj key value) +(set-obj! obj key value props) -Function set property of JavaScript object +Function set a property of a JavaScript object. props should be a vector of pairs, +passed to Object.defineProperty. ``` ## set-repr! ``` (add-repr! type fn) -Function add string represention to the type, which should be constructor function. +Function that adds the string representation to the type, which should be a constructor function. -Function fn should have args (obj q) and it should return string, obj is vlaue that -need to be converted to string, if the object is nested and you need to use `repr`, -it should pass second parameter q to repr, so string will be quoted when it's true. +Function fn should have args (obj q) and it should return a string. obj is the value that +need to be converted to a string. If the object is nested and you need to use `repr` recursively, +it should pass the second parameter q to repr, so string will be quoted when it's true. e.g.: (lambda (obj q) (string-append "<" (repr obj q) ">")) ``` @@ -2950,40 +3047,45 @@ e.g.: (lambda (obj q) (string-append "<" (repr obj q) ">")) ``` (set-special! symbol name [type]) -Add special symbol to the list of transforming operators by the parser. +Add a special symbol to the list of transforming operators by the parser. e.g.: `(add-special! "#" 'x)` will allow to use `#(1 2 3)` and it will be transformed into (x (1 2 3)) so you can write x macro that will process -the list. 3rd argument is optional and it can be constant value -lips.specials.SPLICE if this constant is used it will transform -`#(1 2 3)` into (x 1 2 3) that is required by # that define vectors. +the list. 3rd argument is optional, and it can be one of two values: +lips.specials.LITERAL, which is the default behavior, or +lips.specials.SPLICE which causes the value to be unpacked into the expression. +This can be used for e.g. to make `#(1 2 3)` into (x 1 2 3) that is needed +by # that defines vectors. ``` ## sin ``` -# +(sin n) + +Function that calculates sine of a number. ``` ## single ``` (single list) -Function check if argument is list with single element +Checks if argument is list with one element. ``` ## some ``` (some fn list) -Higher order function that call argument on each element of the list. -It stops when function fn return true for a value if so it will -return true. If none of the values give true, the function return false +Higher-order function that calls fn on each element of the list. +It stops and returns true when fn returns true for a value. +If none of the values give true, some will return false. +Analogous to Python any(map(fn, list)). ``` ## sort ``` (sort list [predicate]) -Sort the list using optional predicate function. if not function is specified +Sorts the list using optional predicate function. If no comparison function is given it will use <= and sort in increasing order. ``` @@ -2991,7 +3093,7 @@ it will use <= and sort in increasing order. ``` (split separator string) -Function create list by splitting string by separatar that can +Function that creates a list by splitting string by separator which can be a string or regular expression. ``` @@ -2999,7 +3101,7 @@ be a string or regular expression. ``` (sqrt number) -Function return square root of the number. +Function that returns the square root of the number. ``` ## square @@ -3013,29 +3115,29 @@ Returns the square of z. This is equivalent to (* z z). ``` (string chr1 chr2 ...) -Function create new string from it's arguments. Each argument -Need to be a character object. +Function that creates a new string from it's arguments. Each argument +needs to be a character object. ``` ## string->list ``` (string->list string) -Function return list of characters created from string. +Returns a list of characters created from string. ``` ## string->number ``` (string->number number [radix]) -Function convert string to number. +Function that parses a string into a number. ``` ## string->symbol ``` (string->symbol string) -Function convert string to LIPS symbol. +Function that converts a string to a LIPS symbol. ``` ## string->utf8 @@ -3044,7 +3146,7 @@ Function convert string to LIPS symbol. (string->utf8 string start) (string->utf8 string start end) -Function converts string into u8 bytevector using utf8 encoding. +Converts string into u8 bytevector using utf8 encoding. The start and end is the range of the input string for the conversion. ``` @@ -3054,7 +3156,7 @@ The start and end is the range of the input string for the conversion. (string->list string start) (string->list string start end) -Function copy given range of string to list. If no start is specified it use +Function that copies given range of string to list. If no start is specified it use start of the string, if no end is specified it convert to the end of the string. ``` @@ -3062,77 +3164,77 @@ start of the string, if no end is specified it convert to the end of the string. ``` (concat . strings) -Function create new string by joining its arguments +Function that creates a new string by joining its arguments. ``` ## string-ci? ``` (string-ci=? ``` (string-ci>=? string1 string2) -Function return true if second character is not smaller then the first one. +Returns true if second character is not smaller than the first one, ignoring case. ``` ## string-copy ``` (string-copy x) -Create new string based of given argument. +Creates a new string based on given argument. ``` ## string-fill! ``` (string-fill! symbol char) -Function destructively fill the string with given character. +Function that destructively fills the string with given character. ``` ## string-join ``` (join separator list) -Function return string by joining elements of the list +Function that returns a string by joining elements of the list using separator. ``` ## string-length ``` (string-length string) -Function return length of the string. +Returns the length of the string. ``` ## string-map ``` (string-map fn string1 stringr2 ...) -Function return new string from applying function fn to each element +Returns new string from applying function fn to each element of the strings, similar to map for lists. ``` @@ -3140,14 +3242,14 @@ of the strings, similar to map for lists. ``` (string-ref string k) -Function return character inside string at given zero-based index. +Returns character inside string at given zero-based index. ``` ## string-split ``` (split separator string) -Function create list by splitting string by separatar that can +Function that creates a list by splitting string by separator which can be a string or regular expression. ``` @@ -3155,117 +3257,140 @@ be a string or regular expression. ``` (string? expression) -Function check if value is a string. +Predicate that tests if value is a string. ``` ## string? ``` (string=? ``` (string ``` ## symbol->string ``` (symbol->string symbol) -Function convert LIPS symbol to string. +Function that converts a LIPS symbol to a string. +``` + +## symbol-append +``` +(symbol-append s1 s2 ...) + +Function that creates a new symbol from symbols passed as arguments. ``` ## symbol? ``` (symbol? expression) -Function check if value is LIPS symbol +Predicate that tests if value is a LIPS symbol. ``` ## symbol=? ``` (symbol=? s1 s2 ...) -Function check if each value is symbol and it's the same acording to string=? predicate. +Checks if each value is symbol and it's the same according to string=? predicate. ``` ## take ``` (take n list) -Return n first values of the list. +Returns n first values of the list. ``` ## tan ``` -# +(tan n) + +Function that calculates tangent of a number. ``` ## textual-port? ``` (textual-port? port) -Function test if argument is string port. +Function that tests if argument is string port. ``` ## throw ``` (throw string) -Throws new expection. +Throws a new exception. ``` ## tree->array ``` (tree->array list) -Function convert LIPS list structure into JavaScript array. +Function that converts a LIPS cons tree structure into a JavaScript array. ``` ## tree-map ``` (tree-map fn tree) -Tree version of map. Function is invoked on every leaf. +Tree version of map. fn is invoked on every leaf. ``` ## truncate ``` (truncate n) -Function return integer value from real number. +Function that returns the integer part (floor) of a real number. ``` ## truncate-quotient @@ -3287,37 +3412,37 @@ Function return integer value from real number. ``` (type object) -Function return type of an object as string. +Function that returns the type of an object as string. ``` ## typecheck ``` (typecheck label value type [position]) -Function check type and throw exception if type don't match. -Type can be string or list of strings. Position optional argument -is used to created proper error message. +Checks the type of value and errors if the type is not one allowed. Type can be +string or list of strings. The position optional argument is used to create a +proper error message for the nth argument of function calls. ``` ## typecheck-args ``` (typecheck-args args type) -Function check if all items in array are of same type. +Function that makes sure that all items in the array are of same type. ``` ## typed-array? ``` (typed-array? o) -Function test if argumnet is JavaScript typed array (Scheme byte vector). +Function that tests if the arguments is a JavaScript typed array (Scheme byte vector). ``` ## u16vector ``` (u16vector v1 v2 ...) -Create usigned 16-bit integer vector from give arguments. +Create unsigned 16-bit integer vector (C unsigned short) from give arguments. ``` ## u16vector->list @@ -3329,35 +3454,35 @@ Create usigned 16-bit integer vector from give arguments. ``` (u16vector-length v) -return length of usigned 16-bit integer vector. +return length of unsigned 16-bit integer vector (C unsigned short). ``` ## u16vector-ref ``` (u16vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## u16vector-set! ``` (u16vector-set! vector k) -Function set value of usigned 16-bit integer vector at index k. If index is out of range it throw exception. +Function set value of unsigned 16-bit integer vector (C unsigned short) at index k. If index is out of range it throw exception. ``` ## u16vector? ``` (u16vector? x) -Function return #t of argument is usigned 16-bit integer vector otherwise it return #f. +Returns #t of argument is unsigned 16-bit integer vector (C unsigned short) otherwise it return #f. ``` ## u32vector ``` (u32vector v1 v2 ...) -Create usigned 32-bit integer vector from give arguments. +Create unsigned 32-bit integer vector (C int) from give arguments. ``` ## u32vector->list @@ -3369,28 +3494,28 @@ Create usigned 32-bit integer vector from give arguments. ``` (u32vector-length v) -return length of usigned 32-bit integer vector. +return length of unsigned 32-bit integer vector (C int). ``` ## u32vector-ref ``` (u32vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## u32vector-set! ``` (u32vector-set! vector k) -Function set value of usigned 32-bit integer vector at index k. If index is out of range it throw exception. +Function set value of unsigned 32-bit integer vector (C int) at index k. If index is out of range it throw exception. ``` ## u32vector? ``` (u32vector? x) -Function return #t of argument is usigned 32-bit integer vector otherwise it return #f. +Returns #t of argument is unsigned 32-bit integer vector (C int) otherwise it return #f. ``` ## u8-ready? @@ -3407,7 +3532,7 @@ guaranteed not to hang. If the port is at end of file then u8-ready? returns #t. ``` (u8vector v1 v2 ...) -Create usigned 8-bit integer vector from give arguments. +Create unsigned 8-bit integer vector (C unsigned char) from give arguments. ``` ## u8vector->list @@ -3419,78 +3544,76 @@ Create usigned 8-bit integer vector from give arguments. ``` (u8vector-length v) -return length of usigned 8-bit integer vector. +return length of unsigned 8-bit integer vector (C unsigned char). ``` ## u8vector-ref ``` (u8vector-ref vector k) -Function return value frome vector at index k. If index is out of range it throw exception. +Returns value from vector at index k. If index is out of range it throw exception. ``` ## u8vector-set! ``` (u8vector-set! vector k) -Function set value of usigned 8-bit integer vector at index k. If index is out of range it throw exception. +Function set value of unsigned 8-bit integer vector (C unsigned char) at index k. If index is out of range it throw exception. ``` ## u8vector? ``` (u8vector? x) -Function return #t of argument is usigned 8-bit integer vector otherwise it return #f. +Returns #t of argument is unsigned 8-bit integer vector (C unsigned char) otherwise it return #f. ``` ## unary ``` (unary fn) -Function return new function with arguments limited to one. +Returns a new function with arguments limited to one. ``` ## unbind ``` (unbind fn) -Function remove bidning from function so you can get props from it. +Function that removes the weak 'this' binding from a function so you +can get properties from the actual function object. ``` ## unfold ``` (unfold fn init) -Function returns list from given function and init value. The function should -return cons where first is the item added to the list and second is next value -passed to the funtion. If function return false it end the loop. +Returns a list from the given function and init value. The function should +return a pair where first is the item added to the list and second is next value +passed to the function. If the function returns false it ends the loop. ``` ## unquote ``` -(unquote code) +(unquote code) or ,code -Special form to be used in quasiquote macro, parser is processing special -characters , and create call to this pseudo function. It can be used -to evalute expression inside and return the value, the output is inserted -into list structure created by queasiquote. +Special form used in the quasiquote macro. It evaluates the expression inside and +substitutes the value into quasiquote's result. ``` ## unquote-splicing ``` -(unquote-splicing code) +(unquote-splicing code) or ,@code -Special form to be used in quasiquote macro, parser is processing special -characters ,@ and create call to this pseudo function. It can be used -to evalute expression inside and return the value without parenthesis. -the value will be joined to the output list structure. +Special form used in the quasiquote macro. It evaluates the expression inside and +splices the list into quasiquote's result. If it is not the last element of the +expression, the computed value must be a pair. ``` ## unset-repr! ``` (unset-repr! type) -Function remove string represention to the type, which should be constructor function, +Removes the string representation of the type, which should be constructor function, added by add-repr! function. ``` @@ -3498,7 +3621,7 @@ added by add-repr! function. ``` (unset-special! name) -Function remove special symbol from parser. Added by `set-special!`, +Function that removes a special symbol from parser added by `set-special!`, name must be a string. ``` @@ -3508,7 +3631,7 @@ name must be a string. (utf8->string u8vector start) (utf8->string u8vector start end) -Function converts u8 bytevector into string using utf8 encoding. +Converts u8 bytevector into string using utf8 encoding. The start and end is the range of the input byte vector for the conversion. ``` @@ -3516,22 +3639,22 @@ The start and end is the range of the input byte vector for the conversion. ``` (value obj) -Function unwrap LNumbers and convert nil value to undefined. +Function that unwraps LNumbers and converts nil to undefined. ``` ## values ``` (values a1 a2 ...) -If called with more then one elment it will create special -Values object that can be used in call-with-values function +If called with more then one element it will create a special +Values object that can be used in the call-with-values function. ``` ## values-ref ``` (values-ref values n) -Function return n value of values object which is result of value function. +Returns n value of values object which is result of value function. ``` ## vector->f32vector @@ -3550,7 +3673,7 @@ Function return n value of values object which is result of value function. (vector->list vector start) (vector->list vector start end) -Function copy given range of vector to list. If no start is specified it use +Function that copies given range of vector to list. If no start is specified it use start of the vector, if no end is specified it convert to the end of the vector. ``` @@ -3575,7 +3698,7 @@ start of the vector, if no end is specified it convert to the end of the vector. (vector->string vector start) (vector->string vector start end) -Function return new string created from vector of characters in given range. +Returns new string created from vector of characters in given range. If no start is given it create string from 0, if no end is given it return string to the end. ``` @@ -3599,7 +3722,7 @@ string to the end. ``` (vector-append v1 v2 ...) -Function return new vector by combining it's arguments that should be vectors. +Returns new vector by combining it's arguments that should be vectors. ``` ## vector-fill! @@ -3616,14 +3739,14 @@ at 0. If end is not given it fill till the end if the vector. ``` (vector-length vec) -Function return length of the vector. If argument is not vector it throw exception. +Returns length of the vector. It errors if the argument is not a vector. ``` ## vector-map ``` (vector-map fn vector1 vector2 ...) -Function return new vector from applying function fn to each element +Returns new vector from applying function fn to each element of the vectors, similar to map for lists. ``` @@ -3631,21 +3754,21 @@ of the vectors, similar to map for lists. ``` (vector-ref vec n) -Function return nth element of the vector vec. +Returns nth element of the vector vec. ``` ## vector-set! ``` (vector-set! vec n value) -Function set nth item of the vector to value. +Function that sets nth item of the vector to value. ``` ## vector? ``` (vector? n) -Function return true of value is vector and false if not. +Returns true if value is vector and false if not. ``` ## with-exception-handler @@ -3665,6 +3788,24 @@ After thunk is executed current-input-port is restored and file port is closed. ``` +## with-input-from-port +``` +(with-input-from-port port thunk) + +Procedure use port and make it current-input-port then thunk is executed. +After thunk is executed current-input-port is restored and given port +is closed. +``` + +## with-input-from-string +``` +(with-input-from-string string thunk) + +Procedure open string and make it current-input-port then thunk is executed. +After thunk is executed current-input-port is restored and string port +is closed. +``` + ## with-output-to-file ``` # @@ -3732,6 +3873,6 @@ Write byte into binary output port. ``` (zero? x) -Function check if number is equal to 0 +Checks if the number is equal to 0 ``` diff --git a/assets/classDiagram b/assets/classDiagram index c27bfc22..7ba779d5 100644 --- a/assets/classDiagram +++ b/assets/classDiagram @@ -235,7 +235,7 @@ class Lexer { class Parser { Lexer __lexer__ - Environent __env__ + Environment __env__ resolve() peek() skip() diff --git a/assets/classDiagram.svg b/assets/classDiagram.svg index dd080a0f..1932ca67 100644 --- a/assets/classDiagram.svg +++ b/assets/classDiagram.svg @@ -1 +1 @@ -
LNumber
Number __value__
isFloat()
isNumber()
isComplex()
isRational()
isNative()
isBigInteger()
isBN()
getType()
coerce()
op()
sqrt()
pow()
abs()
isOdd()
isEven()
cmp()
LBigInteger
BigInt __value__
sqrt()
gcd()
sqrt()
LRational
LNumber __num__
LNumber __denom__
pow()
abs()
cmp()
mul()
div()
sub()
add()
valueOf()
toString()
LFloat
Number __value__
toRational()
toString()
LComplex
LNumber __im__
LNumber __re__
sqrt()
toRational()
add()
factor()
modulus()
sqrt()
div()
sub()
mul()
cmp()
toString()
InputPort
Parser __parser__
read_char()
skip_char()
read_line()
read()
char_ready()
is_open()
close()
toString()
InputStringPort
symbol __type__
char_ready()
toString()
InputFilePort
string __filename__
toStgring()
OutputPort
symbol __type__
write()
is_open()
close()
toString()
OutputStringPort
string[] __buffer__
symbol __type__
write()
valueOf()
toString()
OutputFilePort
string __filename__
symbol __type__
fs()
internal()
close()
toString()
OutputByteVectorPort
Uin8Array __buffer__
symbol __type__
write(any)
close()
write_u8(byte)
write_u8_vector(Uint8Array)
toString()
valueOf()
InputByteVectorPort
symbol __type__
Uint8Array __vector__
integer __index__
string __filename__
toString()
u8_ready()
peek_u8()
skip()
read_u8()
read_u8_vector(integer)
toString()
InputBinaryFilePort
string __filename__
toString()
OutputBinaryFilePort
string __filename__
symbol __type__
write(any)
write_u8(byte)
write_u8_vector(Uint8Array)
Parser
Lexer __lexer__
Environent __env__
resolve()
peek()
skip()
read()
is_special(token)
is_builtin(token)
is_open(token)
is_close(token)
read_list()
read_value()
read_object()
is_ccomment(token)
evaluate(code)
Lexer
string __input__
static rules
token(meta)
peek(meta)
skip()
read_line()
read_rest()
read_string(num)
peek_char()
read_char()
skip_char()
match_rule()
next_token()
Macro
string __doc__
string __name__
boolean __defmacro__
Function __fn__
defmacro()
invoke()
toString()
Syntax
invoke()
toString()
String
LString
string __string__
number length
toString() : string
get(number) : string
cmp(string) : boolean
lower() : LString
upper() : LString
set(number, LCharacter)
clone() : LString
fill(LCharacter)
Formatter
string __code__
indent(object) : number
exception_shift(token, object) : number
break() : Formatter
format() : string
Ahead
Pattern
rule pattern
string flag
Interpreter
Environment __env__
get(symbol)
set(symbol, value)
constant(name, value)
exec(code, dynamic = false, env = null)
Environment
string __name__
Map __docs__
Object __env__
Environment __parent__
list() : string[]
uset(name)
inherit(name, object) : Environment
doc(name, value = null)
get(symbol, options)
set(symbol, value, doc = null)
constant(name, value)
has(string) : boolean
ref(string) : Environment
parents() : Environment[]
newFrame(Function, args)
clone() : Environment
merge() : Environment
toString() : string
Worker
string url
Worker worker
rpc(method, params) : Promise
exec(code, [dynamic]) : Promise
LCharacter
string __name__
string __char__
toUpperCase() : LCharacter
toLowerCase() : LCharacter
toString() : string
valueOf() : string
LSymbol
string __name__
Values
any[] __values__
valueOf()
toString()
QuotedPromise
Promise __promise__
then()
catch()
valueOf()
Pair
any car
any cdr
flatten()
length()
find(any)
clone()
last_pair()
to_array()
to_object()
reduce(Function)
reverse() : Pair
transform(Function)
map(Function)
\ No newline at end of file +
LNumber
Number __value__
isFloat()
isNumber()
isComplex()
isRational()
isNative()
isBigInteger()
isBN()
getType()
coerce()
op()
sqrt()
pow()
abs()
isOdd()
isEven()
cmp()
LBigInteger
BigInt __value__
sqrt()
gcd()
sqrt()
LRational
LNumber __num__
LNumber __denom__
pow()
abs()
cmp()
mul()
div()
sub()
add()
valueOf()
toString()
LFloat
Number __value__
toRational()
toString()
LComplex
LNumber __im__
LNumber __re__
sqrt()
toRational()
add()
factor()
modulus()
sqrt()
div()
sub()
mul()
cmp()
toString()
InputPort
Parser __parser__
read_char()
skip_char()
read_line()
read()
char_ready()
is_open()
close()
toString()
InputStringPort
symbol __type__
char_ready()
toString()
InputFilePort
string __filename__
toStgring()
OutputPort
symbol __type__
write()
is_open()
close()
toString()
OutputStringPort
string[] __buffer__
symbol __type__
write()
valueOf()
toString()
OutputFilePort
string __filename__
symbol __type__
fs()
internal()
close()
toString()
OutputByteVectorPort
Uin8Array __buffer__
symbol __type__
write(any)
close()
write_u8(byte)
write_u8_vector(Uint8Array)
toString()
valueOf()
InputByteVectorPort
symbol __type__
Uint8Array __vector__
integer __index__
string __filename__
toString()
u8_ready()
peek_u8()
skip()
read_u8()
read_u8_vector(integer)
toString()
InputBinaryFilePort
string __filename__
toString()
OutputBinaryFilePort
string __filename__
symbol __type__
write(any)
write_u8(byte)
write_u8_vector(Uint8Array)
Parser
Lexer __lexer__
Environment __env__
resolve()
peek()
skip()
read()
is_special(token)
is_builtin(token)
is_open(token)
is_close(token)
read_list()
read_value()
read_object()
is_ccomment(token)
evaluate(code)
Lexer
string __input__
static rules
token(meta)
peek(meta)
skip()
read_line()
read_rest()
read_string(num)
peek_char()
read_char()
skip_char()
match_rule()
next_token()
Macro
string __doc__
string __name__
boolean __defmacro__
Function __fn__
defmacro()
invoke()
toString()
Syntax
invoke()
toString()
String
LString
string __string__
number length
toString() : string
get(number) : string
cmp(string) : boolean
lower() : LString
upper() : LString
set(number, LCharacter)
clone() : LString
fill(LCharacter)
Formatter
string __code__
indent(object) : number
exception_shift(token, object) : number
break() : Formatter
format() : string
Ahead
Pattern
rule pattern
string flag
Interpreter
Environment __env__
get(symbol)
set(symbol, value)
constant(name, value)
exec(code, dynamic = false, env = null)
Environment
string __name__
Map __docs__
Object __env__
Environment __parent__
list() : string[]
uset(name)
inherit(name, object) : Environment
doc(name, value = null)
get(symbol, options)
set(symbol, value, doc = null)
constant(name, value)
has(string) : boolean
ref(string) : Environment
parents() : Environment[]
newFrame(Function, args)
clone() : Environment
merge() : Environment
toString() : string
Worker
string url
Worker worker
rpc(method, params) : Promise
exec(code, [dynamic]) : Promise
LCharacter
string __name__
string __char__
toUpperCase() : LCharacter
toLowerCase() : LCharacter
toString() : string
valueOf() : string
LSymbol
string __name__
Values
any[] __values__
valueOf()
toString()
QuotedPromise
Promise __promise__
then()
catch()
valueOf()
Pair
any car
any cdr
flatten()
length()
find(any)
clone()
last_pair()
to_array()
to_object()
reduce(Function)
reverse() : Pair
transform(Function)
map(Function)
\ No newline at end of file diff --git a/dist/lips.js b/dist/lips.js index 5f5158a7..f9736cfd 100644 --- a/dist/lips.js +++ b/dist/lips.js @@ -4,7 +4,7 @@ * | | \ \ | | | || . \/ __> | | * | | > \ | |_ | || _/\__ \ | | * | | / ^ \ |___||_||_| <___/ | | - * \_\ /_/ \_\ /_/ v. 1.0.0-beta.16 + * \_\ /_/ \_\ /_/ v. DEV * * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript * @@ -31,7 +31,7 @@ * Copyright (c) 2014-present, Facebook, Inc. * released under MIT license * - * build: Fri, 10 Nov 2023 18:56:54 +0000 + * build: Tue, 14 Nov 2023 19:09:39 +0000 */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : @@ -5799,7 +5799,7 @@ * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley. * source: Kawa, C-Gambit * - * Build time: Fri, 10 Nov 2023 18:56:54 +0000 + * Build time: Tue, 14 Nov 2023 19:09:39 +0000 */ var _excluded = ["token"], _excluded2 = ["stderr", "stdin", "stdout", "command_line"]; @@ -6311,7 +6311,7 @@ if (is_int(value) && parse.number.match(/e\+?[0-9]/i)) { return LNumber(value); - } // calculate big int and big fration by hand - it don't fit into JS float + } // calculate big int and big fraction by hand - it don't fit into JS float var _parse_big_int = parse_big_int(parse.number), @@ -7188,7 +7188,7 @@ state = _rule[3]; if (rule.length !== 5) { - throw new Error("Lexer: Invald rule of length ".concat(rule.length)); + throw new Error("Lexer: Invalid rule of length ".concat(rule.length)); } if (!_char4.match(re)) { @@ -7228,7 +7228,7 @@ var newline = this._newline; if (this._state === null) { - // keep beging of newline to calculate col + // keep beginning of the newline to calculate col // we don't want to check inside the token (e.g. strings) this._newline = i + 1; } @@ -7375,7 +7375,7 @@ Lexer._rules = [// char_re prev_re next_re from_state to_state // null as to_state mean that is single char token // string - [/"/, null, null, Lexer.string, null], [/"/, null, null, null, Lexer.string], [/"/, null, null, Lexer.string_escape, Lexer.string], [/\\/, null, null, Lexer.string, Lexer.string_escape], [/./, /\\/, null, Lexer.string_escape, Lexer.string], // hash special symbols, lexer don't need to distingiush those + [/"/, null, null, Lexer.string, null], [/"/, null, null, null, Lexer.string], [/"/, null, null, Lexer.string_escape, Lexer.string], [/\\/, null, null, Lexer.string, Lexer.string_escape], [/./, /\\/, null, Lexer.string_escape, Lexer.string], // hash special symbols, lexer don't need to distinguish those // we only care if it's not pick up by vectors literals [/#/, null, /[bdxoeitf]/i, null, Lexer.symbol], // characters [/#/, null, /\\/, null, Lexer.character], [/\\/, /#/, /\s/, Lexer.character, Lexer.character], [/\\/, /#/, /[()[\]]/, Lexer.character, Lexer.character], [/\s/, /\\/, null, Lexer.character, null], [/\S/, null, Lexer.boundary, Lexer.character, null], // regex @@ -7840,8 +7840,8 @@ return read_object; }() }, { - key: "ballanced", - value: function ballanced() { + key: "balanced", + value: function balanced() { return this._state.parentheses === 0; } }, { @@ -7977,7 +7977,7 @@ key: "_read_object", value: function () { var _read_object3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() { - var token, special, bultin, expr, object, extension, result, ref, ref_label; + var token, special, builtin, expr, object, extension, result, ref, ref_label; return _regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { @@ -8009,7 +8009,7 @@ // MACRO: if macro is used, then it is evaluated in place and the // result is returned by parser and it is quoted. special = specials.get(token); - bultin = is_builtin(token); + builtin = is_builtin(token); this.skip(); _context8.next = 11; return this._read_object(); @@ -8017,7 +8017,7 @@ case 11: object = _context8.sent; - if (bultin) { + if (builtin) { _context8.next = 26; break; } @@ -8063,7 +8063,7 @@ } // Built-in parser extensions just expand into lists like 'x ==> (quote x) - if (!bultin) { + if (!builtin) { _context8.next = 29; break; } @@ -8093,7 +8093,7 @@ return _context8.abrupt("return", result); case 38: - throw new Error('Parse Error: invlid parser extension: ' + special.symbol); + throw new Error('Parse Error: invalid parser extension: ' + special.symbol); case 39: ref = this.match_datum_ref(token); @@ -8221,7 +8221,7 @@ case 5: expr = _context9.sent; - if (!parser.ballanced()) { + if (!parser.balanced()) { parser.ballancing_error(expr); } @@ -8447,7 +8447,7 @@ throw new Error('Invalid matcher'); } // ---------------------------------------------------------------------- // :: Documentation decorator to LIPS functions if lines starts with : - // :: they are ignored (not trimed) otherwise it trims so + // :: they are ignored (not trimmed) otherwise it trims so // :: so you can have indent in source code // ---------------------------------------------------------------------- @@ -8739,9 +8739,9 @@ return Object.assign({}, defaults); } - var exeptions = options && options.exceptions || {}; - var specials = exeptions.specials || []; - var shift = exeptions.shift || { + var exceptions = options && options.exceptions || {}; + var specials = exceptions.specials || []; + var shift = exceptions.shift || { 1: [] }; return _objectSpread(_objectSpread(_objectSpread({}, defaults), options), {}, { @@ -8843,22 +8843,22 @@ return settings.offset + sexp[0].col + 1; } else { // search for token before S-Expression for case like #(10 or &(:x - var exeption = -1; + var exception = -1; if (before_sexpr) { var shift = Formatter.exception_shift(before_sexpr.token, settings); if (shift !== -1) { - exeption = shift; + exception = shift; } } - if (exeption === -1) { - exeption = Formatter.exception_shift(sexp[1].token, settings); + if (exception === -1) { + exception = Formatter.exception_shift(sexp[1].token, settings); } - if (exeption !== -1) { - return settings.offset + sexp[0].col + exeption; + if (exception !== -1) { + return settings.offset + sexp[0].col + exception; } else if (sexp[0].line < sexp[1].line) { return settings.offset + sexp[0].col + 1; } else if (sexp.length > 3 && sexp[1].line === sexp[3].line) { @@ -10671,7 +10671,7 @@ }; var expansion = scope.expansion, define = scope.define; // pattern_names parameter is used to distinguish - // multiple matches of ((x ...) ...) agains ((1 2 3) (1 2 3)) + // multiple matches of ((x ...) ...) against ((1 2 3) (1 2 3)) // in loop we add x to the list so we know that this is not // duplicated ellipsis symbol @@ -10699,7 +10699,7 @@ if (pattern instanceof LSymbol && symbols.includes(pattern.literal())) { // TODO: literal() may be SLOW - var ref = expansion.ref(code); // shadowing the indentifier works only with lambda and let + var ref = expansion.ref(code); // shadowing the identifier works only with lambda and let if (LSymbol.is(code, pattern)) { if (typeof ref === 'undefined') { @@ -10931,7 +10931,7 @@ log({ pattern: pattern.toString(), code: code.toString() - }); // case (x y) ===> (var0 var1 ... varn) where var1 match nil + }); // case (x y) ===> (var0 var1 ... warn) where var1 match nil if (pattern.cdr instanceof Pair && pattern.car instanceof LSymbol && pattern.cdr.cdr instanceof Pair && pattern.cdr.car instanceof LSymbol && LSymbol.is(pattern.cdr.cdr.car, ellipsis_symbol) && pattern.cdr.cdr.cdr instanceof Pair && !LSymbol.is(pattern.cdr.cdr.cdr.car, ellipsis_symbol) && traverse(pattern.car, code.car, pattern_names, ellipsis) && traverse(pattern.cdr.cdr.cdr, code.cdr, pattern_names, ellipsis)) { var _name6 = pattern.cdr.car.__name__; @@ -11678,7 +11678,7 @@ return obj; } // ---------------------------------------------------------------------- - // :: Function binds with contex that can be optionally unbind + // :: Function binds with context that can be optionally unbind // :: get original function with unbind // ---------------------------------------------------------------------- @@ -12119,7 +12119,7 @@ function limit_math_op(n, fn) { - // + 1 so it inlcude function in guard_math_call + // + 1 so it include function in guard_math_call return limit(n + 1, curry(guard_math_call, fn)); } // ------------------------------------------------------------------------- // :: some functional magic @@ -12209,7 +12209,7 @@ _char7 = LCharacter.__names__[_char7]; } else { // this should never happen - // parser don't alow not defined named characters + // parser don't allow not defined named characters throw new Error('Internal: Unknown named character'); } } else { @@ -12446,7 +12446,7 @@ if (!LNumber.isNumber(n) && !parsable) { throw new Error("You can't create LNumber from ".concat(type(n))); - } // prevent infite loop https://github.com/indutny/bn.js/issues/186 + } // prevent infinite loop https://github.com/indutny/bn.js/issues/186 if (n === null) { @@ -13560,7 +13560,7 @@ return LFloat(fn(this.__value__, n)); }; // ------------------------------------------------------------------------- - // same aproximation as in guile scheme + // same approximation as in guile scheme LFloat.prototype.toRational = function () { @@ -14056,7 +14056,7 @@ num: this, denom: n }); - } // use native calucaltion becuase it's real bigint value + } // use native calculation because it's real bigint value return LBigInteger(ret, true); @@ -14085,7 +14085,7 @@ LNumber.NaN = LNumber(NaN); // ------------------------------------------------------------------------- - // :: Port abstration - read should be a function that return next line + // :: Port abstraction - read should be a function that return next line // ------------------------------------------------------------------------- function InputPort(read) { @@ -15023,7 +15023,7 @@ Value.prototype.valueOf = function () { return this.value; }; // ------------------------------------------------------------------------- - // :: Differnt object than value used as object for (values) + // :: Different object than value used as object for (values) // ------------------------------------------------------------------------- @@ -15212,7 +15212,7 @@ return result; }; // ------------------------------------------------------------------------- - // :: Quote funtion used to pause evaluation from Macro + // :: Quote function used to pause evaluation from Macro // ------------------------------------------------------------------------- @@ -15542,7 +15542,7 @@ m = str.match(/~([\S])/); if (m) { - throw new Error("format: Unrecognized escape seqence ".concat(m[1])); + throw new Error("format: Unrecognized escape sequence ".concat(m[1])); } return str; @@ -15696,7 +15696,7 @@ if (code.car instanceof Pair && LSymbol.is(code.car.car, '.')) { var second = code.car.cdr.car; - var thrid = code.car.cdr.cdr.car; + var third = code.car.cdr.cdr.car; var object = _evaluate(second, { env: this, @@ -15704,7 +15704,7 @@ error: error }); - var key = _evaluate(thrid, { + var key = _evaluate(third, { env: this, dynamic_scope: dynamic_scope, error: error @@ -15745,7 +15745,7 @@ ref.set(symbol, value); }); - }), "(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non emtpy slot and sets it."), + }), "(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non empty slot and sets it."), // ------------------------------------------------------------------ 'unset!': doc(new Macro('set!', function (code) { if (!(code.car instanceof LSymbol)) { @@ -16145,13 +16145,13 @@ }); }, "(let-env env . body)\n\n Special macro that evaluates body in context of given environment\n object."), // ------------------------------------------------------------------ - 'letrec': doc(let_macro(Symbol["for"]('letrec')), "(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentialy and the next value can access the\n previous values/names."), + 'letrec': doc(let_macro(Symbol["for"]('letrec')), "(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentially and the next value can access the\n previous values/names."), // --------------------------------------------------------------------- 'letrec*': doc(let_macro(Symbol["for"]('letrec')), "(letrec* ((a value-a) (b value-b) ...) . body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so you can use recursive code as well as referencing the previous binding.\n\n In LIPS both letrec and letrec* behave the same."), // --------------------------------------------------------------------- 'let*': doc(let_macro(Symbol["for"]('let*')), "(let* ((a value-a) (b value-b) ...) . body)\n\n Macro similar to `let`, but the subsequent bindings after the first\n are evaluated in the environment including the previous let variables,\n so you can define one variable, and use it in the next's definition."), // --------------------------------------------------------------------- - 'let': doc(let_macro(Symbol["for"]('let')), "(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to names,\n and then evaluates the body in context of that environment. Values are evaluated\n sequentialy but you can't access previous values/names when the next are\n evaluated. You can only get them in the body of the let expression. (If you want\n to define multiple variables and use them in each other's definitions, use\n `let*`.)"), + 'let': doc(let_macro(Symbol["for"]('let')), "(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to names,\n and then evaluates the body in context of that environment. Values are evaluated\n sequentially but you can't access previous values/names when the next are\n evaluated. You can only get them in the body of the let expression. (If you want\n to define multiple variables and use them in each other's definitions, use\n `let*`.)"), // ------------------------------------------------------------------ 'begin*': doc(pararel('begin*', function (values) { return values.pop(); @@ -16196,7 +16196,7 @@ } _evaluate(new Pair(new LSymbol('begin'), code), args); - }, "(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It wil discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."), + }, "(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It will discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."), // ------------------------------------------------------------------ 'call/cc': doc(Macro.defmacro('call/cc', function (code) { var eval_args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; @@ -16210,7 +16210,7 @@ return result(new Continuation(null)); } }); - }), "(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORED BY LIPS RIGHT NOW"), + }), "(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORTED BY LIPS RIGHT NOW"), // ------------------------------------------------------------------ define: doc(Macro.defmacro('define', function (code, eval_args) { var env = this; @@ -16305,7 +16305,7 @@ } return Values(args); - }, "(values a1 a2 ...)\n\n If called with more then one elment it will create a special\n Values object that can be used in the call-with-values function."), + }, "(values a1 a2 ...)\n\n If called with more then one element it will create a special\n Values object that can be used in the call-with-values function."), // ------------------------------------------------------------------ 'call-with-values': doc('call-with-values', function (producer, consumer) { typecheck('call-with-values', producer, 'function', 1); @@ -16325,7 +16325,7 @@ } return this; - }, "(current-environment)\n\n Function that returns the current environement (they're first-class objects!)"), + }, "(current-environment)\n\n Function that returns the current environment (they're first-class objects!)"), // ------------------------------------------------------------------ 'parent.frame': doc('parent.frame', function () { return user_env; @@ -16350,7 +16350,7 @@ } } }); - }, "(eval expr)\n (eval expr environment)\n\n Function that evalutes LIPS Scheme code. If the second argument is provided\n it will be the environment that the code is evaluated in."), + }, "(eval expr)\n (eval expr environment)\n\n Function that evaluates LIPS Scheme code. If the second argument is provided\n it will be the environment that the code is evaluated in."), // ------------------------------------------------------------------ lambda: new Macro('lambda', function (code) { var _ref34 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, @@ -17112,7 +17112,7 @@ return acc.append(item); }, _nil); - }, "(append! arg1 ...)\n\n Destructive version of append, it can modify the lists in place. It returns\n a new list where each argument is appened to the end. It may modify\n lists added as arguments."), + }, "(append! arg1 ...)\n\n Destructive version of append, it can modify the lists in place. It returns\n a new list where each argument is appended to the end. It may modify\n lists added as arguments."), // ------------------------------------------------------------------ reverse: doc('reverse', function reverse(arg) { typecheck('reverse', arg, ['array', 'pair', 'nil']); @@ -17345,7 +17345,7 @@ // ------------------------------------------------------------------ 'array?': doc('array?', function (obj) { return obj instanceof Array; - }, "(array? expression)\n\n Predicate that tests if value is an arrray."), + }, "(array? expression)\n\n Predicate that tests if value is an array."), // ------------------------------------------------------------------ 'object?': doc('object?', function (obj) { return obj !== _nil && obj !== null && !(obj instanceof LCharacter) && !(obj instanceof RegExp) && !(obj instanceof LString) && !(obj instanceof Pair) && !(obj instanceof LNumber) && _typeof(obj) === 'object' && !(obj instanceof Array); @@ -17490,7 +17490,7 @@ _next(result, resolve); } }); - }), "(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thown. If finally is provided it's always executed\n at the end."), + }), "(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thrown. If finally is provided it's always executed\n at the end."), // ------------------------------------------------------------------ 'raise': doc('raise', function (obj) { throw obj; @@ -17579,7 +17579,7 @@ return new Pair(head, rest); }); }); - }, "(map fn . lists)\n\n Higher-order function that calls function `fn` with each\n value of the list. If you provide more then one list as argument\n it will take each value from each list and call `fn` function\n with that many argument as number of list arguments. The return\n values of the fn calls are acumulated in a result list and\n returned by map."), + }, "(map fn . lists)\n\n Higher-order function that calls function `fn` with each\n value of the list. If you provide more then one list as argument\n it will take each value from each list and call `fn` function\n with that many argument as number of list arguments. The return\n values of the fn calls are accumulated in a result list and\n returned by map."), // ------------------------------------------------------------------ 'list?': doc('list?', function (obj) { var node = obj; @@ -17612,7 +17612,7 @@ return value || some(fn, list.cdr); }); } - }, "(some fn list)\n\n Higher-order function that calls fn on each element of the list.\n It stops and returns true when fn returns true for a value.\n If none of the values give true, some will return false.\n Analagous to Python any(map(fn, list))."), + }, "(some fn list)\n\n Higher-order function that calls fn on each element of the list.\n It stops and returns true when fn returns true for a value.\n If none of the values give true, some will return false.\n Analogous to Python any(map(fn, list))."), // ------------------------------------------------------------------ fold: doc('fold', fold('fold', function (fold, fn, init) { for (var _len32 = arguments.length, lists = new Array(_len32 > 3 ? _len32 - 3 : 0), _key32 = 3; _key32 < _len32; _key32++) { @@ -17721,7 +17721,7 @@ // ------------------------------------------------------------------ compose: doc(compose, "(compose . fns)\n\n Higher-order function that creates a new function that applies all functions\n from right to left and returns the last value. Reverse of pipe.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 10) --> (+ 2 (* 3 10)) --> 32"), pipe: doc(pipe, "(pipe . fns)\n\n Higher-order function that creates a new function that applies all functions\n from left to right and returns the last value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 10) --> (* 3 (+ 2 10)) --> 36"), - curry: doc(curry, "(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have parially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"), + curry: doc(curry, "(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have partially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"), // ------------------------------------------------------------------ // Numbers // ------------------------------------------------------------------ @@ -18015,7 +18015,7 @@ return unpromise(value, next); } }(); - }), "(and . expressions)\n\n Macro that evalutes each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."), + }), "(and . expressions)\n\n Macro that evaluates each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."), // bit operations '|': doc('|', function (a, b) { return LNumber(a).or(b); @@ -18827,7 +18827,7 @@ if (__promise__ === true && is_promise(result)) { // fix #139 evaluate the code inside the promise that is not data. - // When promise is not quoted it happen automatically, when returing + // When promise is not quoted it happen automatically, when returning // promise from evaluate. result = result.then(function (result) { if (result instanceof Pair && !value[__data__]) { @@ -19160,7 +19160,7 @@ if (data.method === 'eval') { if (!init) { - send_error('Worker RPC: LIPS not initilized, call init first'); + send_error('Worker RPC: LIPS not initialized, call init first'); return; } @@ -19502,7 +19502,7 @@ function init() { var lips_mimes = ['text/x-lips', 'text/x-scheme']; - var bootstraped; + var bootstrapped; function load(script) { return new Promise(function (resolve) { @@ -19538,7 +19538,7 @@ if (lips_mimes.includes(type)) { var bootstrap_attr = script.getAttribute('bootstrap'); - if (!bootstraped && typeof bootstrap_attr === 'string') { + if (!bootstrapped && typeof bootstrap_attr === 'string') { return bootstrap(bootstrap_attr).then(function () { return load(script); }).then(loop); @@ -19563,7 +19563,7 @@ if (typeof bootstrap_attr === 'string') { return bootstrap(bootstrap_attr).then(function () { - bootstraped = true; + bootstrapped = true; return loop(); }); } @@ -19582,10 +19582,10 @@ var banner = function () { // Rollup tree-shaking is removing the variable if it's normal string because - // obviously 'Fri, 10 Nov 2023 18:56:54 +0000' == '{{' + 'DATE}}'; can be removed + // obviously 'Tue, 14 Nov 2023 19:09:39 +0000' == '{{' + 'DATE}}'; can be removed // but disabling Tree-shaking is adding lot of not used code so we use this // hack instead - var date = LString('Fri, 10 Nov 2023 18:56:54 +0000').valueOf(); + var date = LString('Tue, 14 Nov 2023 19:09:39 +0000').valueOf(); var _date = date === '{{' + 'DATE}}' ? new Date() : new Date(date); @@ -19597,7 +19597,7 @@ var _build = [_year, _format(_date.getMonth() + 1), _format(_date.getDate())].join('-'); - var banner = "\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter 1.0.0-beta.16 (".concat(_build, ") \nCopyright (c) 2018-").concat(_year, " Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specic function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/, ''); + var banner = "\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter DEV (".concat(_build, ") \nCopyright (c) 2018-").concat(_year, " Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/, ''); return banner; }(); // ------------------------------------------------------------------------- // to be used with string function when code is minified @@ -19629,9 +19629,9 @@ read_only(QuotedPromise, '__class__', 'promise'); // ------------------------------------------------------------------------- var lips = { - version: '1.0.0-beta.16', + version: 'DEV', banner: banner, - date: 'Fri, 10 Nov 2023 18:56:54 +0000', + date: 'Tue, 14 Nov 2023 19:09:39 +0000', exec: exec, // unwrap async generator into Promise parse: compose(uniterate_async, parse), diff --git a/dist/lips.js.map b/dist/lips.js.map index 12dbb8e3..f72773ca 100644 --- a/dist/lips.js.map +++ b/dist/lips.js.map @@ -1 +1 @@ -{"version":3,"file":"lips.js","sources":["../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../node_modules/cbor-x/decode.js","../node_modules/cbor-x/encode.js","../node_modules/lzjb-pack/index.cjs","../node_modules/unfetch/dist/unfetch.module.js","../src/lips.js","../node_modules/rollup-plugin-node-polyfills/polyfills/empty.js","../node_modules/rollup-plugin-node-polyfills/polyfills/path.js"],"sourcesContent":["export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];\n if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];\n }\n\n if (method == null) method = iterable[\"@@asyncIterator\"];\n if (method == null) method = iterable[\"@@iterator\"];\n if (method == null) throw new TypeError(\"Object is not async iterable\");\n return method.call(iterable);\n}","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function _awaitAsyncGenerator(value) {\n return new AwaitValue(value);\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nAsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator.js\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = require(\"regenerator-runtime\");\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return ''\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","\"use strict\"\r\nlet decoder\r\ntry {\r\n\tdecoder = new TextDecoder()\r\n} catch(error) {}\r\nlet src\r\nlet srcEnd\r\nlet position = 0\r\nlet alreadySet\r\nconst EMPTY_ARRAY = []\r\nconst RECORD_TAG_ID = 0x69\r\nconst STOP_CODE = {}\r\nlet strings = EMPTY_ARRAY\r\nlet stringPosition = 0\r\nlet currentDecoder = {}\r\nlet currentStructures\r\nlet srcString\r\nlet srcStringStart = 0\r\nlet srcStringEnd = 0\r\nlet referenceMap\r\nlet currentExtensions = []\r\nlet dataView\r\nlet restoreMapsAsObject\r\nlet defaultOptions = {\r\n\tuseRecords: false,\r\n\tmapsAsObjects: true\r\n}\r\nlet sequentialMode = false\r\n\r\nexport class Decoder {\r\n\tconstructor(options) {\r\n\t\tif (options) {\r\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\r\n\t\t\t\toptions.mapsAsObjects = true\r\n\t\t\tif (options.getStructures && !options.structures)\r\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\r\n\t\t}\r\n\t\tObject.assign(this, options)\r\n\t}\r\n\tdecode(source, end) {\r\n\t\tif (src) {\r\n\t\t\t// re-entrant execution, save the state and restore it after we do this decode\r\n\t\t\treturn saveState(() => {\r\n\t\t\t\tclearSource()\r\n\t\t\t\treturn this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end)\r\n\t\t\t})\r\n\t\t}\r\n\t\tsrcEnd = end > -1 ? end : source.length\r\n\t\tposition = 0\r\n\t\tstringPosition = 0\r\n\t\tsrcStringEnd = 0\r\n\t\tsrcString = null\r\n\t\tstrings = EMPTY_ARRAY\r\n\t\tsrc = source\r\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\r\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\r\n\t\t// new ones\r\n\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\r\n\t\tif (this) {\r\n\t\t\tcurrentDecoder = this\r\n\t\t\tif (this.structures) {\r\n\t\t\t\tcurrentStructures = this.structures\r\n\t\t\t\treturn checkedRead()\r\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\r\n\t\t\t\tcurrentStructures = []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcurrentDecoder = defaultOptions\r\n\t\t\tif (!currentStructures || currentStructures.length > 0)\r\n\t\t\t\tcurrentStructures = []\r\n\t\t}\r\n\t\treturn checkedRead()\r\n\t}\r\n\tdecodeMultiple(source, forEach) {\r\n\t\tlet values, lastPosition = 0\r\n\t\ttry {\r\n\t\t\tlet size = source.length\r\n\t\t\tsequentialMode = true\r\n\t\t\tlet value = this ? this.decode(source, size) : defaultDecoder.decode(source, size)\r\n\t\t\tif (forEach) {\r\n\t\t\t\tforEach(value)\r\n\t\t\t\twhile(position < size) {\r\n\t\t\t\t\tlastPosition = position\r\n\t\t\t\t\tif (forEach(checkedRead()) === false) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalues = [ value ]\r\n\t\t\t\twhile(position < size) {\r\n\t\t\t\t\tlastPosition = position\r\n\t\t\t\t\tvalues.push(checkedRead())\r\n\t\t\t\t}\r\n\t\t\t\treturn values\r\n\t\t\t}\r\n\t\t} catch(error) {\r\n\t\t\terror.lastPosition = lastPosition\r\n\t\t\terror.values = values\r\n\t\t\tthrow error\r\n\t\t} finally {\r\n\t\t\tsequentialMode = false\r\n\t\t\tclearSource()\r\n\t\t}\r\n\t}\r\n}\r\nexport function getPosition() {\r\n\treturn position\r\n}\r\nexport function checkedRead() {\r\n\ttry {\r\n\t\tlet result = read()\r\n\t\tif (position == srcEnd) {\r\n\t\t\t// finished reading this source, cleanup references\r\n\t\t\tcurrentStructures = null\r\n\t\t\tsrc = null\r\n\t\t\tif (referenceMap)\r\n\t\t\t\treferenceMap = null\r\n\t\t} else if (position > srcEnd) {\r\n\t\t\t// over read\r\n\t\t\tlet error = new Error('Unexpected end of CBOR data')\r\n\t\t\terror.incomplete = true\r\n\t\t\tthrow error\r\n\t\t} else if (!sequentialMode) {\r\n\t\t\tthrow new Error('Data read, but end of buffer not reached')\r\n\t\t}\r\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\r\n\t\treturn result\r\n\t} catch(error) {\r\n\t\tclearSource()\r\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {\r\n\t\t\terror.incomplete = true\r\n\t\t}\r\n\t\tthrow error\r\n\t}\r\n}\r\n\r\nexport function read() {\r\n\tlet token = src[position++]\r\n\tlet majorType = token >> 5\r\n\ttoken = token & 0x1f\r\n\tif (token > 0x17) {\r\n\t\tswitch (token) {\r\n\t\t\tcase 0x18:\r\n\t\t\t\ttoken = src[position++]\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x19:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\treturn getFloat16()\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint16(position)\r\n\t\t\t\tposition += 2\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1a:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat32(position)\r\n\t\t\t\t\tif (currentDecoder.useFloat32 > 2) {\r\n\t\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\r\n\t\t\t\t\t}\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint32(position)\r\n\t\t\t\tposition += 4\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1b:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat64(position)\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\tif (currentDecoder.uint64AsNumber)\r\n\t\t\t\t\treturn src[position++] * 0x100000000000000 + src[position++] * 0x1000000000000 + src[position++] * 0x10000000000 + src[position++] * 0x100000000 +\r\n\t\t\t\t\t\tsrc[position++] * 0x1000000 + (src[position++] << 16) + (src[position++] << 8) + src[position++]\r\n\t\t\t\ttoken = dataView.getBigUint64(position)\r\n\t\t\t\tposition += 8\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1f: \r\n\t\t\t\t// indefinite length\r\n\t\t\t\tswitch(majorType) {\r\n\t\t\t\t\tcase 2: // byte string\r\n\t\t\t\t\tcase 3: // text string\r\n\t\t\t\t\tcase 4: // array\r\n\t\t\t\t\t\tlet array = []\r\n\t\t\t\t\t\tlet value, i = 0\r\n\t\t\t\t\t\twhile ((value = read()) != STOP_CODE) {\r\n\t\t\t\t\t\t\tarray[i++] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn majorType == 4 ? array : majorType == 3 ? array.join('') : Buffer.concat(array)\r\n\t\t\t\t\tcase 5: // map\r\n\t\t\t\t\t\tlet key\r\n\t\t\t\t\t\tif (currentDecoder.mapsAsObjects) {\r\n\t\t\t\t\t\t\tlet object = {}\r\n\t\t\t\t\t\t\twhile ((key = readKey()) != STOP_CODE)\r\n\t\t\t\t\t\t\t\tobject[key] = read()\r\n\t\t\t\t\t\t\treturn object\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (restoreMapsAsObject) {\r\n\t\t\t\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\r\n\t\t\t\t\t\t\t\trestoreMapsAsObject = false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlet map = new Map()\r\n\t\t\t\t\t\t\twhile ((key = read()) != STOP_CODE)\r\n\t\t\t\t\t\t\t\tmap.set(key, read())\r\n\t\t\t\t\t\t\treturn map\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tcase 7:\r\n\t\t\t\t\t\treturn STOP_CODE\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthrow new Error('Invalid major type for indefinite length ' + majorType)\r\n\t\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t}\r\n\t}\r\n\tswitch (majorType) {\r\n\t\tcase 0: // positive int\r\n\t\t\treturn token\r\n\t\tcase 1: // negative int\r\n\t\t\treturn ~token\r\n\t\tcase 2: // buffer\r\n\t\t\treturn readBin(token)\r\n\t\tcase 3: // string\r\n\t\t\tif (srcStringEnd >= position) {\r\n\t\t\t\treturn srcString.slice(position - srcStringStart, (position += token) - srcStringStart)\r\n\t\t\t}\r\n\t\t\tif (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\r\n\t\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\r\n\t\t\t\tlet string = token < 16 ? shortStringInJS(token) : longStringInJS(token)\r\n\t\t\t\tif (string != null)\r\n\t\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\treturn readFixedString(token)\r\n\t\tcase 4: // array\r\n\t\t\tlet array = new Array(token)\r\n\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\tarray[i] = read()\r\n\t\t\t}\r\n\t\t\treturn array\r\n\t\tcase 5: // map\r\n\t\t\tif (currentDecoder.mapsAsObjects) {\r\n\t\t\t\tlet object = {}\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tobject[readKey()] = read()\r\n\t\t\t\t}\r\n\t\t\t\treturn object\r\n\t\t\t} else {\r\n\t\t\t\tif (restoreMapsAsObject) {\r\n\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\r\n\t\t\t\t\trestoreMapsAsObject = false\r\n\t\t\t\t}\r\n\t\t\t\tlet map = new Map()\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tmap.set(read(), read())\r\n\t\t\t\t}\r\n\t\t\t\treturn map\r\n\t\t\t}\r\n\t\tcase 6: // extension\r\n\t\t\tif ((token >> 8) == RECORD_TAG_ID) { // record structures\r\n\t\t\t\tlet structure = currentStructures[token & 0xff]\r\n\t\t\t\tif (structure) {\r\n\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\treturn structure.read()\r\n\t\t\t\t} else if (currentDecoder.getStructures) {\r\n\t\t\t\t\tlet updatedStructures = saveState(() => {\r\n\t\t\t\t\t\t// save the state in case getStructures modifies our buffer\r\n\t\t\t\t\t\tsrc = null\r\n\t\t\t\t\t\treturn currentDecoder.getStructures()\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (currentStructures === true)\r\n\t\t\t\t\t\tcurrentDecoder.structures = currentStructures = updatedStructures\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tcurrentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures))\r\n\t\t\t\t\tstructure = currentStructures[token & 0xff]\r\n\t\t\t\t\tif (structure) {\r\n\t\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\t\treturn structure.read()\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\treturn token\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn token\r\n\t\t\t} else {\r\n\t\t\t\tlet extension = currentExtensions[token]\r\n\t\t\t\tif (extension) {\r\n\t\t\t\t\tif (extension.handlesRead)\r\n\t\t\t\t\t\treturn extension(read)\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn extension(read())\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\treturn new Tag(read())\r\n\t\t\t}\r\n\t\tcase 7: // fixed value\r\n\t\t\tswitch (token) {\r\n\t\t\t\tcase 0x14: return false\r\n\t\t\t\tcase 0x15: return true\r\n\t\t\t\tcase 0x16: return null\r\n\t\t\t\tcase 0x17: return; // undefined\r\n\t\t\t\tcase 0x1f: \r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t\t}\r\n\t\tdefault: // negative int\r\n\t\t\tif (isNaN(token)) {\r\n\t\t\t\tlet error = new Error('Unexpected end of CBOR data')\r\n\t\t\t\terror.incomplete = true\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t\tthrow new Error('Unknown CBOR token ' + token)\r\n\t}\r\n}\r\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\r\nfunction createStructureReader(structure) {\r\n\tlet l = structure.length\r\n\tfunction readObject() {\r\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\r\n\t\tif (readObject.count++ > 2) {\r\n\t\t\tthis.read = (new Function('a', 'r', 'return function(){a();return {' + structure.map(key => validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '}}'))(readArrayHeader, read)\r\n\t\t\treturn this.read()\r\n\t\t}\r\n\t\treadArrayHeader(l)\r\n\t\tlet object = {}\r\n\t\tfor (let i = 0; i < l; i++) {\r\n\t\t\tlet key = structure[i]\r\n\t\t\tobject[key] = read()\r\n\t\t}\r\n\t\treturn object\r\n\t}\r\n\treadObject.count = 0\r\n\treturn readObject\r\n}\r\n\r\nfunction readArrayHeader(expectedLength) {\r\n\t// consume the array header, TODO: check expected length\r\n\tlet token = src[position++]\r\n\t//let majorType = token >> 5\r\n\ttoken = token & 0x1f\r\n\tif (token > 0x17) {\r\n\t\tswitch (token) {\r\n\t\t\tcase 0x18: position++\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x19: position += 2\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1a: position += 4\r\n\t\t}\r\n\t}\r\n}\r\n\r\nlet readFixedString = readStringJS\r\nlet readString8 = readStringJS\r\nlet readString16 = readStringJS\r\nlet readString32 = readStringJS\r\n\r\nexport function setExtractor(extractStrings) {\r\n\treadFixedString = readString(1)\r\n\treadString8 = readString(2)\r\n\treadString16 = readString(3)\r\n\treadString32 = readString(5)\r\n\tfunction readString(headerLength) {\r\n\t\treturn function readString(length) {\r\n\t\t\tlet string = strings[stringPosition++]\r\n\t\t\tif (string == null) {\r\n\t\t\t\tlet extraction = extractStrings(position, srcEnd, length, src)\r\n\t\t\t\tif (typeof extraction == 'string') {\r\n\t\t\t\t\tstring = extraction\r\n\t\t\t\t\tstrings = EMPTY_ARRAY\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstrings = extraction\r\n\t\t\t\t\tstringPosition = 1\r\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\r\n\t\t\t\t\tstring = strings[0]\r\n\t\t\t\t\tif (string === undefined)\r\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet srcStringLength = string.length\r\n\t\t\tif (srcStringLength <= length) {\r\n\t\t\t\tposition += length\r\n\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\tsrcString = string\r\n\t\t\tsrcStringStart = position\r\n\t\t\tsrcStringEnd = position + srcStringLength\r\n\t\t\tposition += length\r\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\r\n\t\t}\r\n\t}\r\n}\r\nfunction readStringJS(length) {\r\n\tlet result\r\n\tif (length < 16) {\r\n\t\tif (result = shortStringInJS(length))\r\n\t\t\treturn result\r\n\t}\r\n\tif (length > 64 && decoder)\r\n\t\treturn decoder.decode(src.subarray(position, position += length))\r\n\tconst end = position + length\r\n\tconst units = []\r\n\tresult = ''\r\n\twhile (position < end) {\r\n\t\tconst byte1 = src[position++]\r\n\t\tif ((byte1 & 0x80) === 0) {\r\n\t\t\t// 1 byte\r\n\t\t\tunits.push(byte1)\r\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\r\n\t\t\t// 2 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\r\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\r\n\t\t\t// 3 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\r\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\r\n\t\t\t// 4 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tconst byte4 = src[position++] & 0x3f\r\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\r\n\t\t\tif (unit > 0xffff) {\r\n\t\t\t\tunit -= 0x10000\r\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\r\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\r\n\t\t\t}\r\n\t\t\tunits.push(unit)\r\n\t\t} else {\r\n\t\t\tunits.push(byte1)\r\n\t\t}\r\n\r\n\t\tif (units.length >= 0x1000) {\r\n\t\t\tresult += fromCharCode.apply(String, units)\r\n\t\t\tunits.length = 0\r\n\t\t}\r\n\t}\r\n\r\n\tif (units.length > 0) {\r\n\t\tresult += fromCharCode.apply(String, units)\r\n\t}\r\n\r\n\treturn result\r\n}\r\nlet fromCharCode = String.fromCharCode\r\nfunction longStringInJS(length) {\r\n\tlet start = position\r\n\tlet bytes = new Array(length)\r\n\tfor (let i = 0; i < length; i++) {\r\n\t\tconst byte = src[position++];\r\n\t\tif ((byte & 0x80) > 0) {\r\n\t\t\tposition = start\r\n \t\t\treturn\r\n \t\t}\r\n \t\tbytes[i] = byte\r\n \t}\r\n \treturn fromCharCode.apply(String, bytes)\r\n}\r\nfunction shortStringInJS(length) {\r\n\tif (length < 4) {\r\n\t\tif (length < 2) {\r\n\t\t\tif (length === 0)\r\n\t\t\t\treturn ''\r\n\t\t\telse {\r\n\t\t\t\tlet a = src[position++]\r\n\t\t\t\tif ((a & 0x80) > 1) {\r\n\t\t\t\t\tposition -= 1\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet a = src[position++]\r\n\t\t\tlet b = src[position++]\r\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\r\n\t\t\t\tposition -= 2\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 3)\r\n\t\t\t\treturn fromCharCode(a, b)\r\n\t\t\tlet c = src[position++]\r\n\t\t\tif ((c & 0x80) > 0) {\r\n\t\t\t\tposition -= 3\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c)\r\n\t\t}\r\n\t} else {\r\n\t\tlet a = src[position++]\r\n\t\tlet b = src[position++]\r\n\t\tlet c = src[position++]\r\n\t\tlet d = src[position++]\r\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\r\n\t\t\tposition -= 4\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (length < 6) {\r\n\t\t\tif (length === 4)\r\n\t\t\t\treturn fromCharCode(a, b, c, d)\r\n\t\t\telse {\r\n\t\t\t\tlet e = src[position++]\r\n\t\t\t\tif ((e & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 5\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\r\n\t\t\t}\r\n\t\t} else if (length < 8) {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\r\n\t\t\t\tposition -= 6\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 7)\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\r\n\t\t\tlet g = src[position++]\r\n\t\t\tif ((g & 0x80) > 0) {\r\n\t\t\t\tposition -= 7\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\r\n\t\t} else {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tlet g = src[position++]\r\n\t\t\tlet h = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\r\n\t\t\t\tposition -= 8\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 10) {\r\n\t\t\t\tif (length === 8)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet i = src[position++]\r\n\t\t\t\t\tif ((i & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 9\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\r\n\t\t\t\t}\r\n\t\t\t} else if (length < 12) {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 10\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 11)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tif ((k & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 11\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\r\n\t\t\t} else {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tlet l = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 12\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 14) {\r\n\t\t\t\t\tif (length === 12)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\r\n\t\t\t\t\t\t\tposition -= 13\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\tlet n = src[position++]\r\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 14\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (length < 15)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\r\n\t\t\t\t\tlet o = src[position++]\r\n\t\t\t\t\tif ((o & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 15\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction readBin(length) {\r\n\treturn currentDecoder.copyBuffers ?\r\n\t\t// specifically use the copying slice (not the node one)\r\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\r\n\t\tsrc.subarray(position, position += length)\r\n}\r\nfunction readExt(length) {\r\n\tlet type = src[position++]\r\n\tif (currentExtensions[type]) {\r\n\t\treturn currentExtensions[type](src.subarray(position, position += length))\r\n\t}\r\n\telse\r\n\t\tthrow new Error('Unknown extension type ' + type)\r\n}\r\n\r\nfunction getFloat16() {\r\n\tlet byte0 = src[position++]\r\n\tlet byte1 = src[position++]\r\n\tlet half = (byte0 << 8) + byte1\r\n\tlet exp = (half >> 10) & 0x1f\r\n\tlet mant = half & 0x3ff\r\n\tlet val\r\n\tif (exp == 0) val = Math.exp(mant, -24)\r\n\telse if (exp != 31) val = Math.exp(mant + 1024, exp - 25)\r\n\telse val = mant == 0 ? Infinity : NaN\r\n\treturn half & 0x8000 ? -val : val\r\n}\r\n\r\nlet keyCache = new Array(4096)\r\nfunction readKey() {\r\n\tlet length = src[position++]\r\n\tif (length >= 0x60 && length < 0x78) {\r\n\t\t// fixstr, potentially use key cache\r\n\t\tlength = length - 0x60\r\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\r\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\r\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\r\n\t\t\treturn readFixedString(length)\r\n\t} else { // not cacheable, go back and do a standard read\r\n\t\tposition--\r\n\t\treturn read()\r\n\t}\r\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\r\n\tlet entry = keyCache[key]\r\n\tlet checkPosition = position\r\n\tlet end = position + length - 3\r\n\tlet chunk\r\n\tlet i = 0\r\n\tif (entry && entry.bytes == length) {\r\n\t\twhile (checkPosition < end) {\r\n\t\t\tchunk = dataView.getUint32(checkPosition)\r\n\t\t\tif (chunk != entry[i++]) {\r\n\t\t\t\tcheckPosition = 0x70000000\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tcheckPosition += 4\r\n\t\t}\r\n\t\tend += 3\r\n\t\twhile (checkPosition < end) {\r\n\t\t\tchunk = src[checkPosition++]\r\n\t\t\tif (chunk != entry[i++]) {\r\n\t\t\t\tcheckPosition = 0x70000000\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (checkPosition === end) {\r\n\t\t\tposition = checkPosition\r\n\t\t\treturn entry.string\r\n\t\t}\r\n\t\tend -= 3\r\n\t\tcheckPosition = position\r\n\t}\r\n\tentry = []\r\n\tkeyCache[key] = entry\r\n\tentry.bytes = length\r\n\twhile (checkPosition < end) {\r\n\t\tchunk = dataView.getUint32(checkPosition)\r\n\t\tentry.push(chunk)\r\n\t\tcheckPosition += 4\r\n\t}\r\n\tend += 3\r\n\twhile (checkPosition < end) {\r\n\t\tchunk = src[checkPosition++]\r\n\t\tentry.push(chunk)\r\n\t}\r\n\t// for small blocks, avoiding the overhead of the extract call is helpful\r\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\r\n\tif (string != null)\r\n\t\treturn entry.string = string\r\n\treturn entry.string = readFixedString(length)\r\n}\r\n\r\nexport class Tag {\r\n\tconstructor(value) {\r\n\t\tthis.value = value\r\n\t}\r\n}\r\n\r\nlet glbl = typeof window == 'object' ? window : global\r\n\r\ncurrentExtensions[0] = (dateString) => {\r\n\t// string date extension\r\n\treturn new Date(dateString)\r\n}\r\n\r\ncurrentExtensions[1] = (epochSec) => {\r\n\t// numeric date extension\r\n\treturn new Date(epochSec * 1000)\r\n}\r\n\r\ncurrentExtensions[2] = (buffer) => {\r\n\t// bigint extension\r\n\treturn new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0)\r\n}\r\n\r\ncurrentExtensions[3] = (buffer) => {\r\n\t// negative bigint extension\r\n\treturn BigInt(-1) - (new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0))\r\n}\r\n\r\n// the registration of the record definition extension (tag 105)\r\nconst recordDefinition = () => {\r\n\tlet definition = read()\r\n\tlet structure = definition[0]\r\n\tlet id = definition[1]\r\n\tcurrentStructures[id & 0xff] = structure\r\n\tstructure.read = createStructureReader(structure)\r\n\tlet object = {}\r\n\tfor (let i = 2,l = definition.length; i < l; i++) {\r\n\t\tlet key = structure[i - 2]\r\n\t\tobject[key] = definition[i]\r\n\t}\r\n\treturn object\r\n}\r\n\r\nrecordDefinition.handlesRead = true\r\ncurrentExtensions[RECORD_TAG_ID] = recordDefinition\r\n\r\ncurrentExtensions[27] = (data) => { // http://cbor.schmorp.de/generic-object\r\n\treturn (glbl[data[0]] || Error)(data[1], data[2])\r\n}\r\n\r\ncurrentExtensions[40009] = (id) => {\r\n\t// id extension (for structured clones)\r\n\tif (!referenceMap)\r\n\t\treferenceMap = new Map()\r\n\tlet token = src[position]\r\n\tlet target\r\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\r\n\t// ahead past references to record structure definitions\r\n\tif ((token >> 5) == 4)\r\n\t\ttarget = []\r\n\telse\r\n\t\ttarget = {}\r\n\r\n\tlet refEntry = { target } // a placeholder object\r\n\treferenceMap.set(id, refEntry)\r\n\tlet targetProperties = read() // read the next value as the target object to id\r\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\r\n\t\treturn Object.assign(target, targetProperties)\r\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\r\n\treturn targetProperties // no cycle, can just use the returned read object\r\n}\r\n\r\ncurrentExtensions[40010] = (id) => {\r\n\t// pointer extension (for structured clones)\r\n\tlet refEntry = referenceMap.get(id)\r\n\trefEntry.used = true\r\n\treturn refEntry.target\r\n}\r\n\r\ncurrentExtensions[258] = (array) => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\r\n(currentExtensions[259] = (read) => {\r\n\t// https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\r\n\t// for decoding as a standard Map\r\n\tif (currentDecoder.mapsAsObjects) {\r\n\t\tcurrentDecoder.mapsAsObjects = false\r\n\t\trestoreMapsAsObject = true\r\n\t}\r\n\treturn read()\r\n}).handlesRead = true\r\n\r\n\r\nexport const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'].map(type => type + 'Array')\r\nconst typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82]\r\nfor (let i = 0; i < typedArrays.length; i++) {\r\n\tregisterTypedArray(typedArrays[i], typedArrayTags[i])\r\n}\r\nfunction registerTypedArray(typedArrayName, tag) {\r\n\tcurrentExtensions[tag] = (buffer) => {\r\n\t\tif (!typedArrayName)\r\n\t\t\tthrow new Error('Could not find typed array for code ' + typeCode)\r\n\t\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\r\n\t\treturn new glbl[typedArrayName](Uint8Array.prototype.slice.call(buffer, 0).buffer)\r\n\t}\r\n}\r\n\r\nfunction saveState(callback) {\r\n\tlet savedSrcEnd = srcEnd\r\n\tlet savedPosition = position\r\n\tlet savedStringPosition = stringPosition\r\n\tlet savedSrcStringStart = srcStringStart\r\n\tlet savedSrcStringEnd = srcStringEnd\r\n\tlet savedSrcString = srcString\r\n\tlet savedStrings = strings\r\n\tlet savedReferenceMap = referenceMap\r\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\r\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\r\n\tlet savedStructures = currentStructures\r\n\tlet savedDecoder = currentDecoder\r\n\tlet savedSequentialMode = sequentialMode\r\n\tlet value = callback()\r\n\tsrcEnd = savedSrcEnd\r\n\tposition = savedPosition\r\n\tstringPosition = savedStringPosition\r\n\tsrcStringStart = savedSrcStringStart\r\n\tsrcStringEnd = savedSrcStringEnd\r\n\tsrcString = savedSrcString\r\n\tstrings = savedStrings\r\n\treferenceMap = savedReferenceMap\r\n\tsrc = savedSrc\r\n\tsequentialMode = savedSequentialMode\r\n\tcurrentStructures = savedStructures\r\n\tcurrentDecoder = savedDecoder\r\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\r\n\treturn value\r\n}\r\nexport function clearSource() {\r\n\tsrc = null\r\n\treferenceMap = null\r\n\tcurrentStructures = null\r\n}\r\n\r\nexport function addExtension(extension) {\r\n\tcurrentExtensions[extension.tag] = extension.decode\r\n}\r\n\r\nexport let mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\r\nfor (let i = 0; i < 256; i++) {\r\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\r\n}\r\nexport const useRecords = false\r\nexport const mapsAsObjects = true\r\nlet defaultDecoder = new Decoder({ useRecords: false })\r\nexport const decode = defaultDecoder.decode\r\nexport const decodeMultiple = defaultDecoder.decodeMultiple\r\nexport const FLOAT32_OPTIONS = {\r\n\tNEVER: 0,\r\n\tALWAYS: 1,\r\n\tDECIMAL_ROUND: 3,\r\n\tDECIMAL_FIT: 4\r\n}\r\n","import { Decoder, mult10, Tag, typedArrays, addExtension as decodeAddExtension } from './decode.js'\r\nlet textEncoder\r\ntry {\r\n\ttextEncoder = new TextEncoder()\r\n} catch (error) {}\r\nlet extensions, extensionClasses\r\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\r\nconst ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array\r\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\r\nconst RECORD_STARTING_ID_PREFIX = 0x69 // tag 105/0x69\r\nconst MAX_STRUCTURES = 0x100\r\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\r\nlet target\r\nlet targetView\r\nlet position = 0\r\nlet safeEnd\r\nconst RECORD_SYMBOL = Symbol('record-id')\r\nexport class Encoder extends Decoder {\r\n\tconstructor(options) {\r\n\t\tsuper(options)\r\n\t\tthis.offset = 0\r\n\t\tlet typeBuffer\r\n\t\tlet start\r\n\t\tlet sharedStructures\r\n\t\tlet hasSharedUpdate\r\n\t\tlet structures\r\n\t\tlet referenceMap\r\n\t\tlet lastSharedStructuresLength = 0\r\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {\r\n\t\t\treturn target.utf8Write(string, position, maxBytes)\r\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\r\n\t\t\tfunction(string, position) {\r\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\r\n\t\t\t} : false\r\n\r\n\t\tlet encoder = this\r\n\t\tlet maxSharedStructures = 64\r\n\t\tlet isSequential = options && options.sequential\r\n\t\tif (isSequential) {\r\n\t\t\tmaxSharedStructures = 0\r\n\t\t\tthis.structures = []\r\n\t\t}\r\n\t\tlet recordIdsToRemove = []\r\n\t\tlet transitionsCount = 0\r\n\t\tlet serializationsSinceTransitionRebuild = 0\r\n\t\tif (this.structures && this.structures.length > maxSharedStructures) {\r\n\t\t\tthrow new Error('Too many shared structures')\r\n\t\t}\r\n\r\n\t\tthis.encode = function(value) {\r\n\t\t\tif (!target) {\r\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, 8192)\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tsafeEnd = target.length - 10\r\n\t\t\tif (safeEnd - position < 0x800) {\r\n\t\t\t\t// don't start too close to the end, \r\n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, target.length)\r\n\t\t\t\tsafeEnd = target.length - 10\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tstart = position\r\n\t\t\treferenceMap = encoder.structuredClone ? new Map() : null\r\n\t\t\tsharedStructures = encoder.structures\r\n\t\t\tif (sharedStructures) {\r\n\t\t\t\tif (sharedStructures.uninitialized)\r\n\t\t\t\t\tencoder.structures = sharedStructures = encoder.getStructures()\r\n\t\t\t\tlet sharedStructuresLength = sharedStructures.length\r\n\t\t\t\tif (sharedStructuresLength > maxSharedStructures && !isSequential)\r\n\t\t\t\t\tsharedStructuresLength = maxSharedStructures\r\n\t\t\t\tif (!sharedStructures.transitions) {\r\n\t\t\t\t\t// rebuild our structure transitions\r\n\t\t\t\t\tsharedStructures.transitions = Object.create(null)\r\n\t\t\t\t\tfor (let i = 0; i < sharedStructuresLength; i++) {\r\n\t\t\t\t\t\tlet keys = sharedStructures[i]\r\n\t\t\t\t\t\tif (!keys)\r\n\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\tlet nextTransition, transition = sharedStructures.transitions\r\n\t\t\t\t\t\tfor (let i =0, l = keys.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastSharedStructuresLength = sharedStructures.length\r\n\t\t\t\t}\r\n\t\t\t\tif (!isSequential)\r\n\t\t\t\t\tsharedStructures.nextId = sharedStructuresLength\r\n\t\t\t}\r\n\t\t\tif (hasSharedUpdate)\r\n\t\t\t\thasSharedUpdate = false\r\n\t\t\tstructures = sharedStructures || []\r\n\t\t\ttry {\r\n\t\t\t\tencode(value)\r\n\t\t\t\tencoder.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\r\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\r\n\t\t\t\t\tposition += referenceMap.idsToInsert.length * 8\r\n\t\t\t\t\tif (position > safeEnd)\r\n\t\t\t\t\t\tmakeRoom(position)\r\n\t\t\t\t\tencoder.offset = position\r\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), referenceMap.idsToInsert)\r\n\t\t\t\t\treferenceMap = null\r\n\t\t\t\t\treturn serialized\r\n\t\t\t\t}\r\n\t\t\t\treturn target.subarray(start, position) // position can change if we call encode again in saveStructures, so we get the buffer now\r\n\t\t\t} finally {\r\n\t\t\t\tif (sharedStructures) {\r\n\t\t\t\t\tif (serializationsSinceTransitionRebuild < 10)\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild++\r\n\t\t\t\t\tif (transitionsCount > 10000) {\r\n\t\t\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\r\n\t\t\t\t\t\tsharedStructures.transitions = null\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild = 0\r\n\t\t\t\t\t\ttransitionsCount = 0\r\n\t\t\t\t\t\tif (recordIdsToRemove.length > 0)\r\n\t\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\r\n\t\t\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\r\n\t\t\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = undefined\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (hasSharedUpdate && encoder.saveStructures) {\r\n\t\t\t\t\t\tif (encoder.structures.length > maxSharedStructures) {\r\n\t\t\t\t\t\t\tencoder.structures = encoder.structures.slice(0, maxSharedStructures)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (encoder.saveStructures(encoder.structures, lastSharedStructuresLength) === false) {\r\n\t\t\t\t\t\t\t// get updated structures and try again if the update failed\r\n\t\t\t\t\t\t\tencoder.structures = encoder.getStructures() || []\r\n\t\t\t\t\t\t\treturn encoder.encode(value)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlastSharedStructuresLength = encoder.structures.length\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst encode = (value) => {\r\n\t\t\tif (position > safeEnd)\r\n\t\t\t\ttarget = makeRoom(position)\r\n\r\n\t\t\tvar type = typeof value\r\n\t\t\tvar length\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tlet strLength = value.length\r\n\t\t\t\tlet headerSize\r\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\r\n\t\t\t\tif (strLength < 0x20) {\r\n\t\t\t\t\theaderSize = 1\r\n\t\t\t\t} else if (strLength < 0x100) {\r\n\t\t\t\t\theaderSize = 2\r\n\t\t\t\t} else if (strLength < 0x10000) {\r\n\t\t\t\t\theaderSize = 3\r\n\t\t\t\t} else {\r\n\t\t\t\t\theaderSize = 5\r\n\t\t\t\t}\r\n\t\t\t\tlet maxBytes = strLength * 3\r\n\t\t\t\tif (position + maxBytes > safeEnd)\r\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\r\n\r\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\r\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\r\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\r\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\r\n\t\t\t\t\t\tif (c1 < 0x80) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\r\n\t\t\t\t\t\t} else if (c1 < 0x800) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\r\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\r\n\t\t\t\t\t\t\ti++\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlength = strPosition - position - headerSize\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize, maxBytes)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\ttarget[position++] = 0x60 | length\r\n\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\tif (headerSize < 2) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x78\r\n\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\tif (headerSize < 3) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x79\r\n\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (headerSize < 5) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x7a\r\n\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t}\r\n\t\t\t\tposition += length\r\n\t\t\t} else if (type === 'number') {\r\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\r\n\t\t\t\t\t// positive uint\r\n\t\t\t\t\tif (value < 0x18) {\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x18\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x19\r\n\t\t\t\t\t\ttarget[position++] = value >> 8\r\n\t\t\t\t\t\ttarget[position++] = value & 0xff\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x1a\r\n\t\t\t\t\t\ttargetView.setUint32(position, value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\r\n\t\t\t\t\tif (value >= -0x18) {\r\n\t\t\t\t\t\ttarget[position++] = 0x1f - value\r\n\t\t\t\t\t} else if (value >= -0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x38\r\n\t\t\t\t\t\ttarget[position++] = ~value\r\n\t\t\t\t\t} else if (value >= -0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x39\r\n\t\t\t\t\t\ttargetView.setUint16(position, ~value)\r\n\t\t\t\t\t\tposition += 2\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x3a\r\n\t\t\t\t\t\ttargetView.setUint32(position, ~value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet useFloat32\r\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\r\n\t\t\t\t\t\ttarget[position++] = 0xfa\r\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\r\n\t\t\t\t\t\tlet xShifted\r\n\t\t\t\t\t\tif (useFloat32 < 4 ||\r\n\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0xfb\r\n\t\t\t\t\ttargetView.setFloat64(position, value)\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'object') {\r\n\t\t\t\tif (!value)\r\n\t\t\t\t\ttarget[position++] = 0xf6\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (referenceMap) {\r\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\r\n\t\t\t\t\t\tif (referee) {\r\n\t\t\t\t\t\t\tif (!referee.id) {\r\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\r\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\ttarget[position++] = 40010 >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = 40010 & 0xff\r\n\t\t\t\t\t\t\ttarget[position++] = 0x1a // uint32\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else \r\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet constructor = value.constructor\r\n\t\t\t\t\tif (constructor === Object) {\r\n\t\t\t\t\t\twriteObject(value, true)\r\n\t\t\t\t\t} else if (constructor === Array) {\r\n\t\t\t\t\t\tlength = value.length\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twriteArrayHeader(length)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\t\t\t\tencode(value[i])\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (constructor === Map) {\r\n\t\t\t\t\t\tif (this.mapsAsObjects ? this.useTag259ForMaps !== false : this.useTag259ForMaps) {\r\n\t\t\t\t\t\t\t// use Tag 259 (https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md) for maps if the user wants it that way\r\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\ttarget[position++] = 1\r\n\t\t\t\t\t\t\ttarget[position++] = 3\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlength = value.size\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\r\n\t\t\t\t\t\t\tencode(key)\r\n\t\t\t\t\t\t\tencode(entryValue)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\t\r\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\r\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\r\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\r\n\t\t\t\t\t\t\t\tlet tag = extension.tag\r\n\t\t\t\t\t\t\t\tif (tag < 0x18) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xc0 | tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x100) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x10000) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag >> 8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag & 0xff\r\n\t\t\t\t\t\t\t\t} else if (tag > -1) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xda\r\n\t\t\t\t\t\t\t\t\ttargetView.setUint32(position, tag)\r\n\t\t\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\t\t} // else undefined, don't write tag\r\n\t\t\t\t\t\t\t\textension.encode.call(this, value, encode, makeRoom)\r\n\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (value[Symbol.iterator]) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x9f // indefinite length array\r\n\t\t\t\t\t\t\tfor (let entry of value) {\r\n\t\t\t\t\t\t\t\tencode(entry)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttarget[position++] = 0xff // stop-code\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// no extension found, write as object\r\n\t\t\t\t\t\twriteObject(value, !value.hasOwnProperty) // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'boolean') {\r\n\t\t\t\ttarget[position++] = value ? 0xf5 : 0xf4\r\n\t\t\t} else if (type === 'bigint') {\r\n\t\t\t\tif (value < (BigInt(1)<= 0) {\r\n\t\t\t\t\t// use an unsigned int as long as it fits\r\n\t\t\t\t\ttarget[position++] = 0x1b\r\n\t\t\t\t\ttargetView.setBigUint64(position, value)\r\n\t\t\t\t} else if (value > -(BigInt(1)< {\r\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet length = keys.length\r\n\t\t\tif (length < 0x18) {\r\n\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t} else if (length < 0x100) {\r\n\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\ttarget[position++] = length\r\n\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t} else {\r\n\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\tposition += 4\r\n\t\t\t}\r\n\t\t\tlet key\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tencode(key = keys[i])\r\n\t\t\t\tencode(object[key])\r\n\t\t\t}\r\n\t\t} :\r\n\t\t(object, safePrototype) => {\r\n\t\t\ttarget[position++] = 0xb9 // always use map 16, so we can preallocate and set the length afterwards\r\n\t\t\tlet objectOffset = position - start\r\n\t\t\tposition += 2\r\n\t\t\tlet size = 0\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tencode(key)\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t\tsize++\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset++ + start] = size >> 8\r\n\t\t\ttarget[objectOffset + start] = size & 0xff\r\n\t\t} :\r\n\r\n\t/*\tsharedStructures ? // For highly stable structures, using for-in can a little bit faster\r\n\t\t(object, safePrototype) => {\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet objectOffset = position++ - start\r\n\t\t\tlet wroteKeys\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\tnextTransition.__keys__ = (transition.__keys__ || []).concat([key])\r\n\t\t\t\t\t\t/*let keys = Object.keys(object)\r\n\t\t\t\t\t\tif \r\n\t\t\t\t\t\tlet size = 0\r\n\t\t\t\t\t\tlet startBranch = transition.__keys__ ? transition.__keys__.length : 0\r\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tsize += key.length << 2\r\n\t\t\t\t\t\t\tif (i >= startBranch) {\r\n\t\t\t\t\t\t\t\tnextTransition = nextTransition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t\tnextTransition.__keys__ = keys.slice(0, i + 1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmakeRoom(position + size)\r\n\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\ttarget.copy(target, )\r\n\t\t\t\t\t\tobjectOffset\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet id = transition.id\r\n\t\t\tif (!id) {\r\n\t\t\t\tid = transition.id = structures.push(transition.__keys__) + 63\r\n\t\t\t\tif (sharedStructures.onUpdate)\r\n\t\t\t\t\tsharedStructures.onUpdate(id, transition.__keys__)\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset + start] = id\r\n\t\t}*/\r\n\t\t(object) => {\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet newTransitions = 0\r\n\t\t\tlet length = keys.length\r\n\t\t\tfor (let i =0; i < length; i++) {\r\n\t\t\t\tlet key = keys[i]\r\n\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\tnewTransitions++\r\n\t\t\t\t}\r\n\t\t\t\ttransition = nextTransition\r\n\t\t\t}\r\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\r\n\t\t\tif (recordId !== undefined) {\r\n\t\t\t\ttarget[position++] = 0xd9 // tag two byte\r\n\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\ttarget[position++] = recordId\r\n\t\t\t} else {\r\n\t\t\t\trecordId = structures.nextId++\r\n\t\t\t\tif (!recordId) {\r\n\t\t\t\t\trecordId = 0\r\n\t\t\t\t\tstructures.nextId = 1\r\n\t\t\t\t}\r\n\t\t\t\tif (recordId >= MAX_STRUCTURES) {// cycle back around\r\n\t\t\t\t\tstructures.nextId = (recordId = maxSharedStructures) + 1\r\n\t\t\t\t}\r\n\t\t\t\ttransition[RECORD_SYMBOL] = recordId\r\n\t\t\t\tstructures[recordId] = keys\r\n\t\t\t\tif (sharedStructures && sharedStructures.length <= maxSharedStructures) {\r\n\t\t\t\t\ttarget[position++] = 0xd9 // tag two byte\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\ttarget[position++] = recordId // tag number\r\n\t\t\t\t\thasSharedUpdate = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[position++] = 0xd8\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\tif (newTransitions)\r\n\t\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\r\n\t\t\t\t\t// record the removal of the id, we can maintain our shared structure\r\n\t\t\t\t\tif (recordIdsToRemove.length >= MAX_STRUCTURES - maxSharedStructures)\r\n\t\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = undefined // we are cycling back through, and have to remove old ones\r\n\t\t\t\t\trecordIdsToRemove.push(transition)\r\n\t\t\t\t\tif (length < 0x16)\r\n\t\t\t\t\t\ttarget[position++] = 0x82 + length // array header, length of values + 2\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\twriteArrayHeader(length + 2)\r\n\t\t\t\t\tencode(keys)\r\n\t\t\t\t\ttarget[position++] = 0x19 // uint16\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\ttarget[position++] = recordId\r\n\t\t\t\t\t// now write the values\r\n\t\t\t\t\tfor (let i =0; i < length; i++)\r\n\t\t\t\t\t\tencode(object[keys[i]])\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (length < 0x18) { // write the array header\r\n\t\t\t\ttarget[position++] = 0x80 | length\r\n\t\t\t} else {\r\n\t\t\t\twriteArrayHeader(length)\r\n\t\t\t}\r\n\t\t\tfor (let i =0; i < length; i++)\r\n\t\t\t\tencode(object[keys[i]])\r\n\t\t}\r\n\t\tconst makeRoom = (end) => {\r\n\t\t\tlet newSize\r\n\t\t\tif (end > 0x1000000) {\r\n\t\t\t\t// special handling for really large buffers\r\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\r\n\t\t\t\t\tthrow new Error('Encoded buffer would be larger than maximum buffer size')\r\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\r\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x1000000) / 0x1000) * 0x1000)\r\n\t\t\t} else // faster handling for smaller buffers\r\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\r\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\r\n\t\t\ttargetView = new DataView(newBuffer.buffer, 0, newSize)\r\n\t\t\tif (target.copy)\r\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\r\n\t\t\telse\r\n\t\t\t\tnewBuffer.set(target.slice(start, end))\r\n\t\t\tposition -= start\r\n\t\t\tstart = 0\r\n\t\t\tsafeEnd = newBuffer.length - 10\r\n\t\t\treturn target = newBuffer\r\n\t\t}\r\n\t}\r\n\tuseBuffer(buffer) {\r\n\t\t// this means we are finished using our own buffer and we can write over it safely\r\n\t\ttarget = buffer\r\n\t\ttargetView = new DataView(target.buffer, target.byteOffset, target.byteLength)\r\n\t\tposition = 0\r\n\t}\r\n}\r\n\r\nfunction copyBinary(source, target, targetOffset, offset, endOffset) {\r\n\twhile (offset < endOffset) {\r\n\t\ttarget[targetOffset++] = source[offset++]\r\n\t}\r\n}\r\n\r\nfunction writeArrayHeader(length) {\r\n\tif (length < 0x100) {\r\n\t\ttarget[position++] = 0x98\r\n\t\ttarget[position++] = length\r\n\t} else if (length < 0x10000) {\r\n\t\ttarget[position++] = 0x99\r\n\t\ttarget[position++] = length >> 8\r\n\t\ttarget[position++] = length & 0xff\r\n\t} else {\r\n\t\ttarget[position++] = 0x9a\r\n\t\ttargetView.setUint32(position, length)\r\n\t\tposition += 4\r\n\t}\r\n}\r\n\r\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, ByteArray,\r\n\tUint8Array, Uint8ClampedArray, Uint16Array, Uint32Array, BigUint64Array, Int8Array, Int16Array, Int32Array, BigInt64Array,\r\n\tFloat32Array, Float64Array]\r\n\r\n//Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/\r\nextensions = [{\r\n\ttag: 1,\r\n\tencode(date, encode) {\r\n\t\tlet seconds = date.getTime() / 1000\r\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\r\n\t\t\t// Timestamp 32\r\n\t\t\ttarget[position++] = 0x1a\r\n\t\t\ttargetView.setUint32(position, seconds)\r\n\t\t\tposition += 4\r\n\t\t} else {\r\n\t\t\t// Timestamp float64\r\n\t\t\ttarget[position++] = 0xfb\r\n\t\t\ttargetView.setFloat64(position, seconds)\r\n\t\t\tposition += 8\r\n\t\t}\r\n\t}\r\n}, {\r\n\ttag: 258, // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\r\n\tencode(set, encode) {\r\n\t\tlet array = Array.from(set)\r\n\t\tencode(array)\r\n\t}\r\n}, {\r\n\ttag: 27, // http://cbor.schmorp.de/generic-object\r\n\tencode(error, encode) {\r\n\t\tencode([ error.name, error.message ])\r\n\t}\r\n}, {\r\n\ttag: 27, // http://cbor.schmorp.de/generic-object\r\n\tencode(regex, encode) {\r\n\t\tencode([ 'RegExp', regex.source, regex.flags ])\r\n\t}\r\n}, {\r\n\tencode(arrayBuffer, encode, makeRoom) {\r\n\t\twriteBuffer(arrayBuffer, makeRoom)\r\n\t}\r\n}, {\r\n\tencode(arrayBuffer, encode, makeRoom) {\r\n\t\twriteBuffer(arrayBuffer, makeRoom)\r\n\t}\r\n}, typedArrayEncoder(64),\r\n\ttypedArrayEncoder(68),\r\n\ttypedArrayEncoder(69),\r\n\ttypedArrayEncoder(70),\r\n\ttypedArrayEncoder(71),\r\n\ttypedArrayEncoder(72),\r\n\ttypedArrayEncoder(77),\r\n\ttypedArrayEncoder(78),\r\n\ttypedArrayEncoder(79),\r\n\ttypedArrayEncoder(81),\r\n\ttypedArrayEncoder(82)]\r\n\r\nfunction typedArrayEncoder(tag) {\r\n\treturn {\r\n\t\ttag: tag,\r\n\t\tencode: function writeExtBuffer(typedArray, encode) {\r\n\t\t\tlet length = typedArray.byteLength\r\n\t\t\tlet offset = typedArray.byteOffset || 0\r\n\t\t\tlet buffer = typedArray.buffer || typedArray\r\n\t\t\tencode(hasNodeBuffer ? Buffer.from(buffer, offset, length) :\r\n\t\t\t\tnew Uint8Array(buffer, offset, length))\r\n\t\t}\r\n\t}\r\n}\r\nfunction writeBuffer(buffer, makeRoom) {\r\n\tlet length = buffer.byteLength\r\n\tif (length < 0x18) {\r\n\t\ttarget[position++] = 0x40 + length\r\n\t} else if (length < 0x100) {\r\n\t\ttarget[position++] = 0x58\r\n\t\ttarget[position++] = length\r\n\t} else if (length < 0x10000) {\r\n\t\ttarget[position++] = 0x59\r\n\t\ttarget[position++] = length >> 8\r\n\t\ttarget[position++] = length & 0xff\r\n\t} else {\r\n\t\ttarget[position++] = 0x5a\r\n\t\ttargetView.setUint32(position, length)\r\n\t\tposition += 4\r\n\t}\r\n\tif (position + length >= target.length) {\r\n\t\tmakeRoom(position + length)\r\n\t}\r\n\ttarget.set(buffer, position)\r\n\tposition += length\r\n}\r\n\r\nfunction insertIds(serialized, idsToInsert) {\r\n\t// insert the ids that need to be referenced for structured clones\r\n\tlet nextId\r\n\tlet distanceToMove = idsToInsert.length * 8\r\n\tlet lastEnd = serialized.length - distanceToMove\r\n\tidsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1)\r\n\twhile (nextId = idsToInsert.pop()) {\r\n\t\tlet offset = nextId.offset\r\n\t\tlet id = nextId.id\r\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\r\n\t\tdistanceToMove -= 8\r\n\t\tlet position = offset + distanceToMove\r\n\t\tserialized[position++] = 0xd9\r\n\t\tserialized[position++] = 40009 >> 8\r\n\t\tserialized[position++] = 40009 & 0xff\r\n\t\tserialized[position++] = 0x1a // uint32\r\n\t\tserialized[position++] = id >> 24\r\n\t\tserialized[position++] = (id >> 16) & 0xff\r\n\t\tserialized[position++] = (id >> 8) & 0xff\r\n\t\tserialized[position++] = id & 0xff\r\n\t\tlastEnd = offset\r\n\t}\r\n\treturn serialized\r\n}\r\n\r\nexport function addExtension(extension) {\r\n\tif (extension.Class) {\r\n\t\tif (!extension.encode)\r\n\t\t\tthrow new Error('Extension has no encode function')\r\n\t\textensionClasses.unshift(extension.Class)\r\n\t\textensions.unshift(extension)\r\n\t}\r\n\tdecodeAddExtension(extension)\r\n}\r\nlet defaultEncoder = new Encoder({ useRecords: false })\r\nexport const encode = defaultEncoder.encode\r\nexport { FLOAT32_OPTIONS } from './decode.js'\r\nimport { FLOAT32_OPTIONS } from './decode.js'\r\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\r\n","/**@license\n *\n * No Dependency fast and small LZJB Compression for Browser and Node\n *\n * Copyright (c) 2021 Jakub T. Jankiewicz https://jcubic.pl/me\n * Released under BSD-3-Clause License\n *\n * build: Wed, 27 Oct 2021 10:43:10 GMT\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*\n * source https://github.com/copy/jslzjb-k\n * Based on jslzjb: https://code.google.com/p/jslzjb/\n * Heavily modified for speed\n */\n// Constants was used for compress/decompress function.\nconst\n/** @const */ NBBY = 8,\n /** @const */ MATCH_BITS = 6,\n /** @const */ MATCH_MIN = 3,\n /** @const */ MATCH_MAX = ((1 << MATCH_BITS) + (MATCH_MIN - 1)),\n /** @const */ OFFSET_MASK = ((1 << (16 - MATCH_BITS)) - 1),\n /** @const */ LEMPEL_SIZE = 256;\n\n/**\n * Because of weak of javascript's natural, many compression algorithm\n * become useless in javascript implementation. The main problem is\n * performance, even the simple Huffman, LZ77/78 algorithm will take many\n * many time to operate. We use LZJB algorithm to do that, it suprisingly\n * fulfills our requirement to compress string fastly and efficiently.\n *\n * Our implementation is based on\n * http://src.opensolaris.org/source/raw/onnv/onnv-gate/\n * usr/src/uts/common/os/compress.c\n * It is licensed under CDDL.\n *\n * Compress byte array using fast and efficient algorithm.\n *\n * @param {Uint8Array} sstart The buffer to compress\n * @param {Uint8Array} dstart The buffer to write into\n * @return {number} compressed length (number of bytes written to the\n * output buffer). May be bigger than the size of the\n * output buffer, in which case some bytes are lost\n */\nfunction compress(sstart, dstart) {\n var slen = 0,\n src = 0,\n dst = 0,\n cpy = 0,\n copymap = 0,\n copymask = 1 << (NBBY - 1),\n mlen = 0,\n offset = 0,\n hp = 0,\n lempel = new Int32Array(LEMPEL_SIZE),\n i = 0;\n\n // Initialize lempel array.\n for(i = 0; i < LEMPEL_SIZE; i++) {\n lempel[i] = -858993460;\n }\n\n slen = sstart.length;\n\n while (src < slen) {\n if ((copymask <<= 1) == (1 << NBBY)) {\n copymask = 1;\n copymap = dst;\n dstart[dst++] = 0;\n }\n\n if (src > slen - MATCH_MAX) {\n dstart[dst++] = sstart[src++];\n continue;\n }\n\n hp = ((sstart[src] + 13) ^\n (sstart[src + 1] - 13) ^\n sstart[src + 2]) &\n (LEMPEL_SIZE - 1);\n\n offset = (src - lempel[hp]) & OFFSET_MASK;\n lempel[hp] = src;\n cpy = src - offset;\n\n if (cpy >= 0 && cpy != src &&\n sstart[src] == sstart[cpy] &&\n sstart[src + 1] == sstart[cpy + 1] &&\n sstart[src + 2] == sstart[cpy + 2]) {\n dstart[copymap] |= copymask;\n for (mlen = MATCH_MIN; mlen < MATCH_MAX; mlen++)\n if (sstart[src + mlen] != sstart[cpy + mlen])\n break;\n dstart[dst++] = ((mlen - MATCH_MIN) << (NBBY - MATCH_BITS)) |\n (offset >> NBBY);\n dstart[dst++] = offset;\n src += mlen;\n } else {\n dstart[dst++] = sstart[src++];\n }\n }\n\n console.assert(sstart.length >= src);\n\n return dst;\n}\n\n/**\n * Our implementation is based on\n * http://src.opensolaris.org/source/raw/onnv/onnv-gate/\n * usr/src/uts/common/os/compress.c\n * It is licensed under CDDL.\n *\n * Decompress byte array using fast and efficient algorithm.\n *\n * @param {Uint8Array} sstart The buffer to decompress\n * @param {number} slen compressed length\n * @param {Uint8Array} dstart The buffer to write into\n * @return {number} decompressed length\n */\nfunction decompress(sstart, slen, dstart) {\n slen = slen | 0;\n\n var src = 0,\n dst = 0,\n cpy = 0,\n copymap = 0,\n copymask = 1 << (NBBY - 1 | 0),\n mlen = 0,\n offset = 0;\n\n //var avg_mlen = [];\n\n while (src < slen) {\n if ((copymask <<= 1) === (1 << NBBY)) {\n copymask = 1;\n copymap = sstart[src];\n src = src + 1 | 0;\n }\n\n if (copymap & copymask) {\n mlen = (sstart[src] >> (NBBY - MATCH_BITS | 0)) + MATCH_MIN | 0;\n offset = ((sstart[src] << NBBY) | sstart[src + 1 | 0]) & OFFSET_MASK;\n src = src + 2 | 0;\n\n cpy = dst - offset | 0;\n //if (cpy >= 0)\n {\n //console.log(mlen);\n //avg_mlen.push(mlen);\n\n //dstart.set(dstart.subarray(cpy, cpy + mlen | 0), dst);\n //dst = dst + mlen | 0;\n //cpy = cpy + mlen | 0;\n\n //mlen = mlen - 1 | 0;\n while (mlen > 4) {\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n mlen = mlen - 4 | 0;\n }\n\n while (mlen > 0) {\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n mlen = mlen - 1 | 0;\n }\n }\n //else\n //{\n // /*\n // * offset before start of destination buffer\n // * indicates corrupt source data\n // */\n // console.warn(\"possibly corrupt data\");\n // return dstart;\n //}\n } else {\n dstart[dst] = sstart[src];\n dst = dst + 1 | 0;\n src = src + 1 | 0;\n }\n }\n\n //console.log(avg_mlen.reduce(function(a, x) { return a + x; }, 0) / avg_mlen.length);\n\n //console.assert(dstart.length >= dst);\n //console.assert(sstart.length >= src);\n\n return dst;\n}\n\n\nfunction encode_magic() {\n const encoder = new TextEncoder('utf-8');\n return encoder.encode(MAGIC_STRING);\n}\n\nconst MAGIC_STRING = '@lzjb';\nconst MAGIC = encode_magic();\n\nfunction merge_uint8_array(...args) {\n if (args.length > 1) {\n const len = args.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(len);\n let offset = 0;\n args.forEach(item => {\n result.set(item, offset);\n offset += item.length;\n });\n return result;\n } else if (args.length) {\n return args[0];\n }\n}\n\nfunction number_to_bytes(number) {\n const len = Math.ceil(Math.log2(number) / 8);\n const byteArray = new Uint8Array(len);\n\n for (let index = 0; index < byteArray.length; index ++ ) {\n const byte = number & 0xff;\n byteArray[index] = byte;\n number = (number - byte) / 256;\n }\n\n return byteArray;\n}\n\nfunction bytes_to_number(byteArray) {\n let result = 0;\n for (let i = byteArray.length - 1; i >= 0; i--) {\n result = (result * 256) + byteArray[i];\n }\n\n return result;\n}\n\nfunction pack(input, { magic = true } = {}) {\n const out = new Uint8Array(Math.max(input.length * 1.5 | 0, 16 * 1024));\n const len = compress(input, out);\n const len_array = number_to_bytes(input.length);\n const payload = [\n Uint8Array.of(len_array.length),\n len_array,\n out.slice(0, len)\n ];\n if (magic) {\n payload.unshift(MAGIC);\n }\n return merge_uint8_array(...payload);\n}\n\nfunction unpack(input, { magic = true } = {}) {\n if (magic) {\n const decoder = new TextDecoder('utf-8');\n const magic_prefix = decoder.decode(input.slice(0, MAGIC.length));\n if (magic_prefix !== MAGIC_STRING) {\n throw new Error('Invalid magic value');\n }\n }\n const magic_length = magic ? MAGIC.length : 0;\n const size = input[magic_length];\n const start = magic_length + 1;\n const end = magic_length + size + 1;\n const len = bytes_to_number(input.slice(start, end));\n input = input.slice(end);\n const out = new Uint8Array(len);\n decompress(input, input.length, out);\n return out;\n}\n\nexports.pack = pack;\nexports.unpack = unpack;\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","/**@license\n * __ __ __\n * / / \\ \\ _ _ ___ ___ \\ \\\n * | | \\ \\ | | | || . \\/ __> | |\n * | | > \\ | |_ | || _/\\__ \\ | |\n * | | / ^ \\ |___||_||_| <___/ | |\n * \\_\\ /_/ \\_\\ /_/\n *\n * \n *\n * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript\n *\n * Copyright (c) 2018-2021 Jakub T. Jankiewicz \n * Released under the MIT license\n *\n * includes:\n *\n * ucs2decode function from Punycode v 2.1.1 by Mathias Bynens MIT License\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * contentloaded.js\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n *\n * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley.\n * source: Kawa, C-Gambit\n *\n * Build time: {{DATE}}\n */\n/*\n * TODO: consider using exec in env.eval or use different maybe_async code\n */\n/* global jQuery, BigInt, Map, Set, Symbol, importScripts, Uint8Array */\n\"use strict\";\n\nconst root = typeof global !== 'undefined' ? global : self;\n\nimport { addExtension, Encoder } from 'cbor-x';\nimport { pack, unpack } from 'lzjb-pack';\nimport unfetch from 'unfetch';\n\nif (!root.fetch) {\n root.fetch = unfetch;\n}\n\nlet fs, path, nodeRequire;\n\nconst BN = root.BN;\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction contentLoaded(win, fn) {\n var done = false, top = true,\n\n doc = win.document,\n root = doc.documentElement,\n modern = doc.addEventListener,\n\n add = modern ? 'addEventListener' : 'attachEvent',\n rem = modern ? 'removeEventListener' : 'detachEvent',\n pre = modern ? '' : 'on',\n\n init = function(e) {\n if (e.type == 'readystatechange' && doc.readyState != 'complete') return;\n (e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) fn.call(win, e.type || e);\n },\n\n poll = function() {\n try { root.doScroll('left'); } catch(e) { setTimeout(poll, 50); return; }\n init('poll');\n };\n\n if (doc.readyState == 'complete') fn.call(win, 'lazy');\n else {\n if (!modern && root.doScroll) {\n try { top = !win.frameElement; } catch(e) { }\n if (top) poll();\n }\n doc[add](pre + 'DOMContentLoaded', init, false);\n doc[add](pre + 'readystatechange', init, false);\n win[add](pre + 'load', init, false);\n }\n}\n// -------------------------------------------------------------------------\n/* eslint-disable */\n/* istanbul ignore next */\nfunction log(x, regex = null) {\n var literal = arguments[1] === true;\n function msg(x) {\n if (!is_debug()) {\n return;\n }\n var value = global_env.get('repr')(x);\n if (regex === null || regex instanceof RegExp && regex.test(value)) {\n console.log(global_env.get('type')(x) + \": \" + value);\n }\n if (literal) {\n console.log(x);\n }\n }\n if (is_promise(x)) {\n x.then(msg);\n } else {\n msg(x);\n }\n return x;\n}\n// ----------------------------------------------------------------------\n/* istanbul ignore next */\nfunction is_debug() {\n return user_env && user_env.get('DEBUG', { throwError: false });\n}\n/* eslint-enable */\n/* eslint-disable max-len */\n// functions generate regexes to match number rational, integer, complex, complex+ratioanl\nfunction num_mnemicic_re(mnemonic) {\n return mnemonic ? `(?:#${mnemonic}(?:#[ie])?|#[ie]#${mnemonic})` : '(?:#[ie])?';\n}\nfunction gen_rational_re(mnemonic, range) {\n return `${num_mnemicic_re(mnemonic)}[+-]?${range}+/${range}+`;\n}\n// TODO: float complex\nfunction gen_complex_re(mnemonic, range) {\n // [+-]i have (?=..) so it don't match +i from +inf.0\n return `${num_mnemicic_re(mnemonic)}(?:[+-]?(?:${range}+/${range}+|nan.0|inf.0|${range}+))?(?:[+-]i|[+-]?(?:${range}+/${range}+|${range}+|nan.0|inf.0)i)(?=[()[\\\\]\\\\s]|$)`;\n}\nfunction gen_integer_re(mnemonic, range) {\n return `${num_mnemicic_re(mnemonic)}[+-]?${range}+`;\n}\nvar re_re = /^#\\/((?:\\\\\\/|[^/]|\\[[^\\]]*\\/[^\\]]*\\])+)\\/([gimyus]*)$/;\nvar float_stre = '(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\\\.[0-9]+|[0-9]+\\\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\\\.)';\n// TODO: extend to ([+-]1/2|float)([+-]1/2|float)\nvar complex_float_stre = `(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|${float_stre}|[+-]?[0-9]+))?(?:${float_stre}|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i`;\nvar float_re = new RegExp(`^(#[ie])?${float_stre}$`, 'i');\nfunction make_complex_match_re(mnemonic, range) {\n // complex need special treatment of 10e+1i when it's hex or decimal\n var neg = mnemonic === 'x' ? `(?!\\\\+|${range})` : `(?!\\\\.|${range})`;\n var fl = '';\n if (mnemonic === '') {\n fl = '(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\\\.[0-9]+|[0-9]+\\\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))';\n }\n return new RegExp(`^((?:(?:${fl}|[-+]?inf.0|[-+]?nan.0|[+-]?${range}+/${range}+(?!${range})|[+-]?${range}+)${neg})?)(${fl}|[-+]?inf.0|[-+]?nan.0|[+-]?${range}+/${range}+|[+-]?${range}+|[+-])i$`, 'i');\n}\nvar complex_list_re = (function() {\n var result = {};\n [\n [10, '', '[0-9]'],\n [16, 'x', '[0-9a-fA-F]'],\n [8, 'o', '[0-7]'],\n [2, 'b', '[01]']\n ].forEach(([radix, mnemonic, range]) => {\n result[radix] = make_complex_match_re(mnemonic, range);\n });\n return result;\n})();\nconst characters = {\n 'alarm': '\\x07',\n 'backspace': '\\x08',\n 'delete': '\\x7F',\n 'escape': '\\x1B',\n 'newline': '\\n',\n 'null': '\\x00',\n 'return': '\\r',\n 'space': ' ',\n 'tab': '\\t',\n // new symbols from ASCII table in SRFI-175\n 'dle': '\\x10',\n 'soh': '\\x01',\n 'dc1': '\\x11',\n 'stx': '\\x02',\n 'dc2': '\\x12',\n 'etx': '\\x03',\n 'dc3': '\\x13',\n 'eot': '\\x04',\n 'dc4': '\\x14',\n 'enq': '\\x05',\n 'nak': '\\x15',\n 'ack': '\\x06',\n 'syn': '\\x16',\n 'bel': '\\x07',\n 'etb': '\\x17',\n 'bs': '\\x08',\n 'can': '\\x18',\n 'ht': '\\x09',\n 'em': '\\x19',\n 'lf': '\\x0a',\n 'sub': '\\x1a',\n 'vt': '\\x0b',\n 'esc': '\\x1b',\n 'ff': '\\x0c',\n 'fs': '\\x1c',\n 'cr': '\\x0d',\n 'gs': '\\x1d',\n 'so': '\\x0e',\n 'rs': '\\x1e',\n 'si': '\\x0f',\n 'us': '\\x1f',\n 'del': '\\x7f'\n};\n// -------------------------------------------------------------------------\n// :: ref: https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n// -------------------------------------------------------------------------\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n// -------------------------------------------------------------------------\nconst character_symbols = Object.keys(characters).join('|');\nconst char_sre_re = `#\\\\\\\\(?:x[0-9a-f]+|${character_symbols}|[\\\\s\\\\S])`;\nconst char_re = new RegExp(`^${char_sre_re}$`, 'i');\n// complex with (int) (float) (rational)\nfunction make_num_stre(fn) {\n const ranges = [\n ['o', '[0-7]'],\n ['x', '[0-9a-fA-F]'],\n ['b', '[01]'],\n ['d', '[0-9]'],\n ['', '[0-9]']\n ];\n // float exception that don't accept mnemonics\n let result = ranges.map(([m, range]) => fn(m, range)).join('|');\n if (fn === gen_complex_re) {\n result = complex_float_stre + '|' + result;\n }\n return result;\n}\nfunction make_type_re(fn) {\n return new RegExp('^(?:' + make_num_stre(fn) + ')$', 'i');\n}\nconst complex_re = make_type_re(gen_complex_re);\nconst rational_re = make_type_re(gen_rational_re);\nconst int_re = make_type_re(gen_integer_re);\n\n// regexes with full range but without mnemonics for string->number\nconst int_bare_re = new RegExp('^(?:' + gen_integer_re('', '[0-9a-f]') + ')$', 'i');\nconst rational_bare_re = new RegExp('^(?:' + gen_rational_re('', '[0-9a-f]') + ')$', 'i');\nconst complex_bare_re = new RegExp('^(?:' + gen_complex_re('', '[0-9a-f]') + ')$', 'i');\n\nconst complex_bare_match_re = make_complex_match_re('', '[0-9a-fA-F]');\n\nconst pre_num_parse_re = /((?:#[xodbie]){0,2})(.*)/i;\n/* eslint-enable */\nfunction num_pre_parse(arg) {\n var parts = arg.match(pre_num_parse_re);\n var options = {};\n if (parts[1]) {\n var type = parts[1].replace(/#/g, '').toLowerCase().split('');\n if (type.includes('x')) {\n options.radix = 16;\n } else if (type.includes('o')) {\n options.radix = 8;\n } else if (type.includes('b')) {\n options.radix = 2;\n } else if (type.includes('d')) {\n options.radix = 10;\n }\n if (type.includes('i')) {\n options.inexact = true;\n }\n if (type.includes('e')) {\n options.exact = true;\n }\n }\n options.number = parts[2];\n return options;\n}\n// ----------------------------------------------------------------------\nfunction parse_rational(arg, radix = 10) {\n var parse = num_pre_parse(arg);\n var parts = parse.number.split('/');\n var num = LRational({\n num: LNumber([parts[0], parse.radix || radix]),\n denom: LNumber([parts[1], parse.radix || radix])\n });\n if (parse.inexact) {\n return num.valueOf();\n } else {\n return num;\n }\n}\n// ----------------------------------------------------------------------\nfunction parse_integer(arg, radix = 10) {\n var parse = num_pre_parse(arg);\n if (parse.inexact) {\n return LFloat(parseInt(parse.number, parse.radix || radix), true);\n }\n return LNumber([parse.number, parse.radix || radix]);\n}\n// ----------------------------------------------------------------------\nfunction parse_character(arg) {\n var m = arg.match(/#\\\\x([0-9a-f]+)$/i);\n var char;\n if (m) {\n var ord = parseInt(m[1], 16);\n char = String.fromCodePoint(ord);\n } else {\n m = arg.match(/#\\\\(.+)$/);\n if (m) {\n char = m[1];\n }\n }\n if (char) {\n return LCharacter(char);\n }\n throw new Error('Parse: invalid character');\n}\n// ----------------------------------------------------------------------\nfunction parse_complex(arg, radix = 10) {\n function parse_num(n) {\n var value;\n if (n === '+') {\n value = LNumber(1);\n } else if (n === '-') {\n value = LNumber(-1);\n } else if (n.match(int_bare_re)) {\n value = LNumber([n, radix]);\n } else if (n.match(rational_bare_re)) {\n var parts = n.split('/');\n value = LRational({\n num: LNumber([parts[0], radix]),\n denom: LNumber([parts[1], radix])\n });\n } else if (n.match(float_re)) {\n var float = parse_float(n);\n if (parse.exact) {\n return float.toRational();\n }\n return float;\n } else if (n.match(/nan.0$/)) {\n return LNumber(NaN);\n } else if (n.match(/inf.0$/)) {\n if (n[0] === '-') {\n return LNumber(Number.NEGATIVE_INFINITY);\n }\n return LNumber(Number.POSITIVE_INFINITY);\n } else {\n throw new Error('Internal Parser Error');\n }\n if (parse.inexact) {\n return LFloat(value.valueOf(), true);\n }\n return value;\n }\n var parse = num_pre_parse(arg);\n radix = parse.radix || radix;\n var parts;\n var bare_match = parse.number.match(complex_bare_match_re);\n if (radix !== 10 && bare_match) {\n parts = bare_match;\n } else {\n parts = parse.number.match(complex_list_re[radix]);\n }\n var re, im;\n im = parse_num(parts[2]);\n if (parts[1]) {\n re = parse_num(parts[1]);\n } else {\n re = LNumber(0);\n }\n if (im.cmp(0) === 0 && im.__type__ === 'bigint') {\n return re;\n }\n return LComplex({ im, re });\n}\n// ----------------------------------------------------------------------\nfunction is_int(value) {\n return parseInt(value.toString(), 10) === value;\n}\n// ----------------------------------------------------------------------\nfunction parse_big_int(str) {\n var num_match = str.match(/^(([-+]?[0-9]*)(?:\\.([0-9]+))?)e([-+]?[0-9]+)/i);\n if (num_match) {\n var exponent = parseInt(num_match[4], 10);\n var mantisa;// = parseFloat(num_match[1]);\n var digits = num_match[1].replace(/[-+]?([0-9]*)\\..+$/, '$1').length;\n var decimal_points = num_match[3] && num_match[3].length;\n if (digits < Math.abs(exponent)) {\n mantisa = LNumber([num_match[1].replace(/\\./, ''), 10]);\n if (decimal_points) {\n exponent -= decimal_points;\n }\n }\n }\n return { exponent, mantisa };\n}\n// ----------------------------------------------------------------------\nfunction parse_float(arg) {\n var parse = num_pre_parse(arg);\n var value = parseFloat(parse.number);\n var simple_number = (parse.number.match(/\\.0$/) ||\n !parse.number.match(/\\./)) && !parse.number.match(/e/i);\n if (!parse.inexact) {\n if (parse.exact && simple_number) {\n return LNumber(value);\n }\n // positive big num that eval to int e.g.: 1.2e+20\n if (is_int(value) && parse.number.match(/e\\+?[0-9]/i)) {\n return LNumber(value);\n }\n // calculate big int and big fration by hand - it don't fit into JS float\n var { mantisa, exponent } = parse_big_int(parse.number);\n if (mantisa !== undefined && exponent !== undefined) {\n var factor = LNumber(10).pow(LNumber(Math.abs(exponent)));\n if (parse.exact && exponent < 0) {\n return LRational({ num: mantisa, denom: factor });\n } else if (exponent > 0) {\n return LNumber(mantisa).mul(factor);\n }\n }\n }\n value = LFloat(value, true);\n if (parse.exact) {\n return value.toRational();\n }\n return value;\n}\n// ----------------------------------------------------------------------\nfunction parse_string(string) {\n // handle non JSON escapes and skip unicode escape \\u (even partial)\n string = string.replace(/\\\\x([0-9a-f]+);/ig, function(_, hex) {\n return \"\\\\u\" + hex.padStart(4, '0');\n }).replace(/\\n/g, '\\\\n'); // in LIPS strings can be multiline\n var m = string.match(/(\\\\*)(\\\\x[0-9A-F])/i);\n if (m && m[1].length % 2 === 0) {\n throw new Error(`Invalid string literal, unclosed ${m[2]}`);\n }\n try {\n return LString(JSON.parse(string));\n } catch (e) {\n throw new Error('Invalid string literal');\n }\n}\n// ----------------------------------------------------------------------\nfunction parse_symbol(arg) {\n if (arg.match(/^\\|.*\\|$/)) {\n arg = arg.replace(/(^\\|)|(\\|$)/g, '');\n var chars = {\n t: '\\t',\n r: '\\r',\n n: '\\n'\n };\n arg = arg.replace(/\\\\(x[^;]+);/g, function(_, chr) {\n return String.fromCharCode(parseInt('0' + chr, 16));\n }).replace(/\\\\(.)/g, function(_, chr) {\n return chars[chr] || chr;\n });\n }\n return new LSymbol(arg);\n}\n// ----------------------------------------------------------------------\nfunction parse_argument(arg) {\n if (constants.hasOwnProperty(arg)) {\n return constants[arg];\n }\n if (arg.match(/^\"[\\s\\S]*\"$/)) {\n return parse_string(arg);\n } else if (arg[0] === '#') {\n var regex = arg.match(re_re);\n if (regex) {\n return new RegExp(regex[1], regex[2]);\n } else if (arg.match(char_re)) {\n return parse_character(arg);\n }\n // characters with more than one codepoint\n var m = arg.match(/#\\\\(.+)/);\n if (m && ucs2decode(m[1]).length === 1) {\n return parse_character(arg);\n }\n }\n if (arg.match(/[0-9a-f]|[+-]i/i)) {\n if (arg.match(int_re)) {\n return parse_integer(arg);\n } else if (arg.match(float_re)) {\n return parse_float(arg);\n } else if (arg.match(rational_re)) {\n return parse_rational(arg);\n } else if (arg.match(complex_re)) {\n return parse_complex(arg);\n }\n }\n if (arg.match(/^#[iexobd]/)) {\n throw new Error('Invalid numeric constant: ' + arg);\n }\n return parse_symbol(arg);\n}\n// ----------------------------------------------------------------------\nfunction is_atom_string(str) {\n return !(['(', ')', '[', ']'].includes(str) ||\n specials.names().includes(str));\n}\n// ----------------------------------------------------------------------\nfunction is_symbol_string(str) {\n return is_atom_string(str) &&\n !(str.match(re_re) ||\n str.match(/^\"[\\s\\S]*\"$/) || str.match(int_re) ||\n str.match(float_re) || str.match(complex_re) ||\n str.match(rational_re) || str.match(char_re) ||\n ['#t', '#f', 'nil', 'true', 'false'].includes(str));\n}\n// ----------------------------------------------------------------------\nvar string_re = /\"(?:\\\\[\\S\\s]|[^\"])*\"?/g;\n// ----------------------------------------------------------------------\nfunction escape_regex(str) {\n if (typeof str === 'string') {\n var special = /([-\\\\^$[\\]()+{}?*.|])/g;\n return str.replace(special, '\\\\$1');\n }\n return str;\n}\n// ----------------------------------------------------------------------\n// Stack used in balanced function\n// TODO: use it in parser\n// ----------------------------------------------------------------------\nfunction Stack() {\n this.data = [];\n}\nStack.prototype.push = function(item) {\n this.data.push(item);\n};\nStack.prototype.top = function() {\n return this.data[this.data.length - 1];\n};\nStack.prototype.pop = function() {\n return this.data.pop();\n};\nStack.prototype.is_empty = function() {\n return !this.data.length;\n};\n// ----------------------------------------------------------------------\nfunction tokens(str) {\n if (str instanceof LString) {\n str = str.valueOf();\n }\n var lexer = new Lexer(str, { whitespace: true });\n var result = [];\n while (true) {\n const token = lexer.peek(true);\n if (token === eof) {\n break;\n }\n result.push(token);\n lexer.skip();\n }\n return result;\n}\n// ----------------------------------------------------------------------\nfunction multiline_formatter(meta) {\n var { token, ...rest } = meta;\n if (token.match(/^\"[\\s\\S]*\"$/) && token.match(/\\n/)) {\n var re = new RegExp('^ {1,' + (meta.col + 1) + '}', 'mg');\n token = token.replace(re, '');\n }\n return {\n token,\n ...rest\n };\n}\n// ----------------------------------------------------------------------\nfunction Thunk(fn, cont = () => {}) {\n this.fn = fn;\n this.cont = cont;\n}\n// ----------------------------------------------------------------------\nThunk.prototype.toString = function() {\n return '#';\n};\n// ----------------------------------------------------------------------\nfunction trampoline(fn) {\n return function(...args) {\n return unwind(fn.apply(this, args));\n };\n}\n// ----------------------------------------------------------------------\nfunction unwind(result) {\n while (result instanceof Thunk) {\n const thunk = result;\n result = result.fn();\n if (!(result instanceof Thunk)) {\n thunk.cont();\n }\n }\n return result;\n}\n// ----------------------------------------------------------------------\nfunction tokenize(str, meta = false) {\n if (str instanceof LString) {\n str = str.toString();\n }\n if (meta) {\n return tokens(str);\n } else {\n var result = tokens(str).map(function(token) {\n // we don't want literal space character to be trimmed\n if (token.token === '#\\\\ ') {\n return token.token;\n }\n return token.token.trim();\n }).filter(function(token) {\n return token && !token.match(/^;/) && !token.match(/^#\\|[\\s\\S]*\\|#$/);\n });\n return strip_s_comments(result);\n }\n}\n// ----------------------------------------------------------------------\nfunction strip_s_comments(tokens) {\n var s_count = 0;\n var s_start = null;\n var remove_list = [];\n for (let i = 0; i < tokens.length; ++i) {\n const token = tokens[i];\n if (token === '#;') {\n if (['(', '['].includes(tokens[i + 1])) {\n s_count = 1;\n s_start = i;\n } else {\n remove_list.push([i, i + 2]);\n }\n i += 1;\n continue;\n }\n if (s_start !== null) {\n if ([')', ']'].includes(token)) {\n s_count--;\n } else if (['(', '['].includes(token)) {\n s_count++;\n }\n if (s_count === 0) {\n remove_list.push([s_start, i + 1]);\n s_start = null;\n }\n }\n }\n tokens = tokens.slice();\n remove_list.reverse();\n for (const [begin, end] of remove_list) {\n tokens.splice(begin, end - begin);\n }\n return tokens;\n}\n// ----------------------------------------------------------------------\n// detect if object is ES6 Symbol that work with polyfills\n// ----------------------------------------------------------------------\nfunction isSymbol(x) {\n return typeof x === 'symbol' ||\n typeof x === 'object' &&\n Object.prototype.toString.call(x) === '[object Symbol]';\n}\n// ----------------------------------------------------------------------\n// :: LSymbol constructor\n// ----------------------------------------------------------------------\nfunction LSymbol(name) {\n if (typeof this !== 'undefined' && this.constructor !== LSymbol ||\n typeof this === 'undefined') {\n return new LSymbol(name);\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n if (LSymbol.list[name] instanceof LSymbol) {\n return LSymbol.list[name];\n }\n this.__name__ = name;\n if (typeof name === 'string') {\n LSymbol.list[name] = this;\n }\n}\nLSymbol.list = {};\nLSymbol.literal = Symbol.for('__literal__');\nLSymbol.object = Symbol.for('__object__');\n// ----------------------------------------------------------------------\nLSymbol.is = function(symbol, name) {\n return symbol instanceof LSymbol &&\n ((name instanceof LSymbol && symbol.__name__ === name.__name__) ||\n (typeof name === 'string' && symbol.__name__ === name) ||\n (name instanceof RegExp && name.test(symbol.__name__)));\n};\n// ----------------------------------------------------------------------\nLSymbol.prototype.toString = function(quote) {\n //return '#';\n if (isSymbol(this.__name__)) {\n return symbol_to_string(this.__name__);\n }\n var str = this.valueOf();\n // those special characters can be normal symbol when printed\n if (quote && str.match(/(^;|[\\s()[\\]'])/)) {\n return `|${str}|`;\n }\n return str;\n};\nLSymbol.prototype.literal = function() {\n if (this.is_gensym()) {\n return this[LSymbol.literal];\n }\n return this.valueOf();\n};\nLSymbol.prototype.serialize = function() {\n if (LString.isString(this.__name__)) {\n return this.__name__;\n }\n return [symbol_to_string(this.__name__)];\n};\nLSymbol.prototype.valueOf = function() {\n return this.__name__.valueOf();\n};\n// -------------------------------------------------------------------------\nLSymbol.prototype.is_gensym = function() {\n return is_gensym(this.__name__);\n};\n// -------------------------------------------------------------------------\nfunction symbol_to_string(obj) {\n return obj.toString().replace(/^Symbol\\(([^)]+)\\)/, '$1');\n}\n// -------------------------------------------------------------------------\nfunction is_gensym(symbol) {\n if (typeof symbol === 'symbol') {\n return !!symbol.toString().match(/^Symbol\\(#:/);\n }\n return false;\n}\n// -------------------------------------------------------------------------\nvar gensym = (function() {\n var count = 0;\n function with_props(name, sym) {\n var symbol = new LSymbol(sym);\n hidden_prop(symbol, '__literal__', name);\n return symbol;\n }\n return function(name = null) {\n if (name instanceof LSymbol) {\n if (name.is_gensym()) {\n return name;\n }\n name = name.valueOf();\n }\n if (is_gensym(name)) {\n // don't do double gynsyms in nested syntax-rules\n return LSymbol(name);\n }\n // use ES6 symbol as name for lips symbol (they are unique)\n if (name !== null) {\n return with_props(name, Symbol(`#:${name}`));\n }\n count++;\n return with_props(count, Symbol(`#:g${count}`));\n };\n})();\n// ----------------------------------------------------------------------\n// class used to escape promises feature #54\n// ----------------------------------------------------------------------\nfunction QuotedPromise(promise) {\n var internal = {\n pending: true,\n rejected: false,\n fulfilled: false,\n reason: undefined,\n type: undefined\n };\n // then added to __promise__ is needed otherwise rejection\n // will give UnhandledPromiseRejectionWarning in Node.js\n promise = promise.then(v => {\n internal.type = type(v);\n internal.fulfilled = true;\n internal.pending = false;\n return v;\n });\n // promise without catch, used for valueOf - for rejecting\n // that should throw an error when used with await\n read_only(this, '_promise', promise, { hidden: true });\n if (is_function(promise.catch)) {\n // prevent exception on unhandled rejecting when using\n // '>(Promise.reject (new Error \"zonk\")) in REPL\n promise = promise.catch((err) => {\n internal.rejected = true;\n internal.pending = false;\n internal.reason = err;\n });\n }\n Object.keys(internal).forEach(name => {\n Object.defineProperty(this, `__${name}__`, {\n enumerable: true,\n get: () => internal[name]\n });\n });\n read_only(this, '__promise__', promise);\n // prevent resolving when returned from real promise #153\n this.then = false;\n}\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.then = function(fn) {\n return new QuotedPromise(this.valueOf().then(fn));\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.catch = function(fn) {\n return new QuotedPromise(this.valueOf().catch(fn));\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.valueOf = function() {\n if (!this._promise) {\n throw new Error('QuotedPromise: invalid promise created');\n }\n return this._promise;\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.toString = function() {\n if (this.__pending__) {\n return QuotedPromise.pending_str;\n }\n if (this.__rejected__) {\n return QuotedPromise.rejected_str;\n }\n return `#`;\n};\nQuotedPromise.pending_str = '#';\nQuotedPromise.rejected_str = '#';\n// ----------------------------------------------------------------------\n// wrapper over Promise.all that ignore quoted promises\n// ----------------------------------------------------------------------\nfunction promise_all(arg) {\n if (Array.isArray(arg)) {\n return Promise.all(escape_quoted_promises(arg))\n .then(unescape_quoted_promises);\n }\n return arg;\n}\n// ----------------------------------------------------------------------\nfunction escape_quoted_promises(array) {\n // using loops for performance\n var escaped = new Array(array.length), i = array.length;\n while (i--) {\n const value = array[i];\n if (value instanceof QuotedPromise) {\n escaped[i] = new Value(value);\n } else {\n escaped[i] = value;\n }\n }\n return escaped;\n}\n// ----------------------------------------------------------------------\nfunction unescape_quoted_promises(array) {\n var unescaped = new Array(array.length), i = array.length;\n while (i--) {\n var value = array[i];\n if (value instanceof Value) {\n unescaped[i] = value.valueOf();\n } else {\n unescaped[i] = value;\n }\n }\n return unescaped;\n}\n// ----------------------------------------------------------------------\n// :: Parser macros transformers\n// ----------------------------------------------------------------------\nvar specials = {\n LITERAL: Symbol.for('literal'),\n SPLICE: Symbol.for('splice'),\n SYMBOL: Symbol.for('symbol'),\n names: function() {\n return Object.keys(this._specials);\n },\n type: function(name) {\n return this.get(name).type;\n },\n get: function(name) {\n return this._specials[name];\n },\n // events are used in Lexer dynamic rules\n off: function(name, fn = null) {\n if (Array.isArray(name)) {\n name.forEach(name => this.off(name, fn));\n } else if (fn === null) {\n delete this._events[name];\n } else {\n this._events = this._events.filter(test => test !== fn);\n }\n },\n on: function(name, fn) {\n if (Array.isArray(name)) {\n name.forEach(name => this.on(name, fn));\n } else if (!this._events[name]) {\n this._events[name] = [fn];\n } else {\n this._events[name].push(fn);\n }\n },\n trigger: function(name, ...args) {\n if (this._events[name]) {\n this._events[name].forEach(fn => fn(...args));\n }\n },\n remove: function(name) {\n this.trigger('remove');\n delete this._specials[name];\n },\n append: function(name, value, type) {\n this.trigger('append');\n this._specials[name] = {\n seq: name,\n symbol: value,\n type\n };\n },\n _events: {},\n _specials: {}\n};\nfunction is_special(token) {\n return specials.names().includes(token);\n}\nfunction is_builtin(token) {\n return specials.builtin.includes(token);\n}\nfunction is_literal(special) {\n return specials.type(special) === specials.LITERAL;\n}\n// ----------------------------------------------------------------------\nvar defined_specials = [\n [\"'\", new LSymbol('quote'), specials.LITERAL],\n ['`', new LSymbol('quasiquote'), specials.LITERAL],\n [',@', new LSymbol('unquote-splicing'), specials.LITERAL],\n [',', new LSymbol('unquote'), specials.LITERAL],\n [\"'>\", new LSymbol('quote-promise'), specials.LITERAL]\n];\nObject.defineProperty(specials, 'builtin', {\n writable: false,\n value: defined_specials.map(arr => arr[0])\n});\ndefined_specials.forEach(([seq, symbol, type]) => {\n specials.append(seq, symbol, type);\n});\n// ----------------------------------------------------------------------\n// :: Finite State Machine based incremental Lexer\n// ----------------------------------------------------------------------\n/* Lexer debugger\n var DEBUG = false;\n function log(...args) {\n if (DEBUG) {\n console.log(...args);\n }\n }\n*/\nclass Lexer {\n constructor(input, { whitespace = false } = {}) {\n read_only(this, '__input__', input.replace(/\\r/g, ''));\n var internals = {};\n // hide internals from introspection\n [\n '_i', '_whitespace', '_col', '_newline', '_line',\n '_state', '_next', '_token', '_prev_char'\n ].forEach(name => {\n Object.defineProperty(this, name, {\n configurable: false,\n enumerable: false,\n get() {\n return internals[name];\n },\n set(value) {\n internals[name] = value;\n }\n });\n });\n this._whitespace = whitespace;\n this._i = this._line = this._col = this._newline = 0;\n this._state = this._next = this._token = null;\n this._prev_char = '';\n }\n get(name) {\n return this.__internal[name];\n }\n set(name, value) {\n this.__internal[name] = value;\n }\n token(meta = false) {\n if (meta) {\n let line = this._line;\n if (this._whitespace && this._token === '\\n') {\n --line;\n }\n return {\n token: this._token,\n col: this._col,\n offset: this._i,\n line\n };\n }\n return this._token;\n }\n peek(meta = false) {\n if (this._i >= this.__input__.length) {\n return eof;\n }\n if (this._token) {\n return this.token(meta);\n }\n var found = this.next_token();\n if (found) {\n this._token = this.__input__.substring(this._i, this._next);\n return this.token(meta);\n }\n return eof;\n }\n skip() {\n if (this._next !== null) {\n this._token = null;\n this._i = this._next;\n }\n }\n read_line() {\n var len = this.__input__.length;\n if (this._i >= len) {\n return eof;\n }\n for (let i = this._i; i < len; ++i) {\n var char = this.__input__[i];\n if (char === '\\n') {\n const line = this.__input__.substring(this._i, i);\n this._i = i + 1;\n ++this._line;\n return line;\n }\n }\n return this.read_rest();\n }\n read_rest() {\n const i = this._i;\n this._i = this.__input__.length;\n return this.__input__.substring(i);\n }\n read_string(num) {\n const len = this.__input__.length;\n if (this._i >= len) {\n return eof;\n }\n if (num + this._i >= len) {\n return this.read_rest();\n }\n const end = this._i + num;\n const result = this.__input__.substring(this._i, end);\n const found = result.match(/\\n/g);\n if (found) {\n this._line += found.length;\n }\n this._i = end;\n return result;\n }\n peek_char() {\n if (this._i >= this.__input__.length) {\n return eof;\n }\n return LCharacter(this.__input__[this._i]);\n }\n read_char() {\n const char = this.peek_char();\n this.skip_char();\n return char;\n }\n skip_char() {\n if (this._i < this.__input__.length) {\n ++this._i;\n this._token = null;\n }\n }\n match_rule(rule, { prev_char, char, next_char } = {}) {\n var [ re, prev_re, next_re, state ] = rule;\n if (rule.length !== 5) {\n throw new Error(`Lexer: Invald rule of length ${rule.length}`);\n }\n if (!char.match(re)) {\n return false;\n }\n if (!match_or_null(prev_re, prev_char)) {\n return false;\n }\n if (!match_or_null(next_re, next_char)) {\n return false;\n }\n if (state !== this._state) {\n return false;\n }\n return true;\n }\n next_token() {\n if (this._i >= this.__input__.length) {\n return false;\n }\n var start = true;\n loop:\n for (let i = this._i, len = this.__input__.length; i < len; ++i) {\n var char = this.__input__[i];\n var prev_char = this.__input__[i - 1] || '';\n var next_char = this.__input__[i + 1] || '';\n if (char === '\\n') {\n ++this._line;\n const newline = this._newline;\n if (this._state === null) {\n // keep beging of newline to calculate col\n // we don't want to check inside the token (e.g. strings)\n this._newline = i + 1;\n }\n if (this._whitespace && this._state === null) {\n this._next = i + 1;\n this._col = this._i - newline;\n return true;\n }\n }\n // skip leadning spaces\n if (start && this._state === null && char.match(/\\s/)) {\n if (this._whitespace) {\n if (!next_char.match(/\\s/)) {\n this._next = i + 1;\n this._col = this._i - this._newline;\n return true;\n } else {\n continue;\n }\n } else {\n this._i = i + 1;\n continue;\n }\n }\n start = false;\n for (let rule of Lexer.rules) {\n if (this.match_rule(rule, { prev_char, char, next_char })) {\n // change state to null is end of the token\n var next_state = rule[rule.length - 1];\n this._state = next_state;\n if (this._state === null) {\n this._next = i + 1;\n this._col = this._i - this._newline;\n return true;\n }\n // token is activated\n continue loop;\n }\n }\n if (this._state !== null) {\n // collect char in token\n continue loop;\n }\n // no rule for token\n var line = this.__input__.split('\\n')[this._line];\n throw new Error(`Invalid Syntax at line ${this._line}\\n${line}`);\n }\n }\n}\n// ----------------------------------------------------------------------\n// TODO: cache the rules creation or whole list\n// ----------------------------------------------------------------------\nLexer.symbol_rule = function symbol_rule(string, symbol) {\n var rules = Lexer.literal_rule(string, symbol, Lexer.boundary, /\\S/);\n\n return rules.concat([\n [/\\S/, /\\S/, Lexer.boundary, null, null],\n [/\\S/, /\\S/, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, Lexer.symbol, null]\n ]);\n};\n// ----------------------------------------------------------------------\n// state rule for literal symbol\n// ----------------------------------------------------------------------\nLexer.literal_rule = function literal_rule(string, symbol, p_re = null, n_re = null) {\n if (string.length === 0) {\n throw new Error('Lexer: invalid literal rule');\n }\n if (string.length === 1) {\n return [[string, p_re, n_re, null, null]];\n }\n var rules = [];\n for (let i = 0, len = string.length; i < len; ++i) {\n const rule = [];\n rule.push(string[i]);\n rule.push(string[i - 1] || p_re);\n rule.push(string[i + 1] || n_re);\n if (i === 0) {\n rule.push(null);\n rule.push(symbol);\n } else if (i === len - 1) {\n rule.push(symbol);\n rule.push(null);\n } else {\n rule.push(symbol);\n rule.push(symbol);\n }\n rules.push(rule);\n }\n return rules;\n};\n// ----------------------------------------------------------------------\nLexer.string = Symbol.for('string');\nLexer.symbol = Symbol.for('symbol');\nLexer.comment = Symbol.for('comment');\nLexer.regex = Symbol.for('regex');\nLexer.regex_class = Symbol.for('regex_class');\nLexer.character = Symbol.for('character');\nLexer.bracket = Symbol.for('bracket');\nLexer.b_symbol = Symbol.for('b_symbol');\nLexer.b_comment = Symbol.for('b_comment');\nLexer.i_comment = Symbol.for('i_comment');\nLexer.l_datum = Symbol.for('l_datum');\nLexer.dot = Symbol.for('dot');\n// ----------------------------------------------------------------------\nLexer.boundary = /^$|[\\s()[\\]']/;\n// ----------------------------------------------------------------------\nLexer._rules = [\n // char_re prev_re next_re from_state to_state\n // null as to_state mean that is single char token\n // string\n [/\"/, /^$|[^\\\\]/, null, null, Lexer.string],\n [/\"/, /^$|[^\\\\]/, null, Lexer.string, null],\n\n // hash special symbols, lexer don't need to distingiush those\n // we only care if it's not pick up by vectors literals\n [/#/, null, /[bdxoeitf]/i, null, Lexer.symbol],\n\n // characters\n [/#/, null, /\\\\/, null, Lexer.character],\n [/\\\\/, /#/, /\\s/, Lexer.character, Lexer.character],\n [/\\\\/, /#/, /[()[\\]]/, Lexer.character, Lexer.character],\n [/\\s/, /\\\\/, null, Lexer.character, null],\n [/\\S/, null, Lexer.boundary, Lexer.character, null],\n\n // regex\n [/#/, Lexer.boundary, /\\//, null, Lexer.regex],\n [/[ \\t]/, null, null, Lexer.regex, Lexer.regex],\n [/\\[/, null, null, Lexer.regex, Lexer.regex_class],\n [/\\]/, /[^\\\\]/, null, Lexer.regex_class, Lexer.regex],\n [/[()[\\]]/, null, null, Lexer.regex, Lexer.regex],\n [/\\//, /\\\\/, null, Lexer.regex, Lexer.regex],\n [/\\//, /[^#]/, Lexer.boundary, Lexer.regex, null],\n [/[gimyus]/, /\\//, Lexer.boundary, Lexer.regex, null],\n [/[gimyus]/, /\\//, /[gimyus]/, Lexer.regex, Lexer.regex],\n [/[gimyus]/, /[gimyus]/, Lexer.boundary, Lexer.regex, null],\n\n // comment\n [/;/, /^$|[^#]/, null, null, Lexer.comment],\n [/[\\s\\S]/, null, /\\n/, Lexer.comment, null],\n [/\\s/, null, null, Lexer.comment, Lexer.comment],\n\n // block comment\n [/#/, null, /\\|/, null, Lexer.b_comment],\n [/\\s/, null, null, Lexer.b_comment, Lexer.b_comment],\n [/#/, /\\|/, null, Lexer.b_comment, null],\n\n // inline commentss\n [/#/, null, /;/, null, Lexer.i_comment],\n [/;/, /#/, null, Lexer.i_comment, null],\n\n // datum label\n [/#/, null, /[0-9]/, null, Lexer.l_datum],\n [/=/, /[0-9]/, null, Lexer.l_datum, null],\n [/#/, /[0-9]/, null, Lexer.l_datum, null],\n\n // for dot comma `(a .,b)\n [/\\./, Lexer.boundary, /,/, null, null],\n\n // block symbols\n [/\\|/, null, null, null, Lexer.b_symbol],\n [/\\s/, null, null, Lexer.b_symbol, Lexer.b_symbol],\n [/\\|/, null, Lexer.boundary, Lexer.b_symbol, null]\n];\n// ----------------------------------------------------------------------\nLexer._brackets = [\n [/[()[\\]]/, null, null, null, null]\n];\n// ----------------------------------------------------------------------\n// :: symbols should be matched last\n// ----------------------------------------------------------------------\nLexer._symbol_rules = [\n [/\\S/, Lexer.boundary, Lexer.boundary, null, null],\n [/\\S/, Lexer.boundary, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, null, null],\n [/\\S/, null, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, Lexer.symbol, null]\n];\n// ----------------------------------------------------------------------\n// :: dynamic getter or Lexer state rules, parser use this\n// :: so in fact user code can modify lexer using syntax extensions\n// ----------------------------------------------------------------------\nLexer._cache = {\n valid: false,\n rules: null\n};\n// ----------------------------------------------------------------------\nspecials.on(['remove', 'append'], function() {\n Lexer._cache.valid = false;\n Lexer._cache.rules = null;\n});\n// ----------------------------------------------------------------------\nObject.defineProperty(Lexer, 'rules', {\n get() {\n if (Lexer._cache.valid) {\n return Lexer._cache.rules;\n }\n var tokens = specials.names().sort((a, b) => {\n return b.length - a.length || a.localeCompare(b);\n });\n\n var special_rules = tokens.reduce((acc, token) => {\n const { type, symbol: special_symbol } = specials.get(token);\n let rules;\n let symbol;\n // we need distinct symbols_ for syntax extensions\n if (token[0] === '#') {\n if (token.length === 1) {\n symbol = Symbol.for(token);\n } else {\n symbol = Symbol.for(token[1]);\n }\n } else {\n symbol = special_symbol;\n }\n if (type === specials.SYMBOL) {\n rules = Lexer.symbol_rule(token, symbol);\n } else {\n rules = Lexer.literal_rule(token, symbol);\n }\n return acc.concat(rules);\n }, []);\n\n Lexer._cache.rules = Lexer._rules.concat(\n Lexer._brackets,\n special_rules,\n Lexer._symbol_rules\n );\n\n Lexer._cache.valid = true;\n return Lexer._cache.rules;\n }\n});\n// ----------------------------------------------------------------------\nfunction match_or_null(re, char) {\n return re === null || char.match(re);\n}\n// ----------------------------------------------------------------------\n// :: Parser inspired by BiwaScheme\n// :: ref: https://github.com/biwascheme/biwascheme/blob/master/src/system/parser.js\n// ----------------------------------------------------------------------\nclass Parser {\n constructor(arg, { env, meta = false, formatter = multiline_formatter } = {}) {\n if (arg instanceof LString) {\n arg = arg.toString();\n }\n\n read_only(this, '_formatter', formatter, { hidden: true });\n read_only(this, '__lexer__', new Lexer(arg));\n read_only(this, '__env__', env);\n\n read_only(this, '_meta', meta, { hidden: true });\n // datum labels\n read_only(this, '_refs', [], { hidden: true });\n }\n resolve(name) {\n return this.__env__ && this.__env__.get(name, { throwError: false });\n }\n async peek() {\n let token;\n while (true) {\n token = this.__lexer__.peek(true);\n if (token === eof) {\n return eof;\n }\n if (this.is_comment(token.token)) {\n this.skip();\n continue;\n }\n if (token.token === '#;') {\n this.skip();\n if (this.__lexer__.peek() === eof) {\n throw new Error('Lexer: syntax error eof found after comment');\n }\n await this._read_object();\n continue;\n }\n break;\n }\n token = this._formatter(token);\n if (this._meta) {\n return token;\n }\n return token.token;\n }\n reset() {\n this._refs.length = 0;\n }\n skip() {\n this.__lexer__.skip();\n }\n async read() {\n const token = await this.peek();\n this.skip();\n return token;\n }\n match_datum_label(token) {\n var m = token.match(/^#([0-9]+)=$/);\n return m && m[1];\n }\n match_datum_ref(token) {\n var m = token.match(/^#([0-9]+)#$/);\n return m && m[1];\n }\n is_open(token) {\n return ['(', '['].includes(token);\n }\n is_close(token) {\n return [')', ']'].includes(token);\n }\n async read_list() {\n let head = nil, prev = head;\n while (true) {\n const token = await this.peek();\n if (token === eof) {\n break;\n }\n if (this.is_close(token)) {\n this.skip();\n break;\n }\n if (token === '.' && head !== nil) {\n this.skip();\n prev.cdr = await this._read_object();\n } else {\n const cur = new Pair(await this._read_object(), nil);\n if (head === nil) {\n head = cur;\n } else {\n prev.cdr = cur;\n }\n prev = cur;\n }\n }\n return head;\n }\n async read_value() {\n var token = await this.read();\n if (token === eof) {\n throw new Error('Parser: Expected token eof found');\n }\n return parse_argument(token);\n }\n is_comment(token) {\n return token.match(/^;/) || (token.match(/^#\\|/) && token.match(/\\|#$/));\n }\n evaluate(code) {\n return evaluate(code, { env: this.__env__, error: (e) => {\n throw e;\n } });\n }\n // public API that handle R7RS datum labels\n async read_object() {\n this.reset();\n var object = await this._read_object();\n if (object instanceof DatumReference) {\n object = object.valueOf();\n }\n if (this._refs.length) {\n return this._resolve_object(object);\n }\n return object;\n }\n async _resolve_object(object) {\n if (Array.isArray(object)) {\n return object.map(item => this._resolve_object(item));\n }\n if (is_plain_object(object)) {\n var result = {};\n Object.keys(object).forEach(key => {\n result[key] = this._resolve_object(object[key]);\n });\n return result;\n }\n if (object instanceof Pair) {\n return this._resolve_pair(object);\n }\n return object;\n }\n async _resolve_pair(pair) {\n if (pair instanceof Pair) {\n if (pair.car instanceof DatumReference) {\n pair.car = await pair.car.valueOf();\n } else {\n this._resolve_pair(pair.car);\n }\n if (pair.cdr instanceof DatumReference) {\n pair.cdr = await pair.cdr.valueOf();\n } else {\n this._resolve_pair(pair.cdr);\n }\n }\n return pair;\n }\n async _read_object() {\n const token = await this.peek();\n if (token === eof) {\n return token;\n }\n if (is_special(token)) {\n // bultin parser extensions are mapping short symbol to longer symbol\n // that can be function or macro, parser don't care\n // if it's not bultin then the extension can be macro or function\n // FUNCTION: when it's used it get arguments like FEXPR and\n // result is returned by parser as is\n // MACRO: if macros are used they are evaluated in place and\n // result is returned by parser but they are quoted\n const special = specials.get(token);\n const bultin = is_builtin(token);\n this.skip();\n let expr;\n const object = await this._read_object();\n if (!bultin) {\n var extension = this.__env__.get(special.symbol);\n if (typeof extension === 'function') {\n if (is_literal(token)) {\n return extension.call(this.__env__, object);\n } else if (object instanceof Pair) {\n return extension.apply(this.__env__, object.to_array(false));\n }\n throw new Error('Parse Error: Invalid parser extension ' +\n `invocation ${special.symbol}`);\n }\n }\n if (is_literal(token)) {\n expr = new Pair(\n special.symbol,\n new Pair(\n object,\n nil\n )\n );\n } else {\n expr = new Pair(\n special.symbol,\n object\n );\n }\n // builtin parser extensions just expand into lists like 'x ==> (quote x)\n if (bultin) {\n return expr;\n }\n // evaluate parser extension at parse time\n if (extension instanceof Macro) {\n var result = await this.evaluate(expr);\n // we need literal quote to make macro that return pair works\n // because after parser return the value it will be evaluated again\n // by the interpreter, so we create quoted expression\n if (result instanceof Pair || result instanceof LSymbol) {\n return Pair.fromArray([LSymbol('quote'), result]);\n }\n return result;\n } else {\n throw new Error('Parse Error: invlid parser extension: ' +\n special.symbol);\n }\n }\n var ref = this.match_datum_ref(token);\n if (ref !== null) {\n this.skip();\n if (this._refs[ref]) {\n return new DatumReference(ref, this._refs[ref]);\n }\n throw new Error(`Parse Error: invalid datum label #${ref}#`);\n }\n var ref_label = this.match_datum_label(token);\n if (ref_label !== null) {\n this.skip();\n this._refs[ref_label] = this._read_object();\n return this._refs[ref_label];\n } else if (this.is_open(token)) {\n this.skip();\n return this.read_list();\n } else {\n return this.read_value();\n }\n }\n}\n// ----------------------------------------------------------------------\n// :: parser helper that allow to handle circular list structures\n// :: using datum labels\n// ----------------------------------------------------------------------\nclass DatumReference {\n constructor(name, data) {\n this.name = name;\n this.data = data;\n }\n valueOf() {\n return this.data;\n }\n}\n// ----------------------------------------------------------------------\n// :: tokens are the array of strings from tokenizer\n// :: the return value is array of lisp code created out of Pair class\n// :: env is needed for parser extensions that will invoke the function\n// :: or macro assigned to symbol, this function is async because\n// :: it evaluate the code, from parser extensions, that may return promise\n// ----------------------------------------------------------------------\nasync function* parse(arg, env) {\n if (!env) {\n if (global_env) {\n env = global_env.get('**interaction-environment**', {\n throwError: false\n });\n } else {\n env = user_env;\n }\n }\n const parser = new Parser(arg, { env });\n while (true) {\n const expr = await parser.read_object();\n if (expr === eof) {\n break;\n }\n yield expr;\n }\n}\n// ----------------------------------------------------------------------\nfunction unpromise(value, fn = x => x, error = null) {\n if (is_promise(value)) {\n var ret = value.then(fn);\n if (error === null) {\n return ret;\n } else {\n return ret.catch(error);\n }\n }\n if (value instanceof Array) {\n return unpromise_array(value, fn, error);\n }\n if (is_plain_object(value)) {\n return unpromise_object(value, fn, error);\n }\n return fn(value);\n}\n// ----------------------------------------------------------------------\nfunction unpromise_array(array, fn, error) {\n if (array.find(is_promise)) {\n return unpromise(promise_all(array), (arr) => {\n if (Object.isFrozen(array)) {\n Object.freeze(arr);\n }\n return arr;\n }, error);\n }\n return fn(array);\n}\n// ----------------------------------------------------------------------\nfunction unpromise_object(object, fn, error) {\n const keys = Object.keys(object);\n const values = [], anyPromise = [];\n let i = keys.length;\n while (i--) {\n const key = keys[i];\n const value = object[key];\n values[i] = value;\n if (is_promise(value)) {\n anyPromise.push(value);\n }\n }\n if (anyPromise.length) {\n return unpromise(promise_all(values), (values) => {\n const result = {};\n values.forEach((value, i) => {\n const key = keys[i];\n result[key] = value;\n });\n if (Object.isFrozen(object)) {\n Object.freeze(result);\n }\n return result;\n }, error);\n }\n return fn(object);\n}\n// ----------------------------------------------------------------------\nfunction read_only(object, property, value, { hidden = false } = {}) {\n Object.defineProperty(object, property, {\n value,\n configurable: true,\n enumerable: !hidden\n });\n}\n// ----------------------------------------------------------------------\n// :: Function similar to Array.from that work on async iterators\n// ----------------------------------------------------------------------\nasync function uniterate_async(object) {\n const result = [];\n for await (let item of object) {\n result.push(item);\n }\n return result;\n}\n// ----------------------------------------------------------------------\n// :: function that return mather function that match string against string\n// ----------------------------------------------------------------------\nfunction matcher(name, arg) {\n if (arg instanceof RegExp) {\n return x => String(x).match(arg);\n } else if (is_function(arg)) {\n // it will always be function\n return arg;\n }\n throw new Error('Invalid matcher');\n}\n// ----------------------------------------------------------------------\n// :: documentaton decorator to LIPS functions if lines starts with :\n// :: they are ignored (not trim) otherwise it trim so\n// :: so you can have indent in source code\n// ----------------------------------------------------------------------\nfunction doc(name, fn, doc, dump) {\n if (typeof name !== 'string') {\n fn = arguments[0];\n doc = arguments[1];\n dump = arguments[2];\n name = null;\n }\n if (doc) {\n if (dump) {\n fn.__doc__ = doc;\n } else {\n fn.__doc__ = trim_lines(doc);\n }\n }\n if (name) {\n fn.__name__ = name;\n } else if (fn.name && !is_lambda(fn)) {\n fn.__name__ = fn.name;\n }\n return fn;\n}\n// ----------------------------------------------------------------------\nfunction trim_lines(string) {\n return string.split('\\n').map(line => {\n return line.trim();\n }).join('\\n');\n}\n// ----------------------------------------------------------------------\n// return last S-Expression\n// @param tokens - array of tokens (objects from tokenizer or strings)\n// @param sexp - number of expression to look behind\n// ----------------------------------------------------------------------\nfunction previousSexp(tokens, sexp = 1) {\n var i = tokens.length;\n if (sexp <= 0) {\n throw Error(`previousSexp: Invalid argument sexp = ${sexp}`);\n }\n outer: while (sexp-- && i >= 0) {\n var count = 1;\n while (count > 0) {\n var token = tokens[--i];\n if (!token) {\n break outer;\n }\n if (token === '(' || token.token === '(') {\n count--;\n } else if (token === ')' || token.token === ')') {\n count++;\n }\n }\n i--;\n }\n return tokens.slice(i + 1);\n}\n// ----------------------------------------------------------------------\n// :: find number of spaces in line\n// ----------------------------------------------------------------------\nfunction lineIndent(tokens) {\n if (!tokens || !tokens.length) {\n return 0;\n }\n var i = tokens.length;\n if (tokens[i - 1].token === '\\n') {\n return 0;\n }\n while (--i) {\n if (tokens[i].token === '\\n') {\n var token = (tokens[i + 1] || {}).token;\n if (token) {\n return token.length;\n }\n }\n }\n return 0;\n}\n// ----------------------------------------------------------------------\n// :: token based pattern matching (used by formatter)\n// ----------------------------------------------------------------------\n/*\n function nested_pattern(pattern) {\n return pattern instanceof Array ||\n pattern instanceof Pattern;\n }\n*/\n// ----------------------------------------------------------------------\nfunction match(pattern, input) {\n return inner_match(pattern, input) === input.length;\n function inner_match(pattern, input) {\n /*\n function empty_match() {\n if (p <= 0 && i <= 0) {\n return false;\n }\n var prev_pattern = pattern[p - 1];\n if (!nested_pattern(prev_pattern)) {\n prev_pattern = [prev_pattern];\n }\n var next_pattern = pattern[p + 1];\n if (next_pattern && !nested_pattern(next_pattern)) {\n next_pattern = [next_pattern];\n }\n return match(prev_pattern, [input[i - 1]]) &&\n (!next_pattern || match(next_pattern, [input[i]]));\n }\n */\n function get_first_match(patterns, input) {\n for (let p of patterns) {\n const m = inner_match(p, input);\n if (m !== -1) {\n return m;\n }\n }\n return -1;\n }\n function not_symbol_match() {\n return pattern[p] === Symbol.for('symbol') && !is_symbol_string(input[i]);\n }\n function match_next() {\n var next_pattern = pattern[p + 1];\n var next_input = input[i + 1];\n if (next_pattern !== undefined && next_input !== undefined) {\n return inner_match([next_pattern], [next_input]);\n }\n }\n var p = 0;\n var glob = {};\n for (var i = 0; i < input.length; ++i) {\n if (typeof pattern[p] === 'undefined') {\n return i;\n }\n if (pattern[p] instanceof Pattern) {\n var m;\n if (['+', '*'].includes(pattern[p].flag)) {\n while (i < input.length) {\n m = get_first_match(pattern[p].patterns, input.slice(i));\n if (m === -1) {\n break;\n }\n i += m;\n }\n i -= 1;\n p++;\n continue;\n } else if (pattern[p].flag === '?') {\n m = get_first_match(pattern[p].patterns, input.slice(i));\n if (m === -1) {\n i -= 2; // if not found use same test on same input again\n } else {\n p++;\n }\n continue;\n }\n } else if (pattern[p] instanceof RegExp) {\n if (!input[i].match(pattern[p])) {\n return -1;\n }\n } else if (lips.LString.isString(pattern[p])) {\n if (pattern[p].valueOf() !== input[i]) {\n return -1;\n }\n } else if (typeof pattern[p] === 'symbol') {\n if (pattern[p] === Symbol.for('*')) {\n // ignore S-expressions inside for case when next pattern is )\n glob[p] = glob[p] || 0;\n //var zero_match = empty_match();\n if (['(', '['].includes(input[i])) {\n glob[p]++;\n } else if ([')', ']'].includes(input[i])) {\n glob[p]--;\n }\n if ((typeof pattern[p + 1] !== 'undefined' &&\n glob[p] === 0 && match_next() === -1) ||\n glob[p] > 0) {\n continue;\n }\n } else if (not_symbol_match()) {\n return -1;\n }\n } else if (pattern[p] instanceof Array) {\n var inc = inner_match(pattern[p], input.slice(i));\n if (inc === -1 || inc + i > input.length) {\n // if no more input it's not match\n return -1;\n }\n i += inc - 1;\n p++;\n continue;\n } else {\n return -1;\n }\n p++;\n }\n if (pattern.length !== p) {\n // if there are still patterns it's not match\n return -1;\n }\n return input.length;\n }\n}\n// ----------------------------------------------------------------------\n// :: Code formatter class\n// :: based on http://community.schemewiki.org/?scheme-style\n// :: and GNU Emacs scheme mode\n// :: it rely on meta data from tokenizer function\n// ----------------------------------------------------------------------\nfunction Formatter(code) {\n this.__code__ = code.replace(/\\r/g, '');\n}\n// ----------------------------------------------------------------------\nFormatter.defaults = {\n offset: 0,\n indent: 2,\n exceptions: {\n specials: [\n /* eslint-disable max-len */\n /^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\\*)?)$/\n /* eslint-enable */\n ],\n shift: {\n 1: ['&', '#']\n }\n }\n};\nFormatter.match = match;\n// ----------------------------------------------------------------------\n// :: return indent for next line\n// ----------------------------------------------------------------------\nFormatter.prototype._options = function _options(options) {\n var defaults = Formatter.defaults;\n if (typeof options === 'undefined') {\n return Object.assign({}, defaults);\n }\n var exeptions = options && options.exceptions || {};\n var specials = exeptions.specials || [];\n var shift = exeptions.shift || { 1: [] };\n return {\n ...defaults,\n ...options,\n exceptions: {\n specials: [...defaults.exceptions.specials, ...specials],\n shift: {\n ...shift,\n 1: [...defaults.exceptions.shift[1], ...shift[1]]\n }\n }\n };\n};\n// ----------------------------------------------------------------------\nFormatter.prototype.indent = function indent(options) {\n var tokens = tokenize(this.__code__, true);\n return this._indent(tokens, options);\n};\n// ----------------------------------------------------------------------\nFormatter.exception_shift = function(token, settings) {\n function match(list) {\n if (!list.length) {\n return false;\n }\n if (list.indexOf(token) !== -1) {\n return true;\n } else {\n var regexes = list.filter(s => s instanceof RegExp);\n if (!regexes.length) {\n return false;\n }\n for (let re of regexes) {\n if (token.match(re)) {\n return true;\n }\n }\n }\n return false;\n }\n if (match(settings.exceptions.specials)) {\n return settings.indent;\n }\n var shift = settings.exceptions.shift;\n for (var [indent, tokens] of Object.entries(shift)) {\n if (match(tokens)) {\n return +indent;\n }\n }\n return -1;\n};\n// ----------------------------------------------------------------------\nFormatter.prototype._indent = function _indent(tokens, options) {\n var settings = this._options(options);\n var spaces = lineIndent(tokens);\n var sexp = previousSexp(tokens);\n // one character before S-Expression\n var before_sexpr = tokens[tokens.length - sexp.length - 1];\n var last = tokens[tokens.length - 1];\n if (last.token.match(/^\"[\\S\\s]+[^\"]$/)) {\n return spaces + settings.indent;\n }\n if (sexp && sexp.length) {\n if (sexp[0].line > 0) {\n settings.offset = 0;\n }\n if (sexp.toString() === tokens.toString() && balanced(sexp)) {\n return settings.offset + sexp[0].col;\n } else if (sexp.length === 1) {\n return settings.offset + sexp[0].col + 1;\n } else {\n // search for token before S-Expression for case like #(10 or &(:x\n var exeption = -1;\n if (before_sexpr) {\n var shift = Formatter.exception_shift(before_sexpr.token, settings);\n if (shift !== -1) {\n exeption = shift;\n }\n }\n if (exeption === -1) {\n exeption = Formatter.exception_shift(sexp[1].token, settings);\n }\n if (exeption !== -1) {\n return settings.offset + sexp[0].col + exeption;\n } else if (sexp[0].line < sexp[1].line) {\n return settings.offset + sexp[0].col + 1;\n } else if (sexp.length > 3 && sexp[1].line === sexp[3].line) {\n if (sexp[1].token === '(' || sexp[1].token === '[') {\n return settings.offset + sexp[1].col;\n }\n return settings.offset + sexp[3].col;\n } else if (sexp[0].line === sexp[1].line) {\n return settings.offset + settings.indent + sexp[0].col;\n } else {\n var next_tokens = sexp.slice(2);\n for (var i = 0; i < next_tokens.length; ++i) {\n var token = next_tokens[i];\n if (token.token.trim()) {\n return token.col;\n }\n }\n }\n }\n } else {\n return 0;\n }\n return spaces + settings.indent;\n};\n// ----------------------------------------------------------------------\nfunction Ahead(pattern) {\n this.pattern = pattern;\n}\n// TODO: make it print\nAhead.prototype.toString = function() {\n return `#`;\n};\n// ----------------------------------------------------------------------\nAhead.prototype.match = function(string) {\n return string.match(this.pattern);\n};\n// ----------------------------------------------------------------------\n// Pattern have any number of patterns that is match using OR operator\n// pattern is in form of array with regular expressions\n// ----------------------------------------------------------------------\nfunction Pattern(...args) {\n var flag = args.pop();\n this.patterns = args;\n this.flag = flag;\n}\nPattern.prototype.toString = function() {\n var patterns = this.patterns.map(x => toString(x)).join('|');\n return `#`;\n};\n// ----------------------------------------------------------------------\nFormatter.Pattern = Pattern;\nFormatter.Ahead = Ahead;\nvar p_o = /^[[(]$/;\nvar p_e = /^[\\])]$/;\nvar not_p = /[^()[\\]]/;\nconst not_close = new Ahead(/[^)\\]]/);\n//const open = new Ahead(/[([]/);\nconst glob = Symbol.for('*');\nconst sexp_or_atom = new Pattern([p_o, glob, p_e], [not_p], '+');\nconst sexp = new Pattern([p_o, glob, p_e], '+');\nconst symbol = new Pattern([Symbol.for('symbol')], '?');\nconst symbols = new Pattern([Symbol.for('symbol')], '*');\nconst identifiers = [p_o, symbols, p_e];\nconst let_value = new Pattern([p_o, Symbol.for('symbol'), glob, p_e], '+');\n// rules for breaking S-Expressions into lines\nvar def_lambda_re = keywords_re('define', 'lambda', 'define-macro', 'syntax-rules');\n/* eslint-disable max-len */\nvar non_def = /^(?!.*\\b(?:[()[\\]]|define(?:-macro)?|let(?:\\*|rec|-env|-syntax|)?|lambda|syntax-rules)\\b).*$/;\n/* eslint-enable */\nvar let_re = /^(?:#:)?(let(?:\\*|rec|-env|-syntax)?)$/;\n// match keyword if it's normal token or gensym (prefixed with #:)\nfunction keywords_re(...args) {\n return new RegExp(`^(?:#:)?(?:${args.join('|')})$`);\n}\n// line breaking rules\nFormatter.rules = [\n [[sexp], 0, not_close],\n [[p_o, keywords_re('begin', 'cond-expand')], 1],\n [[p_o, let_re, symbol, p_o, let_value, p_e], 1],\n [[p_o, let_re, symbol, sexp_or_atom], 1, not_close],\n [[p_o, let_re, p_o, let_value], 1, not_close],\n //--[[p_o, keywords_re('define-syntax'), /.+/], 1],\n [[p_o, non_def, new Pattern([/[^()[\\]]/], '+'), sexp], 1, not_close],\n [[p_o, sexp], 1, not_close],\n [[p_o, not_p, sexp], 1, not_close],\n [[p_o, keywords_re('lambda', 'if'), not_p], 1, not_close],\n [[p_o, keywords_re('while'), not_p, sexp], 1, not_close],\n [[p_o, keywords_re('if'), not_p, glob], 1],\n [[p_o, def_lambda_re, identifiers], 0, not_close],\n [[p_o, def_lambda_re, identifiers, string_re], 0, not_close],\n [[p_o, def_lambda_re, identifiers, string_re, sexp], 0, not_close],\n [[p_o, def_lambda_re, identifiers, sexp], 0, not_close]\n];\n// ----------------------------------------------------------------------\nFormatter.prototype.break = function() {\n var code = this.__code__.replace(/\\n[ \\t]*/g, '\\n ').replace(/^\\s+/, '');\n // function that work when calling tokenize with meta data or not\n const token = t => {\n if (t.token.match(string_re) || t.token.match(re_re)) {\n return t.token;\n } else {\n return t.token.replace(/\\s+/, ' ');\n }\n };\n const first_token_index = tokens => {\n for (let i = tokens.length; i--;) {\n const token = tokens[i];\n if (token.trim() && !is_special(token)) {\n return tokens.length - i - 1;\n }\n }\n };\n // tokenize is part of the parser/lexer that split code into tokens and inclue\n // meta data like number of column or line\n var tokens = tokenize(code, true).map(token).filter(t => t !== '\\n');\n const { rules } = Formatter;\n outer: for (let i = 1; i < tokens.length; ++i) {\n if (!tokens[i].trim()) {\n continue;\n }\n var sub = tokens.slice(0, i);\n var sexp = {};\n rules.map(b => b[1]).forEach(count => {\n count = count.valueOf();\n // some patterns require to check what was before like\n // if inside let binding\n if (count > 0 && !sexp[count]) {\n sexp[count] = previousSexp(sub, count);\n }\n });\n for (let [pattern, count, ext] of rules) {\n count = count.valueOf();\n // 0 count mean ignore the previous S-Expression\n var test_sexp = count > 0 ? sexp[count] : sub;\n const input = test_sexp.filter(t => t.trim() && !is_special(t));\n const inc = first_token_index(test_sexp);\n var m = match(pattern, input);\n var next = tokens.slice(i).find(t => t.trim() && !is_special(t));\n if (m && (ext instanceof Ahead && ext.match(next) || !ext)) {\n const index = i - inc;\n if (tokens[index] !== '\\n') {\n if (!tokens[index].trim()) {\n tokens[index] = '\\n';\n } else {\n tokens.splice(index, 0, '\\n');\n i++;\n }\n }\n i += inc;\n continue outer;\n }\n }\n }\n this.__code__ = tokens.join('');\n return this;\n};\n// ----------------------------------------------------------------------\nFormatter.prototype._spaces = function(i) {\n return new Array(i + 1).join(' ');\n};\n// ----------------------------------------------------------------------\n// :: auto formatting of code, it require to have newlines\n// ----------------------------------------------------------------------\nFormatter.prototype.format = function format(options) {\n // prepare code with single space after newline\n // so we have space token to align\n var code = this.__code__.replace(/[ \\t]*\\n[ \\t]*/g, '\\n ');\n var tokens = tokenize(code, true);\n var settings = this._options(options);\n var indent = 0;\n var offset = 0;\n for (var i = 0; i < tokens.length; ++i) {\n var token = tokens[i];\n if (token.token === '\\n') {\n indent = this._indent(tokens.slice(0, i), settings);\n offset += indent;\n if (tokens[i + 1]) {\n tokens[i + 1].token = this._spaces(indent);\n // because we have single space as initial indent\n indent--;\n offset--;\n for (var j = i + 2; j < tokens.length; ++j) {\n tokens[j].offset += offset;\n tokens[j].col += indent;\n if (tokens[j].token === '\\n') {\n // ++i is called after the loop\n i = j - 1;\n break;\n }\n }\n }\n }\n }\n return tokens.map(token => {\n if (token.token.match(string_re)) {\n if (token.token.match(/\\n/)) {\n var spaces = new Array(token.col + 1).join(' ');\n var lines = token.token.split('\\n');\n token.token = [lines[0]].concat(lines.slice(1).map(line => {\n return spaces + line;\n })).join('\\n');\n }\n }\n return token.token;\n }).join('');\n};\n// ----------------------------------------------------------------------\n// :: flatten nested arrays\n// :: ref: https://stackoverflow.com/a/27282907/387194\n// ----------------------------------------------------------------------\nfunction flatten(array, mutable) {\n var toString = Object.prototype.toString;\n var arrayTypeStr = '[object Array]';\n\n var result = [];\n var nodes = (mutable && array) || array.slice();\n var node;\n\n if (!array.length) {\n return result;\n }\n\n node = nodes.pop();\n\n do {\n if (toString.call(node) === arrayTypeStr) {\n nodes.push.apply(nodes, node);\n } else {\n result.push(node);\n }\n } while (nodes.length && (node = nodes.pop()) !== undefined);\n\n result.reverse(); // we reverse result to restore the original order\n return result;\n}\n// ----------------------------------------------------------------------\n// :: Nil constructor with only once instance\n// ----------------------------------------------------------------------\nfunction Nil() {}\nNil.prototype.toString = function() {\n return '()';\n};\nNil.prototype.valueOf = function() {\n return undefined;\n};\nNil.prototype.serialize = function() {\n return 0;\n};\nNil.prototype.to_object = function() {\n return {};\n};\nNil.prototype.append = function(x) {\n return new Pair(x, nil);\n};\nNil.prototype.to_array = function() {\n return [];\n};\nvar nil = new Nil();\n// ----------------------------------------------------------------------\n// :: Pair constructor\n// ----------------------------------------------------------------------\nfunction Pair(car, cdr) {\n if (typeof this !== 'undefined' && this.constructor !== Pair ||\n typeof this === 'undefined') {\n return new Pair(car, cdr);\n }\n this.car = car;\n this.cdr = cdr;\n}\n// ----------------------------------------------------------------------\nfunction to_array(name, deep) {\n return function recur(list) {\n typecheck(name, list, ['pair', 'nil']);\n if (list === nil) {\n return [];\n }\n var result = [];\n var node = list;\n while (true) {\n if (node instanceof Pair) {\n if (node.haveCycles('cdr')) {\n break;\n }\n var car = node.car;\n if (deep && car instanceof Pair) {\n car = this.get(name).call(this, car);\n }\n result.push(car);\n node = node.cdr;\n } else if (node === nil) {\n break;\n } else {\n throw new Error(`${name}: can't convert improper list`);\n }\n }\n return result;\n };\n}\n// ----------------------------------------------------------------------\nPair.prototype.flatten = function() {\n return Pair.fromArray(flatten(this.to_array()));\n};\n// ----------------------------------------------------------------------\nPair.prototype.length = function() {\n var len = 0;\n var node = this;\n while (true) {\n if (!node || node === nil || !(node instanceof Pair) ||\n node.haveCycles('cdr')) {\n break;\n }\n len++;\n node = node.cdr;\n }\n return len;\n};\n// ----------------------------------------------------------------------\nPair.match = function(obj, item) {\n if (obj instanceof LSymbol) {\n return LSymbol.is(obj, item);\n } else if (obj instanceof Pair) {\n return Pair.match(obj.car, item) || Pair.match(obj.cdr, item);\n } else if (Array.isArray(obj)) {\n return obj.some(x => {\n return Pair.match(x, item);\n });\n } else if (is_plain_object(obj)) {\n return Object.values(obj).some(x => {\n return Pair.match(x, item);\n });\n }\n return false;\n};\n// ----------------------------------------------------------------------\nPair.prototype.find = function(item) {\n return Pair.match(this, item);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.clone = function(deep = true) {\n var visited = new Map();\n function clone(node) {\n if (node instanceof Pair) {\n if (visited.has(node)) {\n return visited.get(node);\n }\n var pair = new Pair();\n visited.set(node, pair);\n if (deep) {\n pair.car = clone(node.car);\n } else {\n pair.car = node.car;\n }\n pair.cdr = clone(node.cdr);\n pair[__cycles__] = node[__cycles__];\n return pair;\n }\n return node;\n }\n return clone(this);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.last_pair = function() {\n let node = this;\n while (true) {\n if (node.cdr === nil) {\n return node;\n }\n node = node.cdr;\n }\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.to_array = function(deep = true) {\n var result = [];\n if (this.car instanceof Pair) {\n if (deep) {\n result.push(this.car.to_array());\n } else {\n result.push(this.car);\n }\n } else {\n result.push(this.car.valueOf());\n }\n if (this.cdr instanceof Pair) {\n result = result.concat(this.cdr.to_array());\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.fromArray = function(array, deep = true, quote = false) {\n if (array instanceof Pair || quote && array instanceof Array && array[__data__]) {\n return array;\n }\n if (deep === false) {\n var list = nil;\n for (let i = array.length; i--;) {\n list = new Pair(array[i], list);\n }\n return list;\n }\n if (array.length && !(array instanceof Array)) {\n array = [...array];\n }\n var result = nil;\n var i = array.length;\n while (i--) {\n let car = array[i];\n if (car instanceof Array) {\n car = Pair.fromArray(car, deep, quote);\n } else if (typeof car === 'string') {\n car = LString(car);\n } else if (typeof car === 'number' && !Number.isNaN(car)) {\n car = LNumber(car);\n }\n result = new Pair(car, result);\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\n// by default to_object was created to create JavaScript objects,\n// so it use valueOf to get native values\n// literal parameter was a hack to allow create LComplex from LIPS code\n// ----------------------------------------------------------------------\nPair.prototype.to_object = function(literal = false) {\n var node = this;\n var result = {};\n while (true) {\n if (node instanceof Pair && node.car instanceof Pair) {\n var pair = node.car;\n var name = pair.car;\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n var cdr = pair.cdr;\n if (cdr instanceof Pair) {\n cdr = cdr.to_object(literal);\n }\n if (is_native(cdr)) {\n if (!literal) {\n cdr = cdr.valueOf();\n }\n }\n result[name] = cdr;\n node = node.cdr;\n } else {\n break;\n }\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.fromPairs = function(array) {\n return array.reduce((list, pair) => {\n return new Pair(\n new Pair(\n new LSymbol(pair[0]),\n pair[1]\n ),\n list\n );\n }, nil);\n};\n\n// ----------------------------------------------------------------------\nPair.fromObject = function(obj) {\n var array = Object.keys(obj).map((key) => [key, obj[key]]);\n return Pair.fromPairs(array);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.reduce = function(fn) {\n var node = this;\n var result = nil;\n while (true) {\n if (node !== nil) {\n result = fn(result, node.car);\n node = node.cdr;\n } else {\n break;\n }\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.reverse = function() {\n if (this.haveCycles()) {\n throw new Error(\"You can't reverse list that have cycles\");\n }\n var node = this;\n var prev = nil;\n while (node !== nil) {\n var next = node.cdr;\n node.cdr = prev;\n prev = node;\n node = next;\n }\n return prev;\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.transform = function(fn) {\n var visited = [];\n function recur(pair) {\n if (pair instanceof Pair) {\n if (pair.replace) {\n delete pair.replace;\n return pair;\n }\n var car = fn(pair.car);\n if (car instanceof Pair) {\n car = recur(car);\n visited.push(car);\n }\n var cdr = fn(pair.cdr);\n if (cdr instanceof Pair) {\n cdr = recur(cdr);\n visited.push(cdr);\n }\n return new Pair(car, cdr);\n }\n return pair;\n }\n return recur(this);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.map = function(fn) {\n if (typeof this.car !== 'undefined') {\n return new Pair(fn(this.car), this.cdr === nil ? nil : this.cdr.map(fn));\n } else {\n return nil;\n }\n};\nvar repr = new Map();\n// ----------------------------------------------------------------------\nfunction is_plain_object(object) {\n return object && typeof object === 'object' && object.constructor === Object;\n}\n// ----------------------------------------------------------------------\nvar props = Object.getOwnPropertyNames(Array.prototype);\nvar array_methods = [];\nprops.forEach(x => {\n array_methods.push(Array[x], Array.prototype[x]);\n});\n// ----------------------------------------------------------------------\nfunction is_array_method(x) {\n x = unbind(x);\n return array_methods.includes(x);\n}\n// ----------------------------------------------------------------------\nfunction is_lips_function(x) {\n return is_function(x) && (is_lambda(x) || x.__doc__);\n}\n// ----------------------------------------------------------------------\nfunction user_repr(obj) {\n var constructor = obj.constructor || Object;\n var plain_object = is_plain_object(obj);\n var iterator = is_function(obj[Symbol.asyncIterator]) ||\n is_function(obj[Symbol.iterator]);\n var fn;\n if (repr.has(constructor)) {\n fn = repr.get(constructor);\n } else {\n repr.forEach(function(value, key) {\n key = unbind(key);\n // if key is Object it should only work for plain_object\n // because otherwise it will match every object\n // we don't use instanceof so it don't work for subclasses\n if (obj.constructor === key &&\n (key === Object && plain_object && !iterator || key !== Object)) {\n fn = value;\n }\n });\n }\n return fn;\n}\n// ----------------------------------------------------------------------\nvar str_mapping = new Map();\n[\n [true, '#t'],\n [false, '#f'],\n [null, 'null'],\n [undefined, '#']\n].forEach(([key, value]) => {\n str_mapping.set(key, value);\n});\n// ----------------------------------------------------------------------\n// :: debug function that can be used with JSON.stringify\n// :: that will show symbols\n// ----------------------------------------------------------------------\n/* istanbul ignore next */\nfunction symbolize(obj) {\n if (obj && typeof obj === 'object') {\n var result = {};\n const symbols = Object.getOwnPropertySymbols(obj);\n symbols.forEach((key) => {\n const name = key.toString()\n .replace(/Symbol\\(([^)]+)\\)/, '$1');\n result[name] = toString(obj[key]);\n });\n const props = Object.getOwnPropertyNames(obj);\n props.forEach(key => {\n const o = obj[key];\n if (o && typeof o === 'object' && o.constructor === Object) {\n result[key] = symbolize(o);\n } else {\n result[key] = toString(o);\n }\n });\n return result;\n }\n return obj;\n}\n// ----------------------------------------------------------------------\nfunction get_props(obj) {\n return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n// ----------------------------------------------------------------------\nfunction has_own_function(obj, name) {\n return obj.hasOwnProperty(name) && is_function(obj.toString);\n}\n// ----------------------------------------------------------------------\nfunction function_to_string(fn) {\n if (is_native_function(fn)) {\n return '#';\n }\n const constructor = fn.prototype && fn.prototype.constructor;\n if (is_function(constructor) && is_lambda(constructor)) {\n if (fn[__class__] && constructor.hasOwnProperty('__name__')) {\n let name = constructor.__name__;\n if (LString.isString(name)) {\n name = name.toString();\n return `#`;\n }\n return '#';\n }\n }\n if (fn.hasOwnProperty('__name__')) {\n let name = fn.__name__;\n if (typeof name === 'symbol') {\n name = symbol_to_string(name);\n }\n if (typeof name === 'string') {\n return `#`;\n }\n }\n if (has_own_function(fn, 'toString')) {\n return fn.toString();\n } else if (fn.name && !is_lambda(fn)) {\n return `#`;\n } else {\n return '#';\n }\n}\n// ----------------------------------------------------------------------\n// instances extracted to make cyclomatic complexity of toString smaller\nconst instances = new Map();\n// ----------------------------------------------------------------------\n[\n [Error, function(e) {\n return e.message;\n }],\n [Pair, function(pair, { quote, skip_cycles, pair_args }) {\n // make sure that repr directly after update set the cycle ref\n if (!skip_cycles) {\n pair.markCycles();\n }\n return pair.toString(quote, ...pair_args);\n }],\n [LCharacter, function(chr, { quote }) {\n if (quote) {\n return chr.toString();\n }\n return chr.valueOf();\n }],\n [LString, function(str, { quote }) {\n str = str.toString();\n if (quote) {\n return JSON.stringify(str).replace(/\\\\n/g, '\\n');\n }\n return str;\n }],\n [RegExp, function(re) {\n return '#' + re.toString();\n }]\n].forEach(([cls, fn]) => {\n instances.set(cls, fn);\n});\n// ----------------------------------------------------------------------\nconst native_types = [\n LSymbol,\n LNumber,\n Macro,\n Values,\n InputPort,\n OutputPort,\n Environment,\n QuotedPromise\n];\n// ----------------------------------------------------------------------\nfunction toString(obj, quote, skip_cycles, ...pair_args) {\n if (typeof jQuery !== 'undefined' &&\n obj instanceof jQuery.fn.init) {\n return '#';\n }\n if (str_mapping.has(obj)) {\n return str_mapping.get(obj);\n }\n if (is_prototype(obj)) {\n return '#';\n }\n if (obj) {\n var cls = obj.constructor;\n if (instances.has(cls)) {\n return instances.get(cls)(obj, { quote, skip_cycles, pair_args });\n }\n }\n // standard objects that have toString\n for (let type of native_types) {\n if (obj instanceof type) {\n return obj.toString(quote);\n }\n }\n // constants\n if ([nil, eof].includes(obj)) {\n return obj.toString();\n }\n if (is_function(obj)) {\n return function_to_string(obj);\n }\n if (obj === root) {\n return '#';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'object') {\n var constructor = obj.constructor;\n if (!constructor) {\n // this is case of fs.constants in Node.js that is null constructor object\n // this object can be handled like normal object that have properties\n constructor = Object;\n }\n var name;\n if (typeof constructor.__class__ === 'string') {\n name = constructor.__class__;\n } else {\n var fn = user_repr(obj);\n if (fn) {\n if (is_function(fn)) {\n return fn(obj, quote);\n } else {\n throw new Error('toString: Invalid repr value');\n }\n }\n name = constructor.name;\n }\n // user defined representation\n if (is_function(obj.toString) && is_lambda(obj.toString)) {\n return obj.toString().valueOf();\n }\n if (type(obj) === 'instance') {\n if (is_lambda(constructor) && constructor.__name__) {\n name = constructor.__name__.valueOf();\n } else if (!is_native_function(constructor)) {\n name = 'instance';\n }\n }\n if (is_iterator(obj, Symbol.iterator)) {\n if (name) {\n return `#`;\n }\n return '#';\n }\n if (is_iterator(obj, Symbol.asyncIterator)) {\n if (name) {\n return `#`;\n }\n return '#';\n }\n if (name !== '') {\n return '#<' + name + '>';\n }\n return '#';\n }\n if (typeof obj !== 'string') {\n return obj.toString();\n }\n return obj;\n}\n// ----------------------------------------------------------------------------\nfunction is_prototype(obj) {\n return obj &&\n typeof obj === 'object' &&\n obj.hasOwnProperty &&\n obj.hasOwnProperty(\"constructor\") &&\n typeof obj.constructor === \"function\" &&\n obj.constructor.prototype === obj;\n}\n// ----------------------------------------------------------------------------\nPair.prototype.markCycles = function() {\n markCycles(this);\n return this;\n};\n\n// ----------------------------------------------------------------------------\nPair.prototype.haveCycles = function(name = null) {\n if (!name) {\n return this.haveCycles('car') || this.haveCycles('cdr');\n }\n return !!(this[__cycles__] && this[__cycles__][name]);\n};\n\n// ----------------------------------------------------------------------------\nfunction markCycles(pair) {\n var seen_pairs = [];\n var cycles = [];\n var refs = [];\n function visit(pair) {\n if (!seen_pairs.includes(pair)) {\n seen_pairs.push(pair);\n }\n }\n function set(node, type, child, parents) {\n if (child instanceof Pair) {\n if (parents.includes(child)) {\n if (!refs.includes(child)) {\n refs.push(child);\n }\n if (!node[__cycles__]) {\n node[__cycles__] = {};\n }\n node[__cycles__][type] = child;\n if (!cycles.includes(node)) {\n cycles.push(node);\n }\n return true;\n }\n }\n }\n const detect = trampoline(function detect_thunk(pair, parents) {\n if (pair instanceof Pair) {\n delete pair.ref;\n delete pair[__cycles__];\n visit(pair);\n parents.push(pair);\n var car = set(pair, 'car', pair.car, parents);\n var cdr = set(pair, 'cdr', pair.cdr, parents);\n if (!car) {\n detect(pair.car, parents.slice());\n }\n if (!cdr) {\n return new Thunk(() => {\n return detect_thunk(pair.cdr, parents.slice());\n });\n }\n }\n });\n function mark_node(node, type) {\n if (node[__cycles__][type] instanceof Pair) {\n const count = ref_nodes.indexOf(node[__cycles__][type]);\n node[__cycles__][type] = `#${count}#`;\n }\n }\n detect(pair, []);\n var ref_nodes = seen_pairs.filter(node => refs.includes(node));\n ref_nodes.forEach((node, i) => {\n node[__ref__] = `#${i}=`;\n });\n cycles.forEach(node => {\n mark_node(node, 'car');\n mark_node(node, 'cdr');\n });\n}\n\n// ----------------------------------------------------------------------\n// trampoline based recursive pair to string that don't overflow the stack\n// ----------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* istanbul ignore next */\nconst pair_to_string = (function() {\n const prefix = (pair, nested) => {\n var result = [];\n if (pair[__ref__]) {\n result.push(pair[__ref__] + '(');\n } else if (!nested) {\n result.push('(');\n }\n return result;\n };\n const postfix = (pair, nested) => {\n if (!nested || pair[__ref__]) {\n return [')'];\n }\n return [];\n };\n return trampoline(function pairToString(pair, quote, extra = {}) {\n const {\n nested = false,\n result = [],\n cont = () => {\n result.push(...postfix(pair, nested));\n }\n } = extra;\n result.push(...prefix(pair, nested));\n let car;\n if (pair[__cycles__] && pair[__cycles__].car) {\n car = pair[__cycles__].car;\n } else {\n car = toString(pair.car, quote, true, { result, cont });\n }\n if (car !== undefined) {\n result.push(car);\n }\n return new Thunk(() => {\n if (pair.cdr instanceof Pair) {\n if (pair[__cycles__] && pair[__cycles__].cdr) {\n result.push(' . ');\n result.push(pair[__cycles__].cdr);\n } else {\n if (pair.cdr[__ref__]) {\n result.push(' . ');\n } else {\n result.push(' ');\n }\n return pairToString(pair.cdr, quote, {\n nested: true,\n result,\n cont\n });\n }\n } else if (pair.cdr !== nil) {\n result.push(' . ');\n result.push(toString(pair.cdr, quote));\n }\n }, cont);\n });\n})();\n\n// ----------------------------------------------------------------------\nPair.prototype.toString = function(quote, { nested = false } = {}) {\n var arr = [];\n if (this[__ref__]) {\n arr.push(this[__ref__] + '(');\n } else if (!nested) {\n arr.push('(');\n }\n var value;\n if (this[__cycles__] && this[__cycles__].car) {\n value = this[__cycles__].car;\n } else {\n value = toString(this.car, quote, true);\n }\n if (value !== undefined) {\n arr.push(value);\n }\n if (this.cdr instanceof Pair) {\n if (this[__cycles__] && this[__cycles__].cdr) {\n arr.push(' . ');\n arr.push(this[__cycles__].cdr);\n } else {\n if (this.cdr[__ref__]) {\n arr.push(' . ');\n } else {\n arr.push(' ');\n }\n const cdr = this.cdr.toString(quote, { nested: true });\n arr.push(cdr);\n }\n } else if (this.cdr !== nil) {\n arr = arr.concat([' . ', toString(this.cdr, quote, true)]);\n }\n if (!nested || this[__ref__]) {\n arr.push(')');\n }\n return arr.join('');\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.set = function(prop, value) {\n this[prop] = value;\n if (value instanceof Pair) {\n this.markCycles();\n }\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.append = function(arg) {\n if (arg instanceof Array) {\n return this.append(Pair.fromArray(arg));\n }\n var p = this;\n if (p.car === undefined) {\n if (arg instanceof Pair) {\n this.car = arg.car;\n this.cdr = arg.cdr;\n } else {\n this.car = arg;\n }\n } else if (arg !== nil) {\n while (true) {\n if (p instanceof Pair && p.cdr !== nil) {\n p = p.cdr;\n } else {\n break;\n }\n }\n p.cdr = arg;\n }\n return this;\n};\n// ----------------------------------------------------------------------\nPair.prototype.serialize = function() {\n return [\n this.car,\n this.cdr\n ];\n};\n// ----------------------------------------------------------------------\n// :: List iterator (for do-iterator macro)\n// ----------------------------------------------------------------------\nPair.prototype[Symbol.iterator] = function() {\n var node = this;\n return {\n next: function() {\n var cur = node;\n node = cur.cdr;\n if (cur === nil) {\n return { value: undefined, done: true };\n } else {\n return { value: cur.car, done: false };\n }\n }\n };\n};\n// ----------------------------------------------------------------------\n// :: abs that work on BigInt\n// ----------------------------------------------------------------------\nfunction abs(x) {\n return x < 0 ? -x : x;\n}\n// ----------------------------------------------------------------------\nfunction seq_compare(fn, args) {\n var [a, ...rest] = args;\n while (rest.length > 0) {\n var [b] = rest;\n if (!fn(a, b)) {\n return false;\n }\n [a, ...rest] = rest;\n }\n return true;\n}\n\n// ----------------------------------------------------------------------\nfunction equal(x, y) {\n if (is_function(x)) {\n return is_function(y) && unbind(x) === unbind(y);\n } else if (x instanceof LNumber) {\n if (!(y instanceof LNumber)) {\n return false;\n }\n let type;\n if (x.__type__ === y.__type__) {\n if (x.__type__ === 'complex') {\n type = x.__im__.__type__ === y.__im__.__type__ &&\n x.__re__.__type__ === y.__re__.__type__;\n } else {\n type = true;\n }\n if (type && x.cmp(y) === 0) {\n if (x.valueOf() === 0) {\n return Object.is(x.valueOf(), y.valueOf());\n }\n return true;\n }\n }\n return false;\n } else if (typeof x === 'number') {\n if (typeof y !== 'number') {\n return false;\n }\n if (Number.isNaN(x)) {\n return Number.isNaN(y);\n }\n if (x === Number.NEGATIVE_INFINITY) {\n return y === Number.NEGATIVE_INFINITY;\n }\n if (x === Number.POSITIVE_INFINITY) {\n return y === Number.POSITIVE_INFINITY;\n }\n return equal(LNumber(x), LNumber(y));\n } else if (x instanceof LCharacter) {\n if (!(y instanceof LCharacter)) {\n return false;\n }\n return x.__char__ === y.__char__;\n } else {\n return x === y;\n }\n}\n// ----------------------------------------------------------------------\nfunction same_atom(a, b) {\n if (type(a) !== type(b)) {\n return false;\n }\n if (!is_atom(a)) {\n return false;\n }\n if (a instanceof RegExp) {\n return a.source === b.source;\n }\n if (a instanceof LString) {\n return a.valueOf() === b.valueOf();\n }\n return equal(a, b);\n}\n// ----------------------------------------------------------------------\nfunction is_atom(obj) {\n return obj instanceof LSymbol ||\n LString.isString(obj) ||\n obj === nil ||\n obj === null ||\n obj instanceof LCharacter ||\n obj instanceof LNumber ||\n obj === true ||\n obj === false;\n}\n// ----------------------------------------------------------------------\nvar truncate = (function() {\n if (Math.trunc) {\n return Math.trunc;\n } else {\n return function(x) {\n if (x === 0) {\n return 0;\n } else if (x < 0) {\n return Math.ceil(x);\n } else {\n return Math.floor(x);\n }\n };\n }\n})();\n// ----------------------------------------------------------------------\n// :: Macro constructor\n// ----------------------------------------------------------------------\nfunction Macro(name, fn, doc, dump) {\n if (typeof this !== 'undefined' && this.constructor !== Macro ||\n typeof this === 'undefined') {\n return new Macro(name, fn);\n }\n typecheck('Macro', name, 'string', 1);\n typecheck('Macro', fn, 'function', 2);\n if (doc) {\n if (dump) {\n this.__doc__ = doc;\n } else {\n this.__doc__ = trim_lines(doc);\n }\n }\n this.__name__ = name;\n this.__fn__ = fn;\n}\n// ----------------------------------------------------------------------\nMacro.defmacro = function(name, fn, doc, dump) {\n var macro = new Macro(name, fn, doc, dump);\n macro.__defmacro__ = true;\n return macro;\n};\n// ----------------------------------------------------------------------\nMacro.prototype.invoke = function(code, { env, dynamic_scope, error }, macro_expand) {\n var args = {\n dynamic_scope,\n error,\n macro_expand\n };\n var result = this.__fn__.call(env, code, args, this.__name__);\n return result;\n //return macro_expand ? quote(result) : result;\n};\n// ----------------------------------------------------------------------\nMacro.prototype.toString = function() {\n return `#`;\n};\n// ----------------------------------------------------------------------\nconst macro = 'define-macro';\n// ----------------------------------------------------------------------\nconst recur_guard = -10000;\nfunction macro_expand(single) {\n return async function(code, args) {\n var env = args['env'] = this;\n var bindings = [];\n var let_macros = ['let', 'let*', 'letrec'];\n var lambda = global_env.get('lambda');\n var define = global_env.get('define');\n function is_let_macro(symbol) {\n var name = symbol.valueOf();\n return let_macros.includes(name);\n }\n function is_procedure(value, node) {\n return value === define && node.cdr.car instanceof Pair;\n }\n function is_lambda(value) {\n return value === lambda;\n }\n function proc_bindings(node) {\n var names = [];\n while (true) {\n if (node !== nil) {\n if (node instanceof LSymbol) {\n names.push(node.valueOf());\n break;\n }\n names.push(node.car.valueOf());\n node = node.cdr;\n } else {\n break;\n }\n }\n return [...bindings, ...names];\n }\n function let_binding(node) {\n return [...bindings, ...node.to_array(false).map(function(node) {\n if (node instanceof Pair) {\n return node.car.valueOf();\n }\n throw new Error('macroexpand: Invalid let binding');\n })];\n }\n function is_macro(name, value) {\n return value instanceof Macro &&\n value.__defmacro__ &&\n !bindings.includes(name);\n }\n async function expand_let_binding(node, n) {\n if (node === nil) {\n return nil;\n }\n var pair = node.car;\n return new Pair(\n new Pair(\n pair.car,\n await traverse(pair.cdr, n, env)\n ),\n await expand_let_binding(node.cdr)\n );\n }\n async function traverse(node, n, env) {\n if (node instanceof Pair && node.car instanceof LSymbol) {\n if (node[__data__]) {\n return node;\n }\n var name = node.car.valueOf();\n var value = env.get(node.car, { throwError: false });\n var is_let = is_let_macro(node.car);\n\n var is_binding = is_let ||\n is_procedure(value, node) ||\n is_lambda(value);\n\n if (is_binding && node.cdr.car instanceof Pair) {\n var second;\n if (is_let) {\n bindings = let_binding(node.cdr.car);\n second = await expand_let_binding(node.cdr.car, n);\n } else {\n bindings = proc_bindings(node.cdr.car);\n second = node.cdr.car;\n }\n return new Pair(\n node.car,\n new Pair(\n second,\n await traverse(node.cdr.cdr, n, env)\n )\n );\n } else if (is_macro(name, value)) {\n var code = value instanceof Syntax ? node : node.cdr;\n var result = await value.invoke(code, { ...args, env }, true);\n if (value instanceof Syntax) {\n const { expr, scope } = result;\n if (expr instanceof Pair) {\n if (n !== -1 && n <= 1 || n < recur_guard) {\n return expr;\n }\n if (n !== -1) {\n n = n - 1;\n }\n return traverse(expr, n, scope);\n }\n result = expr;\n }\n if (result instanceof LSymbol) {\n return quote(result);\n }\n if (result instanceof Pair) {\n if (n !== -1 && n <= 1 || n < recur_guard) {\n return result;\n }\n if (n !== -1) {\n n = n - 1;\n }\n return traverse(result, n, env);\n }\n if (is_atom(result)) {\n return result;\n }\n }\n }\n // TODO: CYCLE DETECT\n var car = node.car;\n if (car instanceof Pair) {\n car = await traverse(car, n, env);\n }\n var cdr = node.cdr;\n if (cdr instanceof Pair) {\n cdr = await traverse(cdr, n, env);\n }\n var pair = new Pair(car, cdr);\n return pair;\n }\n //var this.__code__ = code;\n if (code.cdr instanceof Pair && LNumber.isNumber(code.cdr.car)) {\n return quote((await traverse(code, code.cdr.car.valueOf(), env)).car);\n }\n if (single) {\n return quote((await traverse(code, 1, env)).car);\n }\n return quote((await traverse(code, -1, env)).car);\n };\n}\n// ----------------------------------------------------------------------\n// TODO: Don't put Syntax as Macro they are not runtime\n// ----------------------------------------------------------------------\nfunction Syntax(fn, env) {\n this.__env__ = env;\n this.__fn__ = fn;\n // allow macroexpand\n this.__defmacro__ = true;\n}\nSyntax.__merge_env__ = Symbol.for('merge');\n// ----------------------------------------------------------------------\nSyntax.prototype = Object.create(Macro.prototype);\nSyntax.prototype.invoke = function(code, { error, env }, macro_expand) {\n var args = {\n error,\n env,\n dynamic_scope: this.__env__,\n macro_expand\n };\n return this.__fn__.call(env, code, args, this.__name__ || 'syntax');\n};\nSyntax.prototype.constructor = Syntax;\nSyntax.prototype.toString = function() {\n if (this.__name__) {\n return `#`;\n }\n return '#';\n};\nSyntax.className = 'syntax';\n// ----------------------------------------------------------------------\n// :: TODO: SRFI-139\n// ----------------------------------------------------------------------\nclass Parameter extends Syntax {\n}\nSyntax.Parameter = Parameter;\n// ----------------------------------------------------------------------\n// :: for usage in syntax-rule when pattern match it will return\n// :: list of bindings from code that match the pattern\n// :: TODO detect cycles\n// ----------------------------------------------------------------------\nfunction extract_patterns(pattern, code, symbols, ellipsis_symbol, scope = {}) {\n var bindings = {\n '...': {\n symbols: { }, // symbols ellipsis (x ...)\n lists: [ ]\n },\n symbols: { }\n };\n const { expansion, define } = scope;\n // pattern_names parameter is used to distinguish\n // multiple matches of ((x ...) ...) agains ((1 2 3) (1 2 3))\n // in loop we add x to the list so we know that this is not\n // duplicated ellipsis symbol\n function log(x) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(x);\n }\n }\n log(symbols);\n /* eslint-disable complexity */\n function traverse(pattern, code, pattern_names = [], ellipsis = false) {\n log({\n code: code && toString(code, true),\n pattern: pattern && toString(pattern, true)\n });\n if (is_atom(pattern) && !(pattern instanceof LSymbol)) {\n return same_atom(pattern, code);\n }\n if (pattern instanceof LSymbol &&\n symbols.includes(pattern.literal())) {\n const ref = expansion.ref(code);\n // shadowing the indentifier works only with lambda and let\n if (LSymbol.is(code, pattern)) {\n if (typeof ref === 'undefined') {\n return true;\n }\n return ref === define || ref === global_env;\n }\n return false;\n }\n // pattern (a b (x ...)) and (x ...) match nil\n if (pattern instanceof Pair &&\n pattern.car instanceof Pair &&\n pattern.car.cdr instanceof Pair &&\n LSymbol.is(pattern.car.cdr.car, ellipsis_symbol)) {\n log('>> 0');\n if (code === nil) {\n log({ pattern: pattern.toString() });\n if (pattern.car.car instanceof LSymbol) {\n if (pattern.car.cdr instanceof Pair &&\n LSymbol.is(pattern.car.cdr.car, ellipsis_symbol)) {\n let name = pattern.car.car.valueOf();\n const last = pattern.last_pair();\n if (LSymbol.is(last.car, ellipsis_symbol)) {\n bindings['...'].symbols[name] = null;\n return true;\n } else {\n return false;\n }\n }\n let name = pattern.car.car.valueOf();\n if (bindings['...'].symbols[name]) {\n throw new Error('syntax: named ellipsis can only ' +\n 'appear onces');\n }\n bindings['...'].symbols[name] = code;\n }\n }\n }\n if (pattern instanceof Pair &&\n pattern.cdr instanceof Pair &&\n LSymbol.is(pattern.cdr.car, ellipsis_symbol)) {\n // pattern (... ???) - SRFI-46\n if (pattern.cdr.cdr !== nil) {\n if (pattern.cdr.cdr instanceof Pair) {\n // if we have (x ... a b) we need to remove two from the end\n const list_len = pattern.cdr.cdr.length();\n let code_len = code.length();\n let list = code;\n while (code_len - 1 > list_len) {\n list = list.cdr;\n code_len--;\n }\n const rest = list.cdr;\n list.cdr = nil;\n if (!traverse(pattern.cdr.cdr, rest, pattern_names, ellipsis)) {\n return false;\n }\n }\n }\n if (pattern.car instanceof LSymbol) {\n let name = pattern.car.__name__;\n if (bindings['...'].symbols[name] &&\n !pattern_names.includes(name) && !ellipsis) {\n throw new Error('syntax: named ellipsis can only appear onces');\n }\n log('>> 1');\n if (code === nil) {\n log('>> 2');\n if (ellipsis) {\n log('NIL');\n bindings['...'].symbols[name] = nil;\n } else {\n log('NULL');\n bindings['...'].symbols[name] = null;\n }\n } else if (code instanceof Pair &&\n (code.car instanceof Pair || code.car === nil)) {\n log('>> 3 ' + ellipsis);\n if (ellipsis) {\n if (bindings['...'].symbols[name]) {\n let node = bindings['...'].symbols[name];\n if (node === nil) {\n node = new Pair(nil, new Pair(code, nil));\n } else {\n node = node.append(new Pair(code, nil));\n }\n bindings['...'].symbols[name] = node;\n } else {\n bindings['...'].symbols[name] = new Pair(code, nil);\n }\n } else {\n log('>> 4');\n bindings['...'].symbols[name] = new Pair(code, nil);\n }\n } else {\n log('>> 6');\n if (code instanceof Pair) {\n log('>> 7 ' + ellipsis);\n pattern_names.push(name);\n if (!bindings['...'].symbols[name]) {\n bindings['...'].symbols[name] = new Pair(\n code,\n nil\n );\n } else {\n const node = bindings['...'].symbols[name];\n bindings['...'].symbols[name] = node.append(\n new Pair(\n code,\n nil\n )\n );\n }\n log({ IIIIII: bindings['...'].symbols[name].toString() });\n } else {\n log('>> 8');\n return false;\n //bindings['...'].symbols[name] = code;\n }\n }\n return true;\n } else if (pattern.car instanceof Pair) {\n var names = [...pattern_names];\n if (code === nil) {\n log('>> 9');\n bindings['...'].lists.push(nil);\n return true;\n }\n log('>> 10');\n let node = code;\n while (node instanceof Pair) {\n if (!traverse(pattern.car, node.car, names, true)) {\n return false;\n }\n node = node.cdr;\n }\n return true;\n }\n return false;\n }\n if (pattern instanceof LSymbol) {\n if (LSymbol.is(pattern, ellipsis_symbol)) {\n throw new Error('syntax: invalid usage of ellipsis');\n }\n log('>> 11');\n const name = pattern.__name__;\n if (symbols.includes(name)) {\n return true;\n }\n log({ name, ellipsis });\n if (ellipsis) {\n bindings['...'].symbols[name] = bindings['...'].symbols[name] || [];\n bindings['...'].symbols[name].push(code);\n }\n bindings.symbols[name] = code;\n if (!bindings.symbols[name]) {\n }\n return true;\n }\n if (pattern instanceof Pair && code instanceof Pair) {\n log('>> 12');\n log({\n a: 12,\n code: code && code.toString(),\n pattern: pattern.toString()\n });\n if (code.cdr === nil) {\n // last item in in call using in recursive calls on\n // last element of the list\n // case of pattern (p . rest) and code (0)\n var rest_pattern = pattern.car instanceof LSymbol &&\n pattern.cdr instanceof LSymbol;\n if (rest_pattern) {\n // fix for SRFI-26 in recursive call of (b) ==> (<> . x)\n // where <> is symbol\n if (!traverse(pattern.car, code.car, pattern_names, ellipsis)) {\n return false;\n }\n log('>> 12 | 1');\n let name = pattern.cdr.valueOf();\n if (!(name in bindings.symbols)) {\n bindings.symbols[name] = nil;\n }\n name = pattern.car.valueOf();\n if (!(name in bindings.symbols)) {\n bindings.symbols[name] = code.car;\n }\n return true;\n }\n }\n log({\n pattern: pattern.toString(),\n code: code.toString()\n });\n // case (x y) ===> (var0 var1 ... varn) where var1 match nil\n if (pattern.cdr instanceof Pair &&\n pattern.car instanceof LSymbol &&\n pattern.cdr.cdr instanceof Pair &&\n pattern.cdr.car instanceof LSymbol &&\n LSymbol.is(pattern.cdr.cdr.car, ellipsis_symbol) &&\n pattern.cdr.cdr.cdr instanceof Pair &&\n !LSymbol.is(pattern.cdr.cdr.cdr.car, ellipsis_symbol) &&\n traverse(pattern.car, code.car, pattern_names, ellipsis) &&\n traverse(pattern.cdr.cdr.cdr, code.cdr, pattern_names, ellipsis)) {\n const name = pattern.cdr.car.__name__;\n log({\n pattern: pattern.car.toString(),\n code: code.car.toString(),\n name\n });\n if (symbols.includes(name)) {\n return true;\n }\n bindings['...'].symbols[name] = null;\n return true;\n }\n log('recur');\n if (traverse(pattern.car, code.car, pattern_names, ellipsis) &&\n traverse(pattern.cdr, code.cdr, pattern_names, ellipsis)) {\n return true;\n }\n } else if (pattern === nil && (code === nil || code === undefined)) {\n // undefined is case when you don't have body ...\n // and you do recursive call\n return true;\n } else if (pattern.car instanceof Pair &&\n LSymbol.is(pattern.car.car, ellipsis_symbol)) {\n // pattern (...)\n throw new Error('syntax: invalid usage of ellipsis');\n } else {\n return false;\n }\n }\n /* eslint-enable complexity */\n if (traverse(pattern, code)) {\n return bindings;\n }\n}\n// ----------------------------------------------------------------------\n// :: This function is called after syntax-rules macro is evaluated\n// :: and if there are any gensyms added by macro they need to restored\n// :: to original symbols\n// ----------------------------------------------------------------------\nfunction clear_gensyms(node, gensyms) {\n function traverse(node) {\n if (node instanceof Pair) {\n if (!gensyms.length) {\n return node;\n }\n const car = traverse(node.car);\n const cdr = traverse(node.cdr);\n // TODO: check if it's safe to modify the list\n // some funky modify of code can happen in macro\n return new Pair(car, cdr);\n } else if (node instanceof LSymbol) {\n var replacement = gensyms.find((gensym) => {\n return gensym.gensym === node;\n });\n if (replacement) {\n return LSymbol(replacement.name);\n }\n return node;\n } else {\n return node;\n }\n }\n return traverse(node);\n}\n// ----------------------------------------------------------------------\nfunction transform_syntax(options = {}) {\n const {\n bindings,\n expr,\n scope,\n symbols,\n names,\n ellipsis: ellipsis_symbol } = options;\n var gensyms = {};\n function valid_symbol(symbol) {\n if (symbol instanceof LSymbol) {\n return true;\n }\n return ['string', 'symbol'].includes(typeof symbol);\n }\n function transform(symbol) {\n if (!valid_symbol(symbol)) {\n const t = type(symbol);\n throw new Error(`syntax: internal error, need symbol got ${t}`);\n }\n const name = symbol.valueOf();\n if (name === ellipsis_symbol) {\n throw new Error('syntax: internal error, ellipis not transformed');\n }\n // symbols are gensyms from nested syntax-rules\n var n_type = typeof name;\n if (['string', 'symbol'].includes(n_type)) {\n if (name in bindings.symbols) {\n return bindings.symbols[name];\n } else if (n_type === 'string' && name.match(/\\./)) {\n // calling method on pattern symbol #83\n const parts = name.split('.');\n const first = parts[0];\n if (first in bindings.symbols) {\n return Pair.fromArray([\n LSymbol('.'),\n bindings.symbols[first]\n ].concat(parts.slice(1).map(x => LString(x))));\n }\n }\n }\n if (symbols.includes(name)) {\n return LSymbol(name);\n }\n return rename(name);\n }\n function log(x) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(x);\n }\n }\n function rename(name) {\n if (!gensyms[name]) {\n var ref = scope.ref(name);\n const gensym_name = gensym(name);\n if (ref) {\n const value = scope.get(name);\n scope.set(gensym_name, value);\n } else {\n const value = scope.get(name, { throwError: false });\n // value is not in scope, but it's JavaScript object\n if (typeof value !== 'undefined') {\n scope.set(gensym_name, value);\n }\n }\n // keep names so they can be restored after evaluation\n // if there are free symbols as output\n // kind of hack\n names.push({\n name, gensym: gensym_name\n });\n gensyms[name] = gensym_name;\n // we need to check if name is a string, because it can be\n // gensym from nested syntax-rules\n if (typeof name === 'string' && name.match(/\\./)) {\n const [first, ...rest] = name.split('.').filter(Boolean);\n // save JavaScript dot notation for Env::get\n if (gensyms[first]) {\n hidden_prop(gensym_name, '__object__', [gensyms[first], ...rest]);\n }\n }\n }\n return gensyms[name];\n }\n function transform_ellipsis_expr(expr, bindings, state, next = () => {}) {\n const { nested } = state;\n log(' ==> ' + expr.toString(true));\n log(bindings);\n if (expr instanceof LSymbol) {\n const name = expr.valueOf();\n log('[t 1');\n if (bindings[name]) {\n if (bindings[name] instanceof Pair) {\n const { car, cdr } = bindings[name];\n if (nested) {\n const { car: caar, cdr: cadr } = car;\n if (cadr !== nil) {\n next(name, new Pair(cadr, nil));\n }\n return caar;\n }\n if (cdr !== nil) {\n next(name, cdr);\n }\n return car;\n } else if (bindings[name] instanceof Array) {\n next(name, bindings[name].slice(1));\n return bindings[name][0];\n }\n }\n return transform(name);\n }\n if (expr instanceof Pair) {\n if (expr.car instanceof LSymbol &&\n expr.cdr instanceof Pair &&\n LSymbol.is(expr.cdr.car, ellipsis_symbol)) {\n log('[t 2');\n const name = expr.car.valueOf();\n const item = bindings[name];\n log({ expr: expr.toString(true), name, bindings, item });\n if (item === null) {\n return;\n } else if (item) {\n log({ b: bindings[name].toString() });\n if (item instanceof Pair) {\n log('[t 2 Pair ' + nested);\n log({ ______: item.toString() });\n const { car, cdr } = item;\n if (nested) {\n if (cdr !== nil) {\n log('|| next 1');\n next(name, cdr);\n }\n log({ car: car.toString() });\n return car;\n } else {\n if (car.cdr !== nil) {\n log('|| next 2');\n next(name, new Pair(car.cdr, cdr));\n }\n log({ car: car.car.toString() });\n return car.car;\n }\n } else if (item instanceof Array) {\n log('[t 2 Array ' + nested);\n if (nested) {\n next(name, item.slice(1));\n return Pair.fromArray(item);\n } else {\n const rest = item.slice(1);\n if (rest.length) {\n next(name, rest);\n }\n return item[0];\n }\n } else {\n return item;\n }\n }\n }\n log('[t 3 recur ' + expr.toString());\n const head = transform_ellipsis_expr(expr.car, bindings, state, next);\n const rest = transform_ellipsis_expr(expr.cdr, bindings, state, next);\n return new Pair(\n head,\n rest\n );\n }\n return expr;\n }\n function have_binding(biding, skip_nulls) {\n const values = Object.values(biding);\n const symbols = Object.getOwnPropertySymbols(biding);\n if (symbols.length) {\n values.push(...symbols.map(x => biding[x]));\n }\n return values.length && values.every(x => {\n if (x === null) {\n return !skip_nulls;\n }\n return x instanceof Pair || x === nil ||\n (x instanceof Array && x.length);\n });\n }\n function get_names(object) {\n return Object.keys(object).concat(Object.getOwnPropertySymbols(object));\n }\n /* eslint-disable complexity */\n function traverse(expr, { disabled } = {}) {\n log('traverse>> ' + expr.toString());\n if (expr instanceof Pair) {\n // escape ellispsis from R7RS e.g. (... ...)\n if (!disabled && expr.car instanceof Pair &&\n LSymbol.is(expr.car.car, ellipsis_symbol)) {\n return traverse(expr.car.cdr, { disabled: true });\n }\n if (expr.cdr instanceof Pair &&\n LSymbol.is(expr.cdr.car, ellipsis_symbol) && !disabled) {\n log('>> 1');\n const symbols = bindings['...'].symbols;\n // skip expand list of pattern was (x y ... z)\n // and code was (x z) so y == null\n const values = Object.values(symbols);\n if (values.length && values.every(x => x === null)) {\n return traverse(expr.cdr.cdr, { disabled });\n }\n var keys = get_names(symbols);\n // case of list as first argument ((x . y) ...) or (x ... ...)\n // we need to recursively process the list\n // if we have pattern (_ (x y z ...) ...) and code (foo (1 2) (1 2))\n // x an y will be arrays of [1 1] and [2 2] and z will be array\n // of rest, x will also have it's own mapping to 1 and y to 2\n // in case of usage outside of ellipsis list e.g.: (x y)\n var is_spread = expr.car instanceof LSymbol &&\n LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol);\n if (expr.car instanceof Pair || is_spread) {\n // lists is free ellipsis on pairs ((???) ...)\n // TODO: will this work in every case? Do we need to handle\n // nesting here?\n if (bindings['...'].lists[0] === nil) {\n return nil;\n }\n var new_expr = expr.car;\n if (is_spread) {\n new_expr = new Pair(\n expr.car,\n new Pair(\n expr.cdr.car,\n nil));\n }\n log('>> 2');\n let result;\n if (keys.length) {\n log('>> 2 (a)');\n let bind = { ...symbols };\n result = nil;\n while (true) {\n if (!have_binding(bind)) {\n break;\n }\n const new_bind = {};\n const next = (key, value) => {\n // ellipsis decide it what should be the next value\n // there are two cases ((a . b) ...) and (a ...)\n new_bind[key] = value;\n };\n const car = transform_ellipsis_expr(\n new_expr,\n bind,\n { nested: true },\n next\n );\n // undefined can be null caused by null binding\n // on empty ellipsis\n if (car !== undefined) {\n if (is_spread) {\n if (result === nil) {\n result = car;\n } else {\n result = result.append(car);\n }\n } else {\n result = new Pair(\n car,\n result\n );\n }\n }\n bind = new_bind;\n }\n if (result !== nil && !is_spread) {\n result = result.reverse();\n }\n // case of (list) ... (rest code)\n if (expr.cdr.cdr !== nil &&\n !LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol)) {\n const rest = traverse(expr.cdr.cdr, { disabled });\n return result.append(rest);\n }\n return result;\n } else {\n log('>> 3');\n const car = transform_ellipsis_expr(expr.car, symbols, {\n nested: true\n });\n if (car) {\n return new Pair(\n car,\n nil\n );\n }\n return nil;\n }\n } else if (expr.car instanceof LSymbol) {\n log('>> 4');\n if (LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol)) {\n // case (x ... ...)\n log('>> 4 (a)');\n } else {\n log('>> 4 (b)');\n }\n // case: (x ...)\n let name = expr.car.__name__;\n let bind = { [name]: symbols[name] };\n const is_null = symbols[name] === null;\n let result = nil;\n while (true) {\n if (!have_binding(bind, true)) {\n log({ bind });\n break;\n }\n const new_bind = {};\n const next = (key, value) => {\n new_bind[key] = value;\n };\n const value = transform_ellipsis_expr(\n expr,\n bind,\n { nested: false },\n next\n );\n log({ value: value.toString() });\n if (typeof value !== 'undefined') {\n result = new Pair(\n value,\n result\n );\n }\n bind = new_bind;\n }\n if (result !== nil) {\n result = result.reverse();\n }\n // case if (x ... y ...) second spread is not processed\n // and (??? . x) last symbol\n // by ellipsis transformation\n if (expr.cdr instanceof Pair) {\n if (expr.cdr.cdr instanceof Pair ||\n expr.cdr.cdr instanceof LSymbol) {\n const node = traverse(expr.cdr.cdr, { disabled });\n if (is_null) {\n return node;\n }\n log('<<<< 1');\n result.append(node);\n }\n }\n log('<<<< 2');\n return result;\n }\n }\n const head = traverse(expr.car, { disabled });\n let rest;\n let is_syntax;\n if ((expr.car instanceof LSymbol)) {\n const value = scope.get(expr.car, { throwError: false });\n is_syntax = value instanceof Macro &&\n value.__name__ === 'syntax-rules';\n }\n if (is_syntax) {\n if (expr.cdr.car instanceof LSymbol) {\n rest = new Pair(\n traverse(expr.cdr.car, { disabled }),\n new Pair(\n expr.cdr.cdr.car,\n traverse(expr.cdr.cdr.cdr, { disabled })\n )\n );\n } else {\n rest = new Pair(\n expr.cdr.car,\n traverse(expr.cdr.cdr, { disabled })\n );\n }\n log('REST >>>> ' + rest.toString());\n } else {\n rest = traverse(expr.cdr, { disabled });\n }\n log({\n a: true,\n car: toString(expr.car),\n cdr: toString(expr.cdr),\n head: toString(head),\n rest: toString(rest)\n });\n return new Pair(\n head,\n rest\n );\n }\n if (expr instanceof LSymbol) {\n if (disabled && LSymbol.is(expr, ellipsis_symbol)) {\n return expr;\n }\n const symbols = Object.keys(bindings['...'].symbols);\n const name = expr.literal();\n if (symbols.includes(name)) {\n const msg = `missing ellipsis symbol next to name \\`${name}'`;\n throw new Error(`syntax-rules: ${msg}`);\n }\n const value = transform(expr, { disabled });\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n return expr;\n }\n return traverse(expr, {});\n}\n// ----------------------------------------------------------------------\n// :: check for nullish values\n// ----------------------------------------------------------------------\nfunction is_null(value) {\n return is_undef(value) || value === nil || value === null;\n}\n// ----------------------------------------------------------------------\nfunction is_function(o) {\n return typeof o === 'function' && typeof o.bind === 'function';\n}\n// ----------------------------------------------------------------------\nfunction is_continuation(o) {\n return o instanceof Continuation;\n}\n// ----------------------------------------------------------------------\nfunction is_callable(o) {\n return is_function(o) || is_continuation(o);\n}\n// ----------------------------------------------------------------------\nfunction is_promise(o) {\n if (o instanceof QuotedPromise) {\n return false;\n }\n if (o instanceof Promise) {\n return true;\n }\n return o && is_function(o.then);\n}\n// ----------------------------------------------------------------------\nfunction is_undef(value) {\n return typeof value === 'undefined';\n}\n// ----------------------------------------------------------------------\n// :: Function utilities\n// ----------------------------------------------------------------------\nfunction box(object) {\n // we only need to box lips data, arrays and object don't need\n // to be boxed, values from objects will be boxed when accessed\n switch (typeof object) {\n case 'string':\n return LString(object);\n case 'bigint':\n return LNumber(object);\n case 'number':\n if (Number.isNaN(object)) {\n return nan;\n } else {\n return LNumber(object);\n }\n }\n return object;\n}\n// ----------------------------------------------------------------------\nfunction map_object(object, fn) {\n const props = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols(object);\n props.concat(symbols).forEach(key => {\n const value = fn(object[key]);\n // check if property is read only, happen with webpack\n // and __esModule, it can happen for other properties as well\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor || descriptor.writable && object[key] !== value) {\n object[key] = value;\n }\n });\n return object;\n}\n// ----------------------------------------------------------------------\nfunction unbox(object) {\n var lips_type = [LString, LCharacter, LNumber].some(x => object instanceof x);\n if (lips_type) {\n return object.valueOf();\n }\n if (object instanceof Array) {\n return object.map(unbox);\n }\n if (object instanceof QuotedPromise) {\n delete object.then;\n }\n if (is_plain_object(object)) {\n return map_object(object, unbox);\n }\n return object;\n}\n// ----------------------------------------------------------------------\nfunction patch_value(value, context) {\n if (value instanceof Pair) {\n value.markCycles();\n return quote(value);\n }\n if (is_function(value)) {\n // original function can be restored using unbind function\n // only real JS function require to be bound\n if (context) {\n return bind(value, context);\n }\n }\n return box(value);\n}\n// ----------------------------------------------------------------------\n// :: function get original function that was binded with props\n// ----------------------------------------------------------------------\nfunction unbind(obj) {\n if (is_bound(obj)) {\n return obj[__fn__];\n }\n return obj;\n}\n// ----------------------------------------------------------------------\n// :: function bind with contex that can be optionaly unbind\n// :: get original function with unbind\n// ----------------------------------------------------------------------\nfunction bind(fn, context) {\n if (fn[Symbol.for('__bound__')]) {\n return fn;\n }\n const bound = fn.bind(context);\n const props = Object.getOwnPropertyNames(fn);\n for (var prop of props) {\n if (filter_fn_names(prop)) {\n try {\n bound[prop] = fn[prop];\n } catch (e) {\n // ignore error from express.js while accessing bodyParser\n }\n }\n }\n hidden_prop(bound, '__fn__', fn);\n hidden_prop(bound, '__context__', context);\n hidden_prop(bound, '__bound__', true);\n if (is_native_function(fn)) {\n hidden_prop(bound, '__native__', true);\n }\n if (is_plain_object(context) && is_lambda(fn)) {\n hidden_prop(bound, '__method__', true);\n }\n bound.valueOf = function() {\n return fn;\n };\n return bound;\n}\n// ----------------------------------------------------------------------\n// function used to check if function should not get unboxed arguments,\n// so you can call Object.getPrototypeOf for lips data types\n// this is case, see dir function and #73\n// ----------------------------------------------------------------------\nfunction is_object_bound(obj) {\n return is_bound(obj) && obj[Symbol.for('__context__')] === Object;\n}\n// ----------------------------------------------------------------------\nfunction is_bound(obj) {\n return !!(is_function(obj) && obj[__fn__]);\n}\n// ----------------------------------------------------------------------\nfunction lips_context(obj) {\n if (is_function(obj)) {\n var context = obj[__context__];\n if (context && (context === lips ||\n (context.constructor &&\n context.constructor.__class__))) {\n return true;\n }\n }\n return false;\n}\n// ----------------------------------------------------------------------\nfunction is_port(obj) {\n return obj instanceof InputPort || obj instanceof OutputPort;\n}\n// ----------------------------------------------------------------------\nfunction is_port_method(obj) {\n if (is_function(obj)) {\n if (is_port(obj[__context__])) {\n return true;\n }\n }\n return false;\n}\n// ----------------------------------------------------------------------\n// hidden props\n// ----------------------------------------------------------------------\nvar __context__ = Symbol.for('__context__');\nvar __fn__ = Symbol.for('__fn__');\nvar __data__ = Symbol.for('__data__');\nvar __ref__ = Symbol.for('__ref__');\nvar __cycles__ = Symbol.for('__cycles__');\nvar __class__ = Symbol.for('__class__');\nvar __method__ = Symbol.for('__method__');\nvar __prototype__ = Symbol.for('__prototype__');\nvar __lambda__ = Symbol.for('__lambda__');\n// ----------------------------------------------------------------------\n// :: function bind fn with context but it also move all props\n// :: mostly used for Object function\n// ----------------------------------------------------------------------\nvar exluded_names = ['name', 'length', 'caller', 'callee', 'arguments', 'prototype'];\nfunction filter_fn_names(name) {\n return !exluded_names.includes(name);\n}\n// ----------------------------------------------------------------------\nfunction hidden_prop(obj, name, value) {\n Object.defineProperty(obj, Symbol.for(name), {\n get: () => value,\n set: () => {},\n configurable: false,\n enumerable: false\n });\n}\n// ----------------------------------------------------------------------\nfunction set_fn_length(fn, length) {\n try {\n Object.defineProperty(fn, 'length', {\n get: function() {\n return length;\n }\n });\n return fn;\n } catch (e) {\n // hack that create function with specific length should work for browsers\n // that don't support Object.defineProperty like old IE\n var args = new Array(length).fill(0).map((_, i) => 'a' + i).join(',');\n var wrapper = new Function(`f`, `return function(${args}) {\n return f.apply(this, arguments);\n };`);\n return wrapper(fn);\n }\n}\n// ----------------------------------------------------------------------\nfunction is_lambda(obj) {\n return obj && obj[__lambda__];\n}\n// ----------------------------------------------------------------------\nfunction is_method(obj) {\n return obj && obj[__method__];\n}\n// ----------------------------------------------------------------------\nfunction is_raw_lambda(fn) {\n return is_lambda(fn) && !fn[__prototype__] &&\n !is_method(fn) && !is_port_method(fn);\n}\n// ----------------------------------------------------------------------\nfunction is_native_function(fn) {\n var native = Symbol.for('__native__');\n return is_function(fn) &&\n fn.toString().match(/\\{\\s*\\[native code\\]\\s*\\}/) &&\n ((fn.name.match(/^bound /) && fn[native] === true) ||\n (!fn.name.match(/^bound /) && !fn[native]));\n}\n// ----------------------------------------------------------------------\n// :: function that return macro for let, let* and letrec\n// ----------------------------------------------------------------------\nfunction let_macro(symbol) {\n var name;\n switch (symbol) {\n case Symbol.for('letrec'):\n name = 'letrec';\n break;\n case Symbol.for('let'):\n name = 'let';\n break;\n case Symbol.for('let*'):\n name = 'let*';\n break;\n default:\n throw new Error('Invalid let_macro value');\n }\n return Macro.defmacro(name, function(code, options) {\n var { dynamic_scope, error, macro_expand } = options;\n var args;\n // named let:\n // (let iter ((x 10)) (iter (- x 1))) -> (let* ((iter (lambda (x) ...\n if (code.car instanceof LSymbol) {\n if (!(code.cdr.car instanceof Pair || code.cdr.car === nil)) {\n throw new Error('let require list of pairs');\n }\n var params;\n if (code.cdr.car === nil) {\n args = nil;\n params = nil;\n } else {\n params = code.cdr.car.map(pair => pair.car);\n args = code.cdr.car.map(pair => pair.cdr.car);\n }\n return Pair.fromArray([\n LSymbol('letrec'),\n [[code.car, Pair(\n LSymbol('lambda'),\n Pair(params, code.cdr.cdr))]],\n Pair(code.car, args)\n ]);\n } else if (macro_expand) {\n // Macro.defmacro are special macros that should return lisp code\n // here we use evaluate, so we need to check special flag set by\n // macroexpand to prevent evaluation of code in normal let\n return;\n }\n var self = this;\n args = global_env.get('list->array')(code.car);\n var env = self.inherit(name);\n var values, var_body_env;\n if (name === 'let*') {\n var_body_env = env;\n } else if (name === 'let') {\n values = []; // collect potential promises\n }\n var i = 0;\n function exec() {\n var output = new Pair(new LSymbol('begin'), code.cdr);\n return evaluate(output, {\n env,\n dynamic_scope,\n error\n });\n }\n return (function loop() {\n var pair = args[i++];\n if (dynamic_scope) {\n dynamic_scope = name === 'let*' ? env : self;\n }\n if (!pair) {\n // resolve all promises\n if (values && values.length) {\n var v = values.map(x => x.value);\n var promises = v.filter(is_promise);\n if (promises.length) {\n return promise_all(v).then((arr) => {\n for (var i = 0, len = arr.length; i < len; ++i) {\n env.set(values[i].name, arr[i]);\n }\n }).then(exec);\n } else {\n for (let { name, value } of values) {\n env.set(name, value);\n }\n }\n }\n return exec();\n } else {\n if (name === 'let') {\n var_body_env = self;\n } else if (name === 'letrec') {\n var_body_env = env;\n }\n var value = evaluate(pair.cdr.car, {\n env: var_body_env,\n dynamic_scope,\n error\n });\n if (name === 'let*') {\n var_body_env = env = var_body_env.inherit('let*[' + i + ']');\n }\n if (values) {\n values.push({ name: pair.car, value });\n return loop();\n } else {\n return unpromise(value, function(value) {\n env.set(pair.car, value);\n return loop();\n });\n }\n }\n })();\n });\n}\n// -------------------------------------------------------------------------\nfunction pararel(name, fn) {\n return new Macro(name, function(code, { dynamic_scope, error } = {}) {\n var env = this;\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var node = code;\n var results = [];\n while (node instanceof Pair) {\n results.push(evaluate(node.car, { env, dynamic_scope, error }));\n node = node.cdr;\n }\n var havePromises = results.filter(is_promise).length;\n if (havePromises) {\n return promise_all(results).then(fn.bind(this));\n } else {\n return fn.call(this, results);\n }\n });\n}\n// -------------------------------------------------------------------------\nfunction guard_math_call(fn, ...args) {\n args.forEach(arg => {\n typecheck('', arg, 'number');\n });\n return fn(...args);\n}\n// ----------------------------------------------------------------------\nfunction pipe(...fns) {\n fns.forEach((fn, i) => {\n typecheck('pipe', fn, 'function', i + 1);\n });\n return (...args) => {\n return fns.reduce((args, f) => [f.apply(this, args)], args)[0];\n };\n}\n// -------------------------------------------------------------------------\nfunction compose(...fns) {\n fns.forEach((fn, i) => {\n typecheck('compose', fn, 'function', i + 1);\n });\n return pipe(...fns.reverse());\n}\n// -------------------------------------------------------------------------\n// :: fold functions generator\n// -------------------------------------------------------------------------\nfunction fold(name, fold) {\n var self = this;\n return function recur(fn, init, ...lists) {\n typecheck(name, fn, 'function');\n if (lists.some(is_null)) {\n if (typeof init === 'number') {\n return LNumber(init);\n }\n return init;\n } else {\n return fold.call(self, recur, fn, init, ...lists);\n }\n };\n}\n// -------------------------------------------------------------------------\nfunction limit_math_op(n, fn) {\n // + 1 so it inlcude function in guard_math_call\n return limit(n + 1, curry(guard_math_call, fn));\n}\n// -------------------------------------------------------------------------\n// some functional magic\nvar single_math_op = curry(limit_math_op, 1);\nvar binary_math_op = curry(limit_math_op, 2);\n// -------------------------------------------------------------------------\nfunction reduce_math_op(fn, init = null) {\n return function(...args) {\n if (init !== null) {\n args = [init, ...args];\n }\n return args.reduce(binary_math_op(fn));\n };\n}\n// -------------------------------------------------------------------------\nfunction curry(fn, ...init_args) {\n typecheck('curry', fn, 'function');\n var len = fn.length;\n return function() {\n var args = init_args.slice();\n function call(...more_args) {\n args = args.concat(more_args);\n if (args.length >= len) {\n return fn.apply(this, args);\n } else {\n return call;\n }\n }\n return call.apply(this, arguments);\n };\n}\n// -------------------------------------------------------------------------\n// return function with limited number of arguments\nfunction limit(n, fn) {\n typecheck('limit', fn, 'function', 2);\n return function(...args) {\n return fn(...args.slice(0, n));\n };\n}\n// -------------------------------------------------------------------------\n// :: character object representation\n// -------------------------------------------------------------------------\nfunction LCharacter(char) {\n if (typeof this !== 'undefined' && !(this instanceof LCharacter) ||\n typeof this === 'undefined') {\n return new LCharacter(char);\n }\n if (char instanceof LString) {\n char = char.valueOf();\n }\n var name;\n if (Array.from(char).length > 1) {\n // this is name\n char = char.toLowerCase();\n if (LCharacter.__names__[char]) {\n name = char;\n char = LCharacter.__names__[char];\n } else {\n // this should never happen\n // parser don't alow not defined named characters\n throw new Error('Internal: Unknown named character');\n }\n } else {\n name = LCharacter.__rev_names__[char];\n }\n Object.defineProperty(this, '__char__', {\n value: char,\n enumerable: true\n });\n if (name) {\n Object.defineProperty(this, '__name__', {\n value: name,\n enumerable: true\n });\n }\n}\nLCharacter.__names__ = characters;\nLCharacter.__rev_names__ = {};\nObject.keys(LCharacter.__names__).forEach(key => {\n var value = LCharacter.__names__[key];\n LCharacter.__rev_names__[value] = key;\n});\nLCharacter.prototype.toUpperCase = function() {\n return LCharacter(this.__char__.toUpperCase());\n};\nLCharacter.prototype.toLowerCase = function() {\n return LCharacter(this.__char__.toLowerCase());\n};\nLCharacter.prototype.toString = function() {\n return '#\\\\' + (this.__name__ || this.__char__);\n};\nLCharacter.prototype.valueOf = LCharacter.prototype.serialize = function() {\n return this.__char__;\n};\n// -------------------------------------------------------------------------\n// :: String wrapper that handle copy and in place change\n// -------------------------------------------------------------------------\nfunction LString(string) {\n if (typeof this !== 'undefined' && !(this instanceof LString) ||\n typeof this === 'undefined') {\n return new LString(string);\n }\n if (string instanceof Array) {\n this.__string__ = string.map((x, i) => {\n typecheck('LString', x, 'character', i + 1);\n return x.toString();\n }).join('');\n } else {\n this.__string__ = string.valueOf();\n }\n}\n{\n const ignore = ['length', 'constructor'];\n const _keys = Object.getOwnPropertyNames(String.prototype).filter(name => {\n return !ignore.includes(name);\n });\n const wrap = (fn) => function(...args) {\n return fn.apply(this.__string__, args);\n };\n for (let key of _keys) {\n LString.prototype[key] = wrap(String.prototype[key]);\n }\n}\nLString.prototype.serialize = function() {\n return this.valueOf();\n};\nLString.isString = function(x) {\n return x instanceof LString || typeof x === 'string';\n};\nLString.prototype.get = function(n) {\n typecheck('LString::get', n, 'number');\n return Array.from(this.__string__)[n.valueOf()];\n};\nLString.prototype.cmp = function(string) {\n typecheck('LString::cmp', string, 'string');\n var a = this.valueOf();\n var b = string.valueOf();\n if (a < b) {\n return -1;\n } else if (a === b) {\n return 0;\n } else {\n return 1;\n }\n};\nLString.prototype.lower = function() {\n return LString(this.__string__.toLowerCase());\n};\nLString.prototype.upper = function() {\n return LString(this.__string__.toUpperCase());\n};\nLString.prototype.set = function(n, char) {\n typecheck('LString::set', n, 'number');\n typecheck('LString::set', char, ['string', 'character']);\n n = n.valueOf();\n if (char instanceof LCharacter) {\n char = char.__char__;\n }\n var string = [];\n if (n > 0) {\n string.push(this.__string__.substring(0, n));\n }\n string.push(char);\n if (n < this.__string__.length - 1) {\n string.push(this.__string__.substring(n + 1));\n }\n this.__string__ = string.join('');\n};\nObject.defineProperty(LString.prototype, \"length\", {\n get: function() {\n return this.__string__.length;\n }\n});\nLString.prototype.clone = function() {\n return LString(this.valueOf());\n};\nLString.prototype.fill = function(char) {\n typecheck('LString::fill', char, ['string', 'character']);\n if (char instanceof LCharacter) {\n char = char.toString();\n }\n var len = this.__string__.length;\n this.__string__ = new Array(len + 1).join(char);\n};\n// -------------------------------------------------------------------------\n// :: Number wrapper that handle BigNumbers\n// -------------------------------------------------------------------------\nfunction LNumber(n, force = false) {\n if (n instanceof LNumber) {\n return n;\n }\n if (typeof this !== 'undefined' && !(this instanceof LNumber) ||\n typeof this === 'undefined') {\n return new LNumber(n, force);\n }\n if (typeof n === 'undefined') {\n throw new Error('Invalid LNumber constructor call');\n }\n var _type = LNumber.getType(n);\n if (LNumber.types[_type]) {\n return LNumber.types[_type](n, force);\n }\n var parsable = n instanceof Array && LString.isString(n[0]) &&\n LNumber.isNumber(n[1]);\n if (n instanceof LNumber) {\n return LNumber(n.value);\n }\n if (!LNumber.isNumber(n) && !parsable) {\n throw new Error(`You can't create LNumber from ${type(n)}`);\n }\n // prevent infite loop https://github.com/indutny/bn.js/issues/186\n if (n === null) {\n n = 0;\n }\n var value;\n if (parsable) {\n var [str, radix] = n;\n if (str instanceof LString) {\n str = str.valueOf();\n }\n if (radix instanceof LNumber) {\n radix = radix.valueOf();\n }\n var sign = str.match(/^([+-])/);\n var minus = false;\n if (sign) {\n str = str.replace(/^[+-]/, '');\n if (sign[1] === '-') {\n minus = true;\n }\n }\n }\n if (Number.isNaN(n)) {\n return LFloat(n);\n } else if (typeof BigInt !== 'undefined') {\n if (typeof n !== 'bigint') {\n if (parsable) {\n let prefix;\n // default number base (radix) supported by BigInt constructor\n switch (radix) {\n case 8:\n prefix = '0o';\n break;\n case 16:\n prefix = '0x';\n break;\n case 2:\n prefix = '0b';\n break;\n case 10:\n prefix = '';\n break;\n }\n if (typeof prefix === 'undefined') {\n // non standard radix we convert by hand\n var n_radix = BigInt(radix);\n value = [...str].map((x, i) => {\n return BigInt(parseInt(x, radix)) * pow(n_radix, BigInt(i));\n }).reduce((a, b) => a + b);\n } else {\n value = BigInt(prefix + str);\n }\n } else {\n value = BigInt(n);\n }\n if (minus) {\n value *= BigInt(-1);\n }\n } else {\n value = n;\n }\n return LBigInteger(value, true);\n } else if (typeof BN !== 'undefined' && !(n instanceof BN)) {\n if (n instanceof Array) {\n return LBigInteger(new BN(...n));\n }\n return LBigInteger(new BN(n));\n } else if (parsable) {\n this.constant(parseInt(str, radix), 'integer');\n } else {\n this.constant(n, 'integer');\n }\n}\n// -------------------------------------------------------------------------\nLNumber.prototype.constant = function(value, type) {\n Object.defineProperty(this, '__value__', {\n value,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: type,\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLNumber.types = {\n float: function(n, force = false) {\n return new LFloat(n, force);\n },\n complex: function(n, force = false) {\n if (!LNumber.isComplex(n)) {\n n = { im: 0, re: n };\n }\n return new LComplex(n, force);\n },\n rational: function(n, force = false) {\n if (!LNumber.isRational(n)) {\n n = { num: n, denom: 1 };\n }\n return new LRational(n, force);\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.serialize = function() {\n return this.__value__;\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isNaN = function() {\n return Number.isNaN(this.__value__);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.gcd = function(b) {\n // ref: https://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\n var a = this.abs();\n b = b.abs();\n if (b.cmp(a) === 1) {\n var temp = a;\n a = b;\n b = temp;\n }\n while (true) {\n a = a.rem(b);\n if (a.cmp(0) === 0) {\n return b;\n }\n b = b.rem(a);\n if (b.cmp(0) === 0) {\n return a;\n }\n }\n};\n// -------------------------------------------------------------------------\nLNumber.isFloat = function isFloat(n) {\n return n instanceof LFloat || (Number(n) === n && n % 1 !== 0);\n};\n// -------------------------------------------------------------------------\nLNumber.isNumber = function(n) {\n return n instanceof LNumber ||\n (LNumber.isNative(n) || LNumber.isBN(n));\n};\n// -------------------------------------------------------------------------\nLNumber.isComplex = function(n) {\n if (!n) {\n return false;\n }\n var ret = n instanceof LComplex ||\n ((LNumber.isNumber(n.im) || Number.isNaN(n.im)) &&\n (LNumber.isNumber(n.re) || Number.isNaN(n.re)));\n return ret;\n};\n// -------------------------------------------------------------------------\nLNumber.isRational = function(n) {\n if (!n) {\n return false;\n }\n return n instanceof LRational ||\n (LNumber.isNumber(n.num) && LNumber.isNumber(n.denom));\n};\n// -------------------------------------------------------------------------\nLNumber.isInteger = function(n) {\n if (!(LNumber.isNative(n) || n instanceof LNumber)) {\n return false;\n }\n if (LNumber.isFloat(n)) {\n return false;\n }\n if (LNumber.isRational(n)) {\n return false;\n }\n if (LNumber.isComplex(n)) {\n return false;\n }\n return true;\n};\n// -------------------------------------------------------------------------\nLNumber.isNative = function(n) {\n return typeof n === 'bigint' || typeof n === 'number';\n};\n// -------------------------------------------------------------------------\nLNumber.isBigInteger = function(n) {\n return n instanceof LBigInteger || typeof n === 'bigint' ||\n LNumber.isBN(n);\n};\n// -------------------------------------------------------------------------\nLNumber.isBN = function(n) {\n return typeof BN !== 'undefined' && n instanceof BN;\n};\n// -------------------------------------------------------------------------\nLNumber.getArgsType = function(a, b) {\n if (a instanceof LFloat || b instanceof LFloat) {\n return LFloat;\n }\n if (a instanceof LBigInteger || b instanceof LBigInteger) {\n return LBigInteger;\n }\n return LNumber;\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.toString = function(radix) {\n if (Number.isNaN(this.__value__)) {\n return '+nan.0';\n }\n if (radix > 2 && radix < 36) {\n return this.__value__.toString(radix);\n }\n return this.__value__.toString();\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.asType = function(n) {\n var _type = LNumber.getType(this);\n return LNumber.types[_type] ? LNumber.types[_type](n) : LNumber(n);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isBigNumber = function() {\n return typeof this.__value__ === 'bigint' ||\n typeof BN !== 'undefined' && !(this.value instanceof BN);\n};\n// -------------------------------------------------------------------------\n['floor', 'ceil', 'round'].forEach(fn => {\n LNumber.prototype[fn] = function() {\n if (this.float || LNumber.isFloat(this.__value__)) {\n return LNumber(Math[fn](this.__value__));\n } else {\n return LNumber(Math[fn](this.valueOf()));\n }\n };\n});\n// -------------------------------------------------------------------------\nLNumber.prototype.valueOf = function() {\n if (LNumber.isNative(this.__value__)) {\n return Number(this.__value__);\n } else if (LNumber.isBN(this.__value__)) {\n return this.__value__.toNumber();\n }\n};\n// -------------------------------------------------------------------------\n// type coercion matrix\n// -------------------------------------------------------------------------\nconst matrix = (function() {\n var i = (a, b) => [a, b];\n return {\n bigint: {\n bigint: i,\n float: (a, b) => [LFloat(a.valueOf(), true), b],\n rational: (a, b) => [{ num: a, denom: 1 }, b],\n complex: (a, b) => [{ im: 0, re: a }, b]\n },\n integer: {\n integer: i,\n float: (a, b) => [LFloat(a.valueOf(), true), b],\n rational: (a, b) => [{ num: a, denom: 1 }, b],\n complex: (a, b) => [{ im: 0, re: a }, b]\n },\n float: {\n bigint: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n integer: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n float: i,\n rational: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n complex: (a, b) => [{ re: a, im: LFloat(0, true) }, b]\n },\n complex: {\n bigint: complex('bigint'),\n integer: complex('integer'),\n float: complex('float'),\n rational: complex('rational'),\n complex: (a, b) => {\n const [a_re, b_re] = LNumber.coerce(a.__re__, b.__re__);\n const [a_im, b_im] = LNumber.coerce(a.__im__, b.__im__);\n return [\n { im: a_im, re: a_re },\n { im: b_im, re: b_re }\n ];\n }\n },\n rational: {\n bigint: (a, b) => [a, b && { num: b, denom: 1 }],\n integer: (a, b) => [a, b && { num: b, denom: 1 }],\n float: (a, b) => [LFloat(a.valueOf()), b],\n rational: i,\n complex: (a, b) => {\n return [\n {\n im: coerce(a.__type__, b.__im__.__type__, 0)[0],\n re: coerce(a.__type__, b.__re__.__type__, a)[0]\n },\n {\n im: coerce(a.__type__, b.__im__.__type__, b.__im__)[0],\n re: coerce(a.__type__, b.__re__.__type__, b.__re__)[0]\n }\n ];\n }\n }\n };\n function complex(type) {\n return (a, b) => {\n return [\n {\n im: coerce(type, a.__im__.__type__, 0, a.__im__)[1],\n re: coerce(type, a.__re__.__type__, 0, a.__re__)[1]\n },\n {\n im: coerce(type, a.__im__.__type__, 0, 0)[1],\n re: coerce(type, b.__type__, 0, b)[1]\n }\n ];\n };\n }\n})();\n// -------------------------------------------------------------------------\nfunction coerce(type_a, type_b, a, b) {\n return matrix[type_a][type_b](a, b);\n}\n// -------------------------------------------------------------------------\nLNumber.coerce = function(a, b) {\n const a_type = LNumber.getType(a);\n const b_type = LNumber.getType(b);\n if (!matrix[a_type]) {\n throw new Error(`LNumber::coerce unknown lhs type ${a_type}`);\n } else if (!matrix[a_type][b_type]) {\n throw new Error(`LNumber::coerce unknown rhs type ${b_type}`);\n }\n var tmp = matrix[a_type][b_type](a, b);\n return tmp.map(n => LNumber(n, true));\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.coerce = function(n) {\n if (!(typeof n === 'number' || n instanceof LNumber)) {\n throw new Error(`LNumber: you can't coerce ${type(n)}`);\n }\n if (typeof n === 'number') {\n n = LNumber(n);\n }\n return LNumber.coerce(this, n);\n};\n// -------------------------------------------------------------------------\nLNumber.getType = function(n) {\n if (n instanceof LNumber) {\n return n.__type__;\n }\n if (LNumber.isFloat(n)) {\n return 'float';\n }\n if (LNumber.isComplex(n)) {\n return 'complex';\n }\n if (LNumber.isRational(n)) {\n return 'rational';\n }\n if (typeof n === 'number') {\n return 'integer';\n }\n if ((typeof BigInt !== 'undefined' && typeof n !== 'bigint') ||\n (typeof BN !== 'undefined' && !(n instanceof BN))) {\n return 'bigint';\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isFloat = function() {\n return !!(LNumber.isFloat(this.__value__) || this.float);\n};\n// -------------------------------------------------------------------------\nvar mapping = {\n 'add': '+',\n 'sub': '-',\n 'mul': '*',\n 'div': '/',\n 'rem': '%',\n 'or': '|',\n 'and': '&',\n 'neg': '~',\n 'shl': '>>',\n 'shr': '<<'\n};\nvar rev_mapping = {};\nObject.keys(mapping).forEach((key) => {\n rev_mapping[mapping[key]] = key;\n LNumber.prototype[key] = function(n) {\n return this.op(mapping[key], n);\n };\n});\n// -------------------------------------------------------------------------\nLNumber._ops = {\n '*': function(a, b) {\n return a * b;\n },\n '+': function(a, b) {\n return a + b;\n },\n '-': function(a, b) {\n if (typeof b === 'undefined') {\n return -a;\n }\n return a - b;\n },\n '/': function(a, b) {\n return a / b;\n },\n '%': function(a, b) {\n return a % b;\n },\n '|': function(a, b) {\n return a | b;\n },\n '&': function(a, b) {\n return a & b;\n },\n '~': function(a) {\n return ~a;\n },\n '>>': function(a, b) {\n return a >> b;\n },\n '<<': function(a, b) {\n return a << b;\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.op = function(op, n) {\n if (typeof n === 'undefined') {\n return LNumber(LNumber._ops[op](this.valueOf()));\n }\n if (typeof n === 'number') {\n n = LNumber(n);\n }\n if (Number.isNaN(this.__value__) && !LNumber.isComplex(n) ||\n !LNumber.isComplex(this) && Number.isNaN(n.__value__)) {\n return LNumber(NaN);\n }\n const [a, b] = this.coerce(n);\n if (a._op) {\n return a._op(op, b);\n }\n return LNumber(LNumber._ops[op](a, b));\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.sqrt = function() {\n var value = this.valueOf();\n if (this.cmp(0) < 0) {\n var im = Math.sqrt(-value);\n return LComplex({ re: 0, im });\n }\n return LNumber(Math.sqrt(value));\n};\n// -------------------------------------------------------------------------\nvar pow = function(a, b) {\n var e = typeof a === 'bigint' ? BigInt(1) : 1;\n return new Array(Number(b)).fill(0).reduce(x => x * a, e);\n};\n// -------------------------------------------------------------------------\n// use native exponential operator if possible (it's way faster)\n// -------------------------------------------------------------------------\nvar exp_op = new Function('a,b', 'return a ** b');\ntry {\n if (exp_op(2, 2) === 4) {\n pow = exp_op;\n }\n} catch (e) {\n // ignore\n}\n// -------------------------------------------------------------------------\nLNumber.prototype.pow = function(n) {\n var value;\n if (LNumber.isBN(this.__value__)) {\n value = this.__value__.pow(n.__value__);\n } else {\n value = pow(this.__value__, n.__value__);\n }\n return LNumber(value);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.abs = function() {\n var value = this.__value__;\n if (LNumber.isNative(this.__value__)) {\n if (value < 0) {\n value = -value;\n }\n } else if (LNumber.isBN(value)) {\n value.iabs();\n }\n return new LNumber(value);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isOdd = function() {\n if (LNumber.isNative(this.__value__)) {\n if (this.isBigNumber()) {\n return this.__value__ % BigInt(2) === BigInt(1);\n }\n return this.__value__ % 2 === 1;\n } else if (LNumber.isBN(this.__value__)) {\n return this.__value__.isOdd();\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isEven = function() {\n return !this.isOdd();\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.cmp = function(n) {\n const [a, b] = this.coerce(n);\n function cmp(a, b) {\n if (a.__value__ < b.__value__) {\n return -1;\n } else if (a.__value__ === b.__value__) {\n return 0;\n } else {\n return 1;\n }\n }\n if (a.__type__ === 'bigint') {\n if (LNumber.isNative(a.__value__)) {\n return cmp(a, b);\n } else if (LNumber.isBN(a.__value__)) {\n return this.__value__.cmp(b.__value__);\n }\n } else if (a instanceof LFloat) {\n return cmp(a, b);\n }\n};\n// -------------------------------------------------------------------------\n// :: COMPLEX TYPE\n// -------------------------------------------------------------------------\nfunction LComplex(n, force = false) {\n if (typeof this !== 'undefined' && !(this instanceof LComplex) ||\n typeof this === 'undefined') {\n return new LComplex(n, force);\n }\n if (n instanceof LComplex) {\n return LComplex({ im: n.__im__, re: n.__re__ });\n }\n if (LNumber.isNumber(n) && force) {\n if (!force) {\n return Number(n);\n }\n } else if (!LNumber.isComplex(n)) {\n throw new Error('Invalid constructor call for LComplex');\n }\n var im = n.im instanceof LNumber ? n.im : LNumber(n.im);\n var re = n.re instanceof LNumber ? n.re : LNumber(n.re);\n this.constant(im, re);\n}\n// -------------------------------------------------------------------------\nLComplex.prototype = Object.create(LNumber.prototype);\nLComplex.prototype.constructor = LComplex;\n// -------------------------------------------------------------------------\nLComplex.prototype.constant = function(im, re) {\n Object.defineProperty(this, '__im__', {\n value: im,\n enumerable: true\n });\n Object.defineProperty(this, '__re__', {\n value: re,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: 'complex',\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.serialize = function() {\n return {\n re: this.__re__,\n im: this.__im__\n };\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.toRational = function(n) {\n if (LNumber.isFloat(this.__im__) && LNumber.isFloat(this.__re__)) {\n const im = LFloat(this.__im__).toRational(n);\n const re = LFloat(this.__re__).toRational(n);\n return LComplex({ im, re });\n }\n return this;\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.add = function(n) {\n return this.complex_op('add', n, function(a_re, b_re, a_im, b_im) {\n return {\n re: a_re.add(b_re),\n im: a_im.add(b_im)\n };\n });\n};\n// -------------------------------------------------------------------------\n// :: factor is used in / and modulus\n// -------------------------------------------------------------------------\nLComplex.prototype.factor = function() {\n // fix rounding when calculating (/ 1.0 1/10+1/10i)\n if (this.__im__ instanceof LFloat || this.__im__ instanceof LFloat) {\n let { __re__: re, __im__: im } = this;\n let x, y;\n if (re instanceof LFloat) {\n x = re.toRational().mul(re.toRational());\n } else {\n x = re.mul(re);\n }\n if (im instanceof LFloat) {\n y = im.toRational().mul(im.toRational());\n } else {\n y = im.mul(im);\n }\n return x.add(y);\n } else {\n return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__));\n }\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.modulus = function() {\n return this.factor().sqrt();\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.conjugate = function() {\n return LComplex({ re: this.__re__, im: this.__im__.sub() });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.sqrt = function() {\n const r = this.modulus();\n // code based ok Kawa Scheme source code (file DComplex.java)\n // Copyright (c) 1997 Per M.A. Bothner.\n // Released under MIT License\n let re, im;\n if (r.cmp(0) === 0) {\n re = im = r;\n } else if (this.__re__.cmp(0) === 1) {\n re = LFloat(0.5).mul(r.add(this.__re__)).sqrt();\n im = this.__im__.div(re).div(2);\n } else {\n im = LFloat(0.5).mul(r.sub(this.__re__)).sqrt();\n if (this.__im__.cmp(0) === -1) {\n im = im.sub();\n }\n re = this.__im__.div(im).div(2);\n }\n return LComplex({ im, re });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.div = function(n) {\n if (LNumber.isNumber(n) && !LNumber.isComplex(n)) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n);\n }\n const re = this.__re__.div(n);\n const im = this.__im__.div(n);\n return LComplex({ re, im });\n } else if (!LNumber.isComplex(n)) {\n throw new Error('[LComplex::div] Invalid value');\n }\n const [ a, b ] = this.coerce(n);\n const denom = b.factor();\n const num = a.mul(b.conjugate());\n const re = num.__re__.op('/', denom);\n const im = num.__im__.op('/', denom);\n return LComplex({ re, im });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.sub = function(n) {\n return this.complex_op('sub', n, function(a_re, b_re, a_im, b_im) {\n return {\n re: a_re.sub(b_re),\n im: a_im.sub(b_im)\n };\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.mul = function(n) {\n return this.complex_op('mul', n, function(a_re, b_re, a_im, b_im) {\n var ret = {\n re: a_re.mul(b_re).sub(a_im.mul(b_im)),\n im: a_re.mul(b_im).add(b_re.mul(a_im))\n };\n return ret;\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.complex_op = function(name, n, fn) {\n const calc = (re, im) => {\n var result = fn(this.__re__, re, this.__im__, im);\n if ('im' in result && 're' in result) {\n if (result.im.cmp(0) === 0 && !LNumber.isFloat(result.im)) {\n return result.re;\n }\n return LComplex(result, true);\n }\n return result;\n };\n if (typeof n === 'undefined') {\n return calc();\n }\n if (LNumber.isNumber(n) && !LNumber.isComplex(n)) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n);\n }\n const im = n.asType(0);\n n = { __im__: im, __re__: n };\n } else if (!LNumber.isComplex(n)) {\n throw new Error(`[LComplex::${name}] Invalid value`);\n }\n var re = n.__re__ instanceof LNumber ? n.__re__ : this.__re__.asType(n.__re__);\n var im = n.__im__ instanceof LNumber ? n.__im__ : this.__im__.asType(n.__im__);\n return calc(re, im);\n};\n// -------------------------------------------------------------------------\nLComplex._op = {\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div'\n};\n// -------------------------------------------------------------------------\nLComplex.prototype._op = function(op, n) {\n const fn = LComplex._op[op];\n return this[fn](n);\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.cmp = function(n) {\n const [a, b] = this.coerce(n);\n const [re_a, re_b] = a.__re__.coerce(b.__re__);\n const re_cmp = re_a.cmp(re_b);\n if (re_cmp !== 0) {\n return re_cmp;\n } else {\n const [im_a, im_b] = a.__im__.coerce(b.__im__);\n return im_a.cmp(im_b);\n }\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.valueOf = function() {\n return [this.__re__, this.__im__].map(x => x.valueOf());\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.toString = function() {\n var result;\n if (this.__re__.cmp(0) !== 0) {\n result = [toString(this.__re__)];\n } else {\n result = [];\n }\n // NaN and inf already have sign\n var im = this.__im__.valueOf();\n var inf = [Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY].includes(im);\n var im_str = toString(this.__im__);\n if (!inf && !Number.isNaN(im)) {\n var zero_check = this.__im__.cmp(0);\n if (zero_check < 0 || (zero_check === 0 && this.__im__._minus)) {\n result.push('-');\n } else {\n result.push('+');\n }\n im_str = im_str.replace(/^-/, '');\n }\n result.push(im_str);\n result.push('i');\n return result.join('');\n};\n// -------------------------------------------------------------------------\n// :: FLOAT TYPE\n// -------------------------------------------------------------------------\nfunction LFloat(n) {\n if (typeof this !== 'undefined' && !(this instanceof LFloat) ||\n typeof this === 'undefined') {\n return new LFloat(n);\n }\n if (!LNumber.isNumber(n)) {\n throw new Error('Invalid constructor call for LFloat');\n }\n if (n instanceof LNumber) {\n return LFloat(n.valueOf());\n }\n if (typeof n === 'number') {\n if (Object.is(n, -0)) {\n Object.defineProperty(this, '_minus', {\n value: true\n });\n }\n this.constant(n, 'float');\n }\n}\n// -------------------------------------------------------------------------\nLFloat.prototype = Object.create(LNumber.prototype);\nLFloat.prototype.constructor = LFloat;\n// -------------------------------------------------------------------------\nLFloat.prototype.toString = function() {\n if (this.__value__ === Number.NEGATIVE_INFINITY) {\n return '-inf.0';\n }\n if (this.__value__ === Number.POSITIVE_INFINITY) {\n return '+inf.0';\n }\n if (Number.isNaN(this.__value__)) {\n return '+nan.0';\n }\n var str = this.__value__.toString();\n if (!LNumber.isFloat(this.__value__) && !str.match(/e/i)) {\n var result = str + '.0';\n return this._minus ? ('-' + result) : result;\n }\n return str.replace(/^([0-9]+)e/, '$1.0e');\n};\n// -------------------------------------------------------------------------\nLFloat.prototype._op = function(op, n) {\n if (n instanceof LNumber) {\n n = n.__value__;\n }\n const fn = LNumber._ops[op];\n if (op === '/' && this.__value__ === 0 && n === 0) {\n return NaN;\n }\n return LFloat(fn(this.__value__, n), true);\n};\n// -------------------------------------------------------------------------\n// same aproximation as in guile scheme\nLFloat.prototype.toRational = function(n = null) {\n if (n === null) {\n return toRational(this.__value__.valueOf());\n }\n return approxRatio(n.valueOf())(this.__value__.valueOf());\n};\n// -------------------------------------------------------------------------\nLFloat.prototype.sqrt = function() {\n var value = this.valueOf();\n if (this.cmp(0) < 0) {\n var im = LFloat(Math.sqrt(-value));\n return LComplex({ re: 0, im });\n }\n return LFloat(Math.sqrt(value));\n};\n// -------------------------------------------------------------------------\nLFloat.prototype.abs = function() {\n var value = this.valueOf();\n if (value < 0) {\n value = -value;\n }\n return LFloat(value);\n};\n// -------------------------------------------------------------------------\n// ref: https://rosettacode.org/wiki/Convert_decimal_number_to_rational\n// -------------------------------------------------------------------------\nvar toRational = approxRatio(1e-10);\nfunction approxRatio(eps) {\n return function(n) {\n const gcde = (e, x, y) => {\n const _gcd = (a, b) => (b < e ? a : _gcd(b, a % b));\n if (Number.isNaN(x) || Number.isNaN(y)) {\n return NaN;\n }\n return _gcd(Math.abs(x), Math.abs(y));\n },\n c = gcde(eps ? eps : (1 / 10000), 1, n);\n return LRational({ num: Math.floor(n / c), denom: Math.floor(1 / c) });\n };\n}\n// -------------------------------------------------------------------------\n// :: source: Kawa gnu.math.RatNum.java\n// :: This algorithm is by Alan Bawden. It has been transcribed\n// :: with permission from Kawa copyright M.A. Bothner.\n// :: which was transcribed from from C-Gambit, copyright Marc Feeley.\n// -------------------------------------------------------------------------\nfunction rationalize(x, y) {\n var a = x.sub(y);\n var b = x.add(y);\n var result;\n if (a.cmp(b) > 0) {\n result = simplest_rational2(b, a);\n } else if (b.cmp(a) <= 0) {\n result = a;\n } else if (a.cmp(0) > 0) {\n result = simplest_rational2(a, b);\n } else if (y.cmp(0) < 0) {\n result = LNumber(simplest_rational2(b.sub(), a.sub())).sub();\n } else {\n result = LNumber(0);\n }\n if (LNumber.isFloat(y) || LNumber.isFloat(x)) {\n return LFloat(result);\n }\n return result;\n}\n// -------------------------------------------------------------------------\nfunction simplest_rational2(x, y) {\n var fx = LNumber(x).floor();\n var fy = LNumber(y).floor();\n if (x.cmp(fx) < 1) {\n return fx;\n } else if (fx.cmp(fy) === 0) {\n var n = LNumber(1).div(y.sub(fy));\n var d = LNumber(1).div(x.sub(fx));\n return fx.add(LNumber(1).div(simplest_rational2(n, d)));\n } else {\n return fx.add(LNumber(1));\n }\n}\n// -------------------------------------------------------------------------\nfunction LRational(n, force = false) {\n if (typeof this !== 'undefined' && !(this instanceof LRational) ||\n typeof this === 'undefined') {\n return new LRational(n, force);\n }\n if (!LNumber.isRational(n)) {\n throw new Error('Invalid constructor call for LRational');\n }\n var num, denom;\n if (n instanceof LRational) {\n num = LNumber(n.__num__);\n denom = LNumber(n.__denom__);\n } else {\n num = LNumber(n.num);\n denom = LNumber(n.denom);\n }\n if (!force && denom.cmp(0) !== 0) {\n var is_integer = num.op('%', denom).cmp(0) === 0;\n if (is_integer) {\n return LNumber(num.div(denom));\n }\n }\n this.constant(num, denom);\n}\n// -------------------------------------------------------------------------\nLRational.prototype = Object.create(LNumber.prototype);\nLRational.prototype.constructor = LRational;\n// -------------------------------------------------------------------------\nLRational.prototype.constant = function(num, denom) {\n Object.defineProperty(this, '__num__', {\n value: num,\n enumerable: true\n });\n Object.defineProperty(this, '__denom__', {\n value: denom,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: 'rational',\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.serialize = function() {\n return {\n num: this.__num__,\n denom: this.__denom__\n };\n};\n// -------------------------------------------------------------------------\nLRational.prototype.pow = function(n) {\n var cmp = n.cmp(0);\n if (cmp === 0) {\n return LNumber(1);\n }\n if (cmp === -1) {\n n = n.sub();\n var num = this.__denom__.pow(n);\n var denom = this.__num__.pow(n);\n return LRational({ num, denom });\n }\n var result = this;\n n = n.valueOf();\n while (n > 1) {\n result = result.mul(this);\n n--;\n }\n return result;\n};\n// -------------------------------------------------------------------------\nLRational.prototype.sqrt = function() {\n const num = this.__num__.sqrt();\n const denom = this.__denom__.sqrt();\n if (num instanceof LFloat || denom instanceof LFloat) {\n return num.div(denom);\n }\n return LRational({ num, denom });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.abs = function() {\n var num = this.__num__;\n var denom = this.__denom__;\n if (num.cmp(0) === -1) {\n num = num.sub();\n }\n if (denom.cmp(0) !== 1) {\n denom = denom.sub();\n }\n return LRational({ num, denom });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.cmp = function(n) {\n return LNumber(this.valueOf(), true).cmp(n);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.toString = function() {\n var gcd = this.__num__.gcd(this.__denom__);\n var num, denom;\n if (gcd.cmp(1) !== 0) {\n num = this.__num__.div(gcd);\n if (num instanceof LRational) {\n num = LNumber(num.valueOf(true));\n }\n denom = this.__denom__.div(gcd);\n if (denom instanceof LRational) {\n denom = LNumber(denom.valueOf(true));\n }\n } else {\n num = this.__num__;\n denom = this.__denom__;\n }\n const minus = this.cmp(0) < 0;\n if (minus) {\n if (num.abs().cmp(denom.abs()) === 0) {\n return num.toString();\n }\n } else if (num.cmp(denom) === 0) {\n return num.toString();\n }\n return num.toString() + '/' + denom.toString();\n};\n// -------------------------------------------------------------------------\nLRational.prototype.valueOf = function(exact) {\n if (this.__denom__.cmp(0) === 0) {\n if (this.__num__.cmp(0) < 0) {\n return Number.NEGATIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n }\n if (exact) {\n return LNumber._ops['/'](this.__num__.value, this.__denom__.value);\n }\n return LFloat(this.__num__.valueOf()).div(this.__denom__.valueOf());\n};\n// -------------------------------------------------------------------------\nLRational.prototype.mul = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (mul 2))\n }\n if (LNumber.isRational(n)) {\n var num = this.__num__.mul(n.__num__);\n var denom = this.__denom__.mul(n.__denom__);\n return LRational({ num, denom });\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.mul(b);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.div = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (div 2))\n }\n if (LNumber.isRational(n)) {\n var num = this.__num__.mul(n.__denom__);\n var denom = this.__denom__.mul(n.__num__);\n return LRational({ num, denom });\n }\n const [a, b] = LNumber.coerce(this, n);\n const ret = a.div(b);\n return ret;\n};\n// -------------------------------------------------------------------------\nLRational.prototype._op = function(op, n) {\n return this[rev_mapping[op]](n);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.sub = function(n) {\n if (typeof n === 'undefined') {\n return this.mul(-1);\n }\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (sub 1))\n }\n if (LNumber.isRational(n)) {\n var num = n.__num__.sub();\n var denom = n.__denom__;\n return this.add(LRational({ num, denom }));\n }\n if (!(n instanceof LNumber)) {\n n = LNumber(n).sub();\n } else {\n n = n.sub();\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.add(b);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.add = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (add 1))\n }\n if (LNumber.isRational(n)) {\n const a_denom = this.__denom__;\n const b_denom = n.__denom__;\n const a_num = this.__num__;\n const b_num = n.__num__;\n let denom, num;\n if (a_denom !== b_denom) {\n num = b_denom.mul(a_num).add(b_num.mul(a_denom));\n denom = a_denom.mul(b_denom);\n } else {\n num = a_num.add(b_num);\n denom = a_denom;\n }\n return LRational({ num, denom });\n }\n if (LNumber.isFloat(n)) {\n return LFloat(this.valueOf()).add(n);\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.add(b);\n};\n// -------------------------------------------------------------------------\nfunction LBigInteger(n, native) {\n if (typeof this !== 'undefined' && !(this instanceof LBigInteger) ||\n typeof this === 'undefined') {\n return new LBigInteger(n, native);\n }\n if (n instanceof LBigInteger) {\n return LBigInteger(n.__value__, n._native);\n }\n if (!LNumber.isBigInteger(n)) {\n throw new Error('Invalid constructor call for LBigInteger');\n }\n this.constant(n, 'bigint');\n Object.defineProperty(this, '_native', {\n value: native\n });\n}\n// -------------------------------------------------------------------------\nLBigInteger.prototype = Object.create(LNumber.prototype);\nLBigInteger.prototype.constructor = LBigInteger;\n// -------------------------------------------------------------------------\nLBigInteger.bn_op = {\n '+': 'iadd',\n '-': 'isub',\n '*': 'imul',\n '/': 'idiv',\n '%': 'imod',\n '|': 'ior',\n '&': 'iand',\n '~': 'inot',\n '<<': 'ishrn',\n '>>': 'ishln'\n};\nLBigInteger.prototype.serialize = function() {\n return this.__value__.toString();\n};\n// -------------------------------------------------------------------------\nLBigInteger.prototype._op = function(op, n) {\n if (typeof n === 'undefined') {\n if (LNumber.isBN(this.__value__)) {\n op = LBigInteger.bn_op[op];\n return LBigInteger(this.__value__.clone()[op](), false);\n }\n return LBigInteger(LNumber._ops[op](this.__value__), true);\n }\n if (LNumber.isBN(this.__value__) && LNumber.isBN(n.__value__)) {\n op = LBigInteger.bn_op[op];\n return LBigInteger(this.__value__.clone()[op](n), false);\n }\n const ret = LNumber._ops[op](this.__value__, n.__value__);\n if (op === '/') {\n var is_integer = this.op('%', n).cmp(0) === 0;\n if (is_integer) {\n return LNumber(ret);\n }\n return LRational({ num: this, denom: n });\n }\n // use native calucaltion becuase it's real bigint value\n return LBigInteger(ret, true);\n};\n// -------------------------- -----------------------------------------------\nLBigInteger.prototype.sqrt = function() {\n var value;\n var minus = this.cmp(0) < 0;\n if (LNumber.isNative(this.__value__)) {\n value = LNumber(Math.sqrt(minus ? -this.valueOf() : this.valueOf()));\n } else if (LNumber.isBN(this.__value__)) {\n value = minus ? this.__value__.neg().sqrt() : this.__value__.sqrt();\n }\n if (minus) {\n return LComplex({ re: 0, im: value });\n }\n return value;\n};\n// -------------------------------------------------------------------------\nLNumber.NaN = LNumber(NaN);\n// -------------------------------------------------------------------------\n// :: Port abstration - read should be a function that return next line\n// -------------------------------------------------------------------------\nfunction InputPort(read) {\n if (typeof this !== 'undefined' && !(this instanceof InputPort) ||\n typeof this === 'undefined') {\n return new InputPort(read);\n }\n typecheck('InputPort', read, 'function');\n read_only(this, '__type__', text_port);\n var parser;\n Object.defineProperty(this, '__parser__', {\n enumerable: true,\n get: function() {\n return parser;\n },\n set: function(value) {\n typecheck('InputPort::__parser__', value, 'parser');\n parser = value;\n }\n });\n this._read = read;\n this._with_parser = this._with_init_parser.bind(this, async () => {\n if (!this.char_ready()) {\n const line = await this._read();\n parser = new Parser(line, { env: this });\n }\n return this.__parser__;\n });\n this.char_ready = function() {\n return !!this.__parser__ && this.__parser__.__lexer__.peek() !== eof;\n };\n this._make_defaults();\n}\nInputPort.prototype._make_defaults = function() {\n this.read = this._with_parser((parser) => {\n return parser.read_object();\n });\n this.read_line = this._with_parser((parser) => {\n return parser.__lexer__.read_line();\n });\n this.read_char = this._with_parser((parser) => {\n return parser.__lexer__.read_char();\n });\n this.read_string = this._with_parser((parser, number) => {\n if (!LNumber.isInteger(number)) {\n const type = LNumber.getType(number);\n typeErrorMessage('read-string', type, 'integer');\n }\n return parser.__lexer__.read_string(number.valueOf());\n });\n this.peek_char = this._with_parser((parser) => {\n return parser.__lexer__.peek_char();\n });\n};\nInputPort.prototype._with_init_parser = function(make_parser, fn) {\n var self = this;\n return async function(...args) {\n var parser = await make_parser.call(self);\n return fn(parser, ...args);\n };\n};\nInputPort.prototype.is_open = function() {\n return this._with_parser !== null;\n};\nInputPort.prototype.close = function() {\n this.__parser__ = null;\n // make content garbage collected, we assign null,\n // because the value is in prototype\n this._with_parser = null;\n ['read', 'close', 'read_char', 'peek-char', 'read_line'].forEach(name => {\n this[name] = function() {\n throw new Error('input-port: port is closed');\n };\n });\n this.char_ready = function() {\n return false;\n };\n};\nInputPort.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nfunction OutputPort(write) {\n if (typeof this !== 'undefined' && !(this instanceof OutputPort) ||\n typeof this === 'undefined') {\n return new OutputPort(write);\n }\n typecheck('OutputPort', write, 'function');\n read_only(this, '__type__', text_port);\n this.write = write;\n}\nOutputPort.prototype.is_open = function() {\n return this._closed !== true;\n};\nOutputPort.prototype.close = function() {\n Object.defineProperty(this, '_closed', {\n get: () => true,\n set: () => {},\n configurable: false,\n enumerable: false\n });\n this.write = function() {\n throw new Error('output-port: port is closed');\n };\n};\nOutputPort.prototype.flush = function() {\n // do nothing\n};\nOutputPort.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nclass BufferedOutputPort extends OutputPort {\n constructor(fn) {\n super((...args) => this._write(...args));\n typecheck('BufferedOutputPort', fn, 'function');\n read_only(this, '_fn', fn, { hidden: true });\n read_only(this, '_buffer', [], { hidden: true });\n }\n flush() {\n if (this._buffer.length) {\n this._fn(this._buffer.join(''));\n this._buffer.length = 0;\n }\n }\n _write(...args) {\n if (args.length) {\n args.forEach(arg => {\n this._buffer.push(arg);\n });\n const last_value = this._buffer[this._buffer.length - 1];\n if (last_value.match(/\\n$/)) {\n this._buffer[this._buffer.length - 1] = last_value.replace(/\\n$/, '');\n this.flush();\n }\n }\n }\n}\n// -------------------------------------------------------------------------\nfunction OutputStringPort(toString) {\n if (typeof this !== 'undefined' && !(this instanceof OutputStringPort) ||\n typeof this === 'undefined') {\n return new OutputStringPort(toString);\n }\n typecheck('OutputStringPort', toString, 'function');\n read_only(this, '__type__', text_port);\n read_only(this, '__buffer__', []);\n this.write = (x) => {\n if (!LString.isString(x)) {\n x = toString(x);\n } else {\n x = x.valueOf();\n }\n this.__buffer__.push(x);\n };\n}\nOutputStringPort.prototype = Object.create(OutputPort.prototype);\nOutputStringPort.prototype.constructor = OutputStringPort;\nOutputStringPort.prototype.toString = function() {\n return '#';\n};\nOutputStringPort.prototype.valueOf = function() {\n return this.__buffer__.map(x => x.valueOf()).join('');\n};\n// -------------------------------------------------------------------------\nfunction OutputFilePort(filename, fd) {\n if (typeof this !== 'undefined' && !(this instanceof OutputFilePort) ||\n typeof this === 'undefined') {\n return new OutputFilePort(filename, fd);\n }\n typecheck('OutputFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n read_only(this, '_fd', fd.valueOf(), { hidden: true });\n read_only(this, '__type__', text_port);\n this.write = (x) => {\n if (!LString.isString(x)) {\n x = toString(x);\n } else {\n x = x.valueOf();\n }\n this.fs().write(this._fd, x, function(err) {\n if (err) {\n throw err;\n }\n });\n };\n}\nOutputFilePort.prototype = Object.create(OutputPort.prototype);\nOutputFilePort.prototype.constructor = OutputFilePort;\nOutputFilePort.prototype.fs = function() {\n if (!this._fs) {\n this._fs = this.internal('fs');\n }\n return this._fs;\n};\nOutputFilePort.prototype.internal = function(name) {\n return user_env.get('**internal-env**').get(name);\n};\nOutputFilePort.prototype.close = function() {\n return new Promise((resolve, reject) => {\n this.fs().close(this._fd, (err) => {\n if (err) {\n reject(err);\n } else {\n read_only(this, '_fd', null, { hidden: true });\n OutputPort.prototype.close.call(this);\n resolve();\n }\n });\n });\n};\nOutputFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputStringPort(string, env) {\n if (typeof this !== 'undefined' && !(this instanceof InputStringPort) ||\n typeof this === 'undefined') {\n return new InputStringPort(string);\n }\n typecheck('InputStringPort', string, 'string');\n env = env || global_env;\n string = string.valueOf();\n this._with_parser = this._with_init_parser.bind(this, () => {\n if (!this.__parser__) {\n this.__parser__ = new Parser(string, { env });\n }\n return this.__parser__;\n });\n read_only(this, '__type__', text_port);\n this._make_defaults();\n}\nInputStringPort.prototype.char_ready = function() {\n return true;\n};\nInputStringPort.prototype = Object.create(InputPort.prototype);\nInputStringPort.prototype.constructor = InputStringPort;\nInputStringPort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputByteVectorPort(bytevectors) {\n if (typeof this !== 'undefined' && !(this instanceof InputByteVectorPort) ||\n typeof this === 'undefined') {\n return new InputByteVectorPort(bytevectors);\n }\n typecheck('InputByteVectorPort', bytevectors, 'uint8array');\n read_only(this, '__vector__', bytevectors);\n read_only(this, '__type__', binary_port);\n var index = 0;\n Object.defineProperty(this, '__index__', {\n enumerable: true,\n get: function() {\n return index;\n },\n set: function(value) {\n typecheck('InputByteVectorPort::__index__', value, 'number');\n if (value instanceof LNumber) {\n value = value.valueOf();\n }\n if (typeof value === 'bigint') {\n value = Number(value);\n }\n if (Math.floor(value) !== value) {\n throw new Error('InputByteVectorPort::__index__ value is ' +\n 'not integer');\n }\n index = value;\n }\n });\n}\nInputByteVectorPort.prototype = Object.create(InputPort.prototype);\nInputByteVectorPort.prototype.constructor = InputByteVectorPort;\nInputByteVectorPort.prototype.toString = function() {\n return `#`;\n};\nInputByteVectorPort.prototype.close = function() {\n read_only(this, '__vector__', nil);\n ['read_u8', 'close', 'peek_u8', 'read_u8_vector'].forEach(name => {\n this[name] = function() {\n throw new Error('Input-binary-port: port is closed');\n };\n });\n this.char_ready = function() {\n return false;\n };\n};\nInputByteVectorPort.prototype.u8_ready = function() {\n return true;\n};\nInputByteVectorPort.prototype.peek_u8 = function() {\n if (this.__index__ >= this.__vector__.length) {\n return eof;\n }\n return this.__vector__[this.__index__];\n};\nInputByteVectorPort.prototype.skip = function() {\n if (this.__index__ <= this.__vector__.length) {\n ++this.__index__;\n }\n};\nInputByteVectorPort.prototype.read_u8 = function() {\n const byte = this.peek_u8();\n this.skip();\n return byte;\n};\nInputByteVectorPort.prototype.read_u8_vector = function(len) {\n if (typeof len === 'undefined') {\n len = this.__vector__.length;\n } else if (len > this.__index__ + this.__vector__.length) {\n len = this.__index__ + this.__vector__.length;\n }\n if (this.peek_u8() === eof) {\n return eof;\n }\n return this.__vector__.slice(this.__index__, len);\n};\n// -------------------------------------------------------------------------\nfunction OutputByteVectorPort() {\n if (typeof this !== 'undefined' && !(this instanceof OutputByteVectorPort) ||\n typeof this === 'undefined') {\n return new OutputByteVectorPort();\n }\n read_only(this, '__type__', binary_port);\n read_only(this, '_buffer', [], { hidden: true });\n this.write = function(x) {\n typecheck('write', x, ['number', 'uint8array']);\n if (LNumber.isNumber(x)) {\n this._buffer.push(x.valueOf());\n } else {\n this._buffer.push(...Array.from(x));\n }\n };\n Object.defineProperty(this, '__buffer__', {\n enumerable: true,\n get: function() {\n return Uint8Array.from(this._buffer);\n }\n });\n}\nOutputByteVectorPort.prototype = Object.create(OutputPort.prototype);\nOutputByteVectorPort.prototype.constructor = OutputByteVectorPort;\nOutputByteVectorPort.prototype.close = function() {\n OutputPort.prototype.close.call(this);\n read_only(this, '_buffer', null, { hidden: true });\n};\nOutputByteVectorPort.prototype._close_guard = function() {\n if (this._closed) {\n throw new Error('output-port: binary port is closed');\n }\n};\nOutputByteVectorPort.prototype.write_u8 = function(byte) {\n typecheck('OutputByteVectorPort::write_u8', byte, 'number');\n this.write(byte);\n};\nOutputByteVectorPort.prototype.write_u8_vector = function(vector) {\n typecheck('OutputByteVectorPort::write_u8_vector', vector, 'uint8array');\n this.write(vector);\n};\nOutputByteVectorPort.prototype.toString = function() {\n return '#';\n};\nOutputByteVectorPort.prototype.valueOf = function() {\n return this.__buffer__;\n};\n// -------------------------------------------------------------------------\nfunction InputFilePort(content, filename) {\n if (typeof this !== 'undefined' && !(this instanceof InputFilePort) ||\n typeof this === 'undefined') {\n return new InputFilePort(content, filename);\n }\n InputStringPort.call(this, content);\n typecheck('InputFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n}\nInputFilePort.prototype = Object.create(InputStringPort.prototype);\nInputFilePort.prototype.constructor = InputFilePort;\nInputFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputBinaryFilePort(content, filename) {\n if (typeof this !== 'undefined' && !(this instanceof InputBinaryFilePort) ||\n typeof this === 'undefined') {\n return new InputBinaryFilePort(content, filename);\n }\n InputByteVectorPort.call(this, content);\n typecheck('InputBinaryFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n}\nInputBinaryFilePort.prototype = Object.create(InputByteVectorPort.prototype);\nInputBinaryFilePort.prototype.constructor = InputBinaryFilePort;\nInputBinaryFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction OutputBinaryFilePort(filename, fd) {\n if (typeof this !== 'undefined' && !(this instanceof OutputBinaryFilePort) ||\n typeof this === 'undefined') {\n return new OutputBinaryFilePort(filename, fd);\n }\n typecheck('OutputBinaryFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n read_only(this, '_fd', fd.valueOf(), { hidden: true });\n read_only(this, '__type__', binary_port);\n var fs, Buffer;\n this.write = function(x) {\n typecheck('write', x, ['number', 'uint8array']);\n var buffer;\n if (!fs) {\n fs = this.internal('fs');\n }\n if (!Buffer) {\n Buffer = this.internal('Buffer');\n }\n if (LNumber.isNumber(x)) {\n buffer = Buffer.from([x.valueOf()]);\n } else {\n buffer = Buffer.from(Array.from(x));\n }\n return new Promise((resolve, reject) => {\n fs.write(this._fd, buffer, function(err) {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n };\n}\nOutputBinaryFilePort.prototype = Object.create(OutputFilePort.prototype);\nOutputBinaryFilePort.prototype.constructor = OutputBinaryFilePort;\nOutputBinaryFilePort.prototype.write_u8 = function(byte) {\n typecheck('OutputByteVectorPort::write_u8', byte, 'number');\n this.write(byte);\n};\nOutputBinaryFilePort.prototype.write_u8_vector = function(vector) {\n typecheck('OutputByteVectorPort::write_u8_vector', vector, 'uint8array');\n this.write(vector);\n};\n// -------------------------------------------------------------------------\nconst binary_port = Symbol.for('binary');\nconst text_port = Symbol.for('text');\nvar eof = new EOF();\nfunction EOF() {}\nEOF.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\n// simpler way to create interpreter with interaction-environment\n// -------------------------------------------------------------------------\nfunction Interpreter(name, { stderr, stdin, stdout, ...obj } = {}) {\n if (typeof this !== 'undefined' && !(this instanceof Interpreter) ||\n typeof this === 'undefined') {\n return new Interpreter(name, { stdin, stdout, stderr, ...obj });\n }\n if (typeof name === 'undefined') {\n name = 'anonymous';\n }\n this.__env__ = user_env.inherit(name, obj);\n this.__env__.set('parent.frame', doc('parent.frame', () => {\n return this.__env__;\n }, global_env.__env__['parent.frame'].__doc__));\n const defaults_name = '**interaction-environment-defaults**';\n this.set(defaults_name, get_props(obj).concat(defaults_name));\n var inter = internal_env.inherit(`internal-${name}`);\n if (is_port(stdin)) {\n inter.set('stdin', stdin);\n }\n if (is_port(stderr)) {\n inter.set('stderr', stderr);\n }\n if (is_port(stdout)) {\n inter.set('stdout', stdout);\n }\n set_interaction_env(this.__env__, inter);\n}\n// -------------------------------------------------------------------------\nInterpreter.prototype.exec = function(code, dynamic = false, env = null) {\n typecheck('Interpreter::exec', code, ['string', 'array'], 1);\n typecheck('Interpreter::exec', dynamic, 'boolean', 2);\n // simple solution to overwrite this variable in each interpreter\n // before evaluation of user code\n global_env.set('**interaction-environment**', this.__env__);\n if (env === null) {\n env = this.__env__;\n }\n return exec(code, env, dynamic ? env : false);\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.get = function(value) {\n const result = this.__env__.get(value);\n if (is_function(result)) {\n return result.bind(this.__env__);\n }\n return result;\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.set = function(name, value) {\n return this.__env__.set(name, value);\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.constant = function(name, value) {\n return this.__env__.constant(name, value);\n};\n// -------------------------------------------------------------------------\n// Lips Exception used in error function\n// -------------------------------------------------------------------------\nfunction LipsError(message, args) {\n this.name = 'LipsError';\n this.message = message;\n this.args = args;\n this.stack = (new Error()).stack;\n}\nLipsError.prototype = new Error();\nLipsError.prototype.constructor = LipsError;\n// -------------------------------------------------------------------------\n// :: Environment constructor (parent and name arguments are optional)\n// -------------------------------------------------------------------------\nfunction Environment(obj, parent, name) {\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'object') {\n obj = arguments[0];\n parent = null;\n } else if (typeof arguments[0] === 'string') {\n obj = {};\n parent = null;\n name = arguments[0];\n }\n }\n this.__docs__ = new Map();\n this.__env__ = obj;\n this.__parent__ = parent;\n this.__name__ = name || 'anonymous';\n}\n// -------------------------------------------------------------------------\nEnvironment.prototype.list = function() {\n return get_props(this.__env__);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.fs = function() {\n return this.get('**fs**');\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.unset = function(name) {\n if (name instanceof LSymbol) {\n name = name.valueOf();\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n delete this.__env__[name];\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.inherit = function(name, obj = {}) {\n if (typeof name === \"object\") {\n obj = name;\n }\n if (!name || typeof name === \"object\") {\n name = 'child of ' + (this.__name__ || 'unknown');\n }\n return new Environment(obj || {}, this, name);\n};\n// -------------------------------------------------------------------------\n// :: lookup function for variable doc strings\n// -------------------------------------------------------------------------\nEnvironment.prototype.doc = function(name, value = null, dump = false) {\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n if (value) {\n if (!dump) {\n value = trim_lines(value);\n }\n this.__docs__.set(name, value);\n return this;\n }\n if (this.__docs__.has(name)) {\n return this.__docs__.get(name);\n }\n if (this.__parent__) {\n return this.__parent__.doc(name);\n }\n};\n// -------------------------------------------------------------------------\n// :: function create frame environment for usage in functions\n// :: frames are used to it's easier to find environments of the functions\n// :: in scope chain, they are dummy environments just for lookup\n// -------------------------------------------------------------------------\nEnvironment.prototype.newFrame = function(fn, args) {\n var frame = this.inherit('__frame__');\n frame.set('parent.frame', doc('parent.frame', function(n = 1) {\n n = n.valueOf();\n var scope = frame.__parent__;\n if (!(scope instanceof Environment)) {\n return nil;\n }\n if (n <= 0) {\n return scope;\n }\n var parent_frame = scope.get('parent.frame');\n return parent_frame(n - 1);\n }, global_env.__env__['parent.frame'].__doc__));\n args.callee = fn;\n frame.set('arguments', args);\n return frame;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype._lookup = function(symbol) {\n if (symbol instanceof LSymbol) {\n symbol = symbol.__name__;\n }\n if (symbol instanceof LString) {\n symbol = symbol.valueOf();\n }\n if (this.__env__.hasOwnProperty(symbol)) {\n return Value(this.__env__[symbol]);\n }\n if (this.__parent__) {\n return this.__parent__._lookup(symbol);\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.clone = function() {\n // duplicate refs\n var env = {};\n // TODO: duplicated Symbols\n Object.keys(this.__env__).forEach(key => {\n env[key] = this.__env__[key];\n });\n return new Environment(env, this.__parent__, this.__name__);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.merge = function(env, name = 'merge') {\n typecheck('Environment::merge', env, 'environment');\n return this.inherit(name, env.__env__);\n};\n// -------------------------------------------------------------------------\n// value returned in lookup if found value in env and in promise_all\n// -------------------------------------------------------------------------\nfunction Value(value) {\n if (typeof this !== 'undefined' && !(this instanceof Value) ||\n typeof this === 'undefined') {\n return new Value(value);\n }\n this.value = value;\n}\n// -------------------------------------------------------------------------\nValue.isUndefined = function(x) {\n return x instanceof Value && typeof x.value === 'undefined';\n};\n// -------------------------------------------------------------------------\nValue.prototype.valueOf = function() {\n return this.value;\n};\n// -------------------------------------------------------------------------\n// :: differnt object than value used as object for (values)\n// -------------------------------------------------------------------------\nfunction Values(values) {\n if (values.length) {\n if (values.length === 1) {\n return values[0];\n }\n }\n if (typeof this !== 'undefined' && !(this instanceof Values) ||\n typeof this === 'undefined') {\n return new Values(values);\n }\n this.__values__ = values;\n}\nValues.prototype.toString = function() {\n return this.__values__.map(x => toString(x)).join('\\n');\n};\nValues.prototype.valueOf = function() {\n return this.__values__;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.get = function(symbol, options = {}) {\n // we keep original environment as context for bind\n // so print will get user stdout\n typecheck('Environment::get', symbol, ['symbol', 'string']);\n const { throwError = true } = options;\n var name = symbol;\n if (name instanceof LSymbol || name instanceof LString) {\n name = name.valueOf();\n }\n var value = this._lookup(name);\n if (value instanceof Value) {\n if (Value.isUndefined(value)) {\n return undefined;\n }\n return patch_value(value.valueOf());\n }\n var parts;\n if (symbol instanceof LSymbol && symbol[LSymbol.object]) {\n // dot notation symbols from syntax-rules that are gensyms\n parts = symbol[LSymbol.object];\n } else if (typeof name === 'string') {\n parts = name.split('.').filter(Boolean);\n }\n if (parts && parts.length > 0) {\n var [first, ...rest] = parts;\n value = this._lookup(first);\n if (rest.length) {\n try {\n if (value instanceof Value) {\n value = value.valueOf();\n } else {\n value = get(root, first);\n if (is_function(value)) {\n value = unbind(value);\n }\n }\n if (typeof value !== 'undefined') {\n // object accessor\n return get(value, ...rest);\n }\n } catch (e) {\n throw e;\n }\n } else if (value instanceof Value) {\n return patch_value(value.valueOf());\n }\n value = get(root, name);\n }\n if (typeof value !== 'undefined') {\n return value;\n }\n if (throwError) {\n throw new Error(\"Unbound variable `\" + name.toString() + \"'\");\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.set = function(name, value, doc = null) {\n typecheck('Environment::set', name, ['string', 'symbol']);\n if (LNumber.isNumber(value)) {\n value = LNumber(value);\n }\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n this.__env__[name] = value;\n if (doc) {\n this.doc(name, doc, true);\n }\n return this;\n};\n// -------------------------------------------------------------------------\n// for internal use only\n// -------------------------------------------------------------------------\nEnvironment.prototype.constant = function(name, value) {\n if (this.__env__.hasOwnProperty(name)) {\n throw new Error(`Environment::constant: ${name} already exists`);\n }\n if (arguments.length === 1 && is_plain_object(arguments[0])) {\n var obj = arguments[0];\n Object.keys(obj).forEach(key => {\n this.constant(name, obj[key]);\n });\n } else {\n Object.defineProperty(this.__env__, name, {\n value,\n enumerable: true\n });\n }\n return this;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.has = function(name) {\n return this.__env__.hasOwnProperty(name);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.ref = function(name) {\n var env = this;\n while (true) {\n if (!env) {\n break;\n }\n if (env.has(name)) {\n return env;\n }\n env = env.__parent__;\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.parents = function() {\n var env = this;\n var result = [];\n while (env) {\n result.unshift(env);\n env = env.__parent__;\n }\n return result;\n};\n// -------------------------------------------------------------------------\n// :: Quote funtion used to pause evaluation from Macro\n// -------------------------------------------------------------------------\nfunction quote(value) {\n if (is_promise(value)) {\n return value.then(quote);\n }\n if (value instanceof Pair || value instanceof LSymbol) {\n value[__data__] = true;\n }\n return value;\n}\n// -------------------------------------------------------------------------\n// :: Unquote is used for multiple backticks and unquote\n// -------------------------------------------------------------------------\nfunction Unquote(value, count, max) {\n this.value = value;\n this.count = count;\n this.max = max;\n}\nUnquote.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------------\nvar native_lambda = parse(tokenize(`(lambda ()\n \"[native code]\"\n (throw \"Invalid Invocation\"))`))[0];\n// -------------------------------------------------------------------------------\nvar get = doc('get', function get(object, ...args) {\n var value;\n var len = args.length;\n while (args.length) {\n // if arg is symbol someone probably want to get __fn__ from binded function\n if (is_function(object) && typeof args[0] !== 'symbol') {\n object = unbind(object);\n }\n var arg = args.shift();\n var name = unbox(arg);\n // the value was set to false to prevent resolving\n // by Real Promises #153\n if (name === 'then' && object instanceof QuotedPromise) {\n value = QuotedPromise.prototype.then;\n } else if (name === '__code__' && is_function(object) &&\n typeof object.__code__ === 'undefined') {\n value = native_lambda;\n } else {\n value = object[name];\n }\n if (typeof value === 'undefined') {\n if (args.length) {\n throw new Error(`Try to get ${args[0]} from undefined`);\n }\n return value;\n } else {\n var context;\n if (args.length - 1 < len) {\n context = object;\n }\n value = patch_value(value, context);\n }\n object = value;\n }\n return value;\n}, `(. obj . args)\n (get obj . args)\n\n Function use object as base and keep using arguments to get the\n property of JavaScript object. Arguments need to be a strings.\n e.g. \\`(. console \"log\")\\` if you use any function inside LIPS is\n will be weakly bind (can be rebind), so you can call this log function\n without problem unlike in JavaScript when you use\n \\`var log = console.log\\`.\n \\`get\\` is an alias because . don't work in every place, e.g. you can't\n pass it as argument.`);\n// -------------------------------------------------------------------------\n// function get internal protected data\n// -------------------------------------------------------------------------\nfunction internal(env, name) {\n var internal_env = interaction(env, '**internal-env**');\n return internal_env.get(name);\n}\n// -------------------------------------------------------------------------\n// get variable from interaction environment\n// -------------------------------------------------------------------------\nfunction interaction(env, name) {\n var interaction_env = env.get('**interaction-environment**');\n return interaction_env.get(name);\n}\n// -------------------------------------------------------------------------\nvar internal_env = new Environment({\n stdout: new BufferedOutputPort(function(...args) {\n console.log(...args);\n }),\n // ------------------------------------------------------------------\n stderr: new BufferedOutputPort(function(...args) {\n console.error(...args);\n }),\n // ------------------------------------------------------------------\n stdin: InputPort(function() {\n return Promise.resolve(prompt(''));\n }),\n // those will be compiled by babel regex plugin\n 'letter-unicode-regex': /\\p{L}/u,\n 'numeral-unicode-regex': /\\p{N}/u,\n 'space-unicode-regex': /\\s/u\n}, undefined, 'internal');\n// -------------------------------------------------------------------------\nvar nan = LNumber(NaN);\nvar constants = {\n 'true': true,\n 'false': false,\n '#true': true,\n '#false': false,\n '#t': true,\n '#f': false,\n nil,\n 'undefined': undefined,\n 'null': null,\n 'NaN': nan,\n '+nan.0': nan,\n '-nan.0': nan\n};\n// -------------------------------------------------------------------------\nvar global_env = new Environment({\n eof,\n undefined, // undefined as parser constant breaks most of the unit tests\n // ---------------------------------------------------------------------\n 'peek-char': doc('peek-char', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('peek-char', port, 'input-port');\n return port.peek_char();\n }, `(peek-char port)\n\n Function get character from string port or EOF object if no more\n data in string port.`),\n // ------------------------------------------------------------------\n 'read-line': doc('read-line', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('read-line', port, 'input-port');\n return port.read_line();\n }, `(read-char port)\n\n Function read next character from input port.`),\n // ------------------------------------------------------------------\n 'read-char': doc('read-char', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('read-char', port, 'input-port');\n return port.read_char();\n }, `(read-char port)\n\n Function read next character from input port.`),\n // ------------------------------------------------------------------\n read: doc('read', async function read(arg = null) {\n if (LString.isString(arg)) {\n for await (let value of parse(arg, this)) {\n return value;\n }\n }\n var port;\n if (arg === null) {\n port = internal(this, 'stdin');\n } else {\n port = arg;\n }\n typecheck_text_port('read', port, 'input-port');\n return port.read.call(this);\n }, `(read [string])\n\n Function if used with string will parse the string and return\n list structure of LIPS code. If called without an argument it\n will read string from standard input (using browser prompt or\n user defined way) and call itself with that string (parse is)\n function can be used together with eval to evaluate code from\n string`),\n // ------------------------------------------------------------------\n pprint: doc('pprint', function pprint(arg) {\n if (arg instanceof Pair) {\n arg = new lips.Formatter(arg.toString(true)).break().format();\n global_env.get('display').call(global_env, arg);\n } else {\n global_env.get('write').call(global_env, arg);\n }\n global_env.get('newline').call(global_env);\n }, `(pprint expression)\n\n Pretty print list expression, if called with non-pair it just call\n print function with passed argument.`),\n // ------------------------------------------------------------------\n print: doc('print', function print(...args) {\n const display = global_env.get('display');\n const newline = global_env.get('newline');\n args.forEach(arg => {\n display.call(global_env, arg);\n newline.call(global_env);\n });\n }, `(print . args)\n\n Function convert each argument to string and print the result to\n standard output (by default it's console but it can be defined\n it user code), the function call newline after printing each arg.`),\n // ------------------------------------------------------------------\n format: doc('format', function format(str, ...args) {\n typecheck('format', str, 'string');\n const re = /(~[as%~])/g;\n let m = str.match(/(~[as])/g);\n if (m && m.length > args.length) {\n throw new Error('Not enough arguments');\n }\n var i = 0;\n var repr = global_env.get('repr');\n str = str.replace(re, (x) => {\n const chr = x[1];\n if (chr === '~') {\n return '~';\n } else if (chr === '%') {\n return '\\n';\n } else {\n const arg = args[i++];\n if (chr === 'a') {\n return repr(arg);\n } else {\n return repr(arg, true);\n }\n }\n });\n m = str.match(/~([\\S])/);\n if (m) {\n throw new Error(`format: Unrecognized escape seqence ${m[1]}`);\n }\n return str;\n }, `(format string n1 n2 ...)\n\n Function accepts string template and replacing any escape sequences\n by arguments:\n\n * ~a value as if printed with display\n * ~s value as if printed with write\n * ~% newline character\n * ~~ literal tilde '~' is inserted\n\n if there missing arguments or other escape character it throw exception.`),\n // ------------------------------------------------------------------\n display: doc('display', function display(arg, port = null) {\n if (port === null) {\n port = internal(this, 'stdout');\n } else {\n typecheck('display', port, 'output-port');\n }\n const value = global_env.get('repr')(arg);\n port.write.call(global_env, value);\n }, `(display arg [port])\n\n Function send string to standard output or provied port.`),\n // ------------------------------------------------------------------\n 'display-error': doc('display-error', function error(...args) {\n const port = internal(this, 'stderr');\n const repr = global_env.get('repr');\n const value = args.map(repr).join(' ');\n port.write.call(global_env, value);\n global_env.get('newline')(port);\n }, `(display-error . args)\n\n Display error message.`),\n // ------------------------------------------------------------------\n '%same-functions': doc('%same-functions', function(a, b) {\n if (!is_function(a)) {\n return false;\n }\n if (!is_function(b)) {\n return false;\n }\n return unbind(a) === unbind(b);\n }, `(%same-functions a b)\n\n Helper function that check if two bound functions are the same`),\n // ------------------------------------------------------------------\n help: doc(new Macro('help', function(code, { dynamic_scope, error }) {\n var symbol;\n if (code.car instanceof LSymbol) {\n symbol = code.car;\n } else if (code.car instanceof Pair && code.car.car instanceof LSymbol) {\n symbol = code.car.car;\n } else {\n var env = this;\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var ret = evaluate(code.car, { env, error, dynamic_scope });\n if (ret && ret.__doc__) {\n return ret.__doc__;\n }\n return;\n }\n var __doc__;\n var value = this.get(symbol);\n __doc__ = value && value.__doc__;\n if (__doc__) {\n return __doc__;\n }\n var ref = this.ref(symbol);\n if (ref) {\n __doc__ = ref.doc(symbol);\n if (__doc__) {\n return __doc__;\n }\n }\n }), `(help object)\n\n Macro returns documentation for function or macro. You can save the function\n or macro in variable and use it in context. But help for variable require\n to pass the symbol itself.`),\n // ------------------------------------------------------------------\n cons: doc('cons', function cons(car, cdr) {\n return new Pair(car, cdr);\n }, `(cons left right)\n\n Function return new Pair out of two arguments.`),\n // ------------------------------------------------------------------\n car: doc('car', function car(list) {\n typecheck('car', list, 'pair');\n return list.car;\n }, `(car pair)\n\n Function returns car (head) of the list/pair.`),\n // ------------------------------------------------------------------\n cdr: doc('cdr', function cdr(list) {\n typecheck('cdr', list, 'pair');\n return list.cdr;\n }, `(cdr pair)\n\n Function returns cdr (tail) of the list/pair.`),\n // ------------------------------------------------------------------\n 'set!': doc(new Macro('set!', function(code, { dynamic_scope, error } = {}) {\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var env = this;\n var ref;\n var value = evaluate(code.cdr.car, { env: this, dynamic_scope, error });\n value = resolve_promises(value);\n function set(object, key, value) {\n if (is_promise(object)) {\n return object.then(key => set(object, key, value));\n }\n if (is_promise(key)) {\n return key.then(key => set(object, key, value));\n }\n if (is_promise(value)) {\n return value.then(value => set(object, key, value));\n }\n env.get('set-obj!').call(env, object, key, value);\n return value;\n }\n if (code.car instanceof Pair && LSymbol.is(code.car.car, '.')) {\n var second = code.car.cdr.car;\n var thrid = code.car.cdr.cdr.car;\n var object = evaluate(second, { env: this, dynamic_scope, error });\n var key = evaluate(thrid, { env: this, dynamic_scope, error });\n return set(object, key, value);\n }\n if (!(code.car instanceof LSymbol)) {\n throw new Error('set! first argument need to be a symbol or ' +\n 'dot accessor that evaluate to object.');\n }\n var symbol = code.car.valueOf();\n ref = this.ref(code.car.__name__);\n // we don't return value because we only care about sync of set value\n // when value is a promise\n return unpromise(value, value => {\n if (!ref) {\n // case (set! fn.toString (lambda () \"xxx\"))\n var parts = symbol.split('.');\n if (parts.length > 1) {\n var key = parts.pop();\n var name = parts.join('.');\n var obj = this.get(name, { throwError: false });\n if (obj) {\n set(obj, key, value);\n return;\n }\n }\n throw new Error('Unbound variable `' + symbol + '\\'');\n }\n ref.set(symbol, value);\n });\n }), `(set! name value)\n\n Macro that can be used to set the value of the variable (mutate)\n it search the scope chain until it finds first non emtpy slot and set it.`),\n // ------------------------------------------------------------------\n 'unset!': doc(new Macro('set!', function(code) {\n if (!(code.car instanceof LSymbol)) {\n throw new Error('unset! first argument need to be a symbol or ' +\n 'dot accessor that evaluate to object.');\n }\n const symbol = code.car;\n var ref = this.ref(symbol);\n if (ref) {\n delete ref.__env__[symbol.__name__];\n }\n }), `(unset! name)\n\n Function delete specified name from environment.`),\n // ------------------------------------------------------------------\n 'set-car!': doc('set-car!', function(slot, value) {\n typecheck('set-car!', slot, 'pair');\n slot.car = value;\n }, `(set-car! obj value)\n\n Function that set car (head) of the list/pair to specified value.\n It can destroy the list. Old value is lost.`),\n // ------------------------------------------------------------------\n 'set-cdr!': doc('set-cdr!', function(slot, value) {\n typecheck('set-cdr!', slot, 'pair');\n slot.cdr = value;\n }, `(set-cdr! obj value)\n\n Function that set cdr (tail) of the list/pair to specified value.\n It can destroy the list. Old value is lost.`),\n // ------------------------------------------------------------------\n 'empty?': doc('empty?', function(x) {\n return typeof x === 'undefined' || x === nil;\n }, `(empty? object)\n\n Function return true if value is undfined empty list.`),\n // ------------------------------------------------------------------\n gensym: doc(\n 'gensym',\n gensym,\n `(gensym)\n\n Function generate unique symbol, to use with macros as meta name.`),\n // ------------------------------------------------------------------\n // TODO: (load filename environment-specifier)\n // ------------------------------------------------------------------\n load: doc('load', function load(file, env) {\n typecheck('load', file, 'string');\n var g_env = this;\n if (g_env.__name__ === '__frame__') {\n g_env = g_env.__parent__;\n }\n if (!(env instanceof Environment)) {\n if (g_env === global_env) {\n // this is used for let-env + load\n // this may be obsolete when there is env arg\n env = g_env;\n } else {\n env = this.get('**interaction-environment**');\n }\n }\n const PATH = '**module-path**';\n var module_path = global_env.get(PATH, { throwError: false });\n file = file.valueOf();\n if (!file.match(/.[^.]+$/)) {\n file += '.scm';\n }\n const IS_BIN = file.match(/\\.xcb$/);\n function run(code) {\n if (IS_BIN) {\n code = unserialize_bin(code);\n } else {\n if (type(code) === 'buffer') {\n code = code.toString();\n }\n code = code.replace(/^#!.*/, '');\n if (code.match(/^\\{/)) {\n code = unserialize(code);\n }\n }\n return exec(code, env);\n }\n function fetch(file) {\n return root.fetch(file)\n .then(res => IS_BIN ? res.arrayBuffer() : res.text())\n .then((code) => {\n if (IS_BIN) {\n code = new Uint8Array(code);\n }\n return code;\n });\n }\n if (is_node()) {\n return new Promise((resolve, reject) => {\n var path = nodeRequire('path');\n if (module_path) {\n module_path = module_path.valueOf();\n file = path.join(module_path, file);\n }\n global_env.set(PATH, path.dirname(file));\n nodeRequire('fs').readFile(file, function(err, data) {\n if (err) {\n reject(err);\n global_env.set(PATH, module_path);\n } else {\n try {\n run(data).then(() => {\n resolve();\n global_env.set(PATH, module_path);\n }).catch(reject);\n } catch (e) {\n reject(e);\n }\n }\n });\n });\n }\n if (module_path) {\n module_path = module_path.valueOf();\n file = module_path + '/' + file.replace(/^\\.?\\/?/, '');\n }\n return fetch(file).then(code => {\n global_env.set(PATH, file.replace(/\\/[^/]*$/, ''));\n return run(code);\n }).then(() => {}).finally(() => {\n global_env.set(PATH, module_path);\n });\n }, `(load filename)\n (load filename environment)\n\n Function fetch the file and evaluate its content as LIPS code,\n If second argument is provided and it's environment the evaluation\n will happen in that environment.`),\n // ------------------------------------------------------------------\n 'do': doc(new Macro('do', async function(code, { dynamic_scope, error }) {\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n var scope = self.inherit('do');\n var vars = code.car;\n var test = code.cdr.car;\n var body = code.cdr.cdr;\n if (body !== nil) {\n body = new Pair(LSymbol('begin'), body);\n }\n let eval_args = { env: self, dynamic_scope, error };\n let node = vars;\n while (node !== nil) {\n const item = node.car;\n scope.set(item.car, await evaluate(item.cdr.car, eval_args));\n node = node.cdr;\n }\n eval_args = { env: scope, dynamic_scope, error };\n while ((await evaluate(test.car, eval_args)) === false) {\n if (body !== nil) {\n await lips.evaluate(body, eval_args);\n }\n let node = vars;\n const next = {};\n while (node !== nil) {\n const item = node.car;\n if (item.cdr.cdr !== nil) {\n const value = await evaluate(item.cdr.cdr.car, eval_args);\n next[item.car.valueOf()] = value;\n }\n node = node.cdr;\n }\n const symbols = Object.getOwnPropertySymbols(next);\n Object.keys(next).concat(symbols).forEach(key => {\n scope.set(key, next[key]);\n });\n }\n if (test.cdr !== nil) {\n return await evaluate(test.cdr.car, eval_args);\n }\n }), `(do (( )) (test expression) . body)\n\n Iteration macro that evaluate the expression body in scope of the variables.\n On Eeach loop it increase the variables according to next expression and run\n test to check if the loop should continue. If test is signle call the macro\n will not return anything. If the test is pair of expression and value the\n macro will return that value after finish.`),\n // ------------------------------------------------------------------\n 'if': doc(new Macro('if', function(code, { dynamic_scope, error }) {\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var env = this;\n var resolve = (cond) => {\n if (cond === false) {\n return evaluate(code.cdr.cdr.car, {\n env,\n dynamic_scope,\n error\n });\n } else {\n return evaluate(code.cdr.car, {\n env,\n dynamic_scope,\n error\n });\n }\n };\n if (code === nil) {\n throw new Error('too few expressions for `if`');\n }\n var cond = evaluate(code.car, { env, dynamic_scope, error });\n return unpromise(cond, resolve);\n }), `(if cond true-expr false-expr)\n\n Macro evaluate condition expression and if the value is true, it\n evaluate and return true expression if not it evaluate and return\n false expression`),\n // ------------------------------------------------------------------\n 'let-env': new Macro('let-env', function(code, options = {}) {\n const { dynamic_scope, error } = options;\n typecheck('let-env', code, 'pair');\n var ret = evaluate(code.car, { env: this, dynamic_scope, error });\n return unpromise(ret, function(value) {\n typecheck('let-env', value, 'environment');\n return evaluate(Pair(LSymbol('begin'), code.cdr), {\n env: value, dynamic_scope, error\n });\n });\n }, `(let-env env . body)\n\n Special macro that evaluate body in context of given environment\n object.`),\n // ------------------------------------------------------------------\n 'letrec': doc(\n let_macro(Symbol.for('letrec')),\n `(letrec ((a value-a) (b value-b)) body)\n\n Macro that creates new environment, then evaluate and assign values to\n names and then evaluate the body in context of that environment.\n Values are evaluated sequentialy and next value can access to\n previous values/names.`),\n // ---------------------------------------------------------------------\n 'letrec*': doc(\n let_macro(Symbol.for('letrec')),\n `(letrec* ((a value-a) (b value-b)) body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so use can use recursive code as well as reference previous binding.\n In LIPS both letrec and letrec* behave the same.`),\n // ---------------------------------------------------------------------\n 'let*': doc(\n let_macro(Symbol.for('let*')),\n `(let* ((a value-a) (b value-b)) body)\n\n Macro similar to \\`let\\` but next argument get environment\n from previous let variable, so they you can define one variable,\n and use in next argument.`),\n // ---------------------------------------------------------------------\n 'let': doc(\n let_macro(Symbol.for('let')),\n `(let ((a value-a) (b value-b)) body)\n\n Macro that creates new environment, then evaluate and assign values to\n names and then evaluate the body in context of that environment.\n Values are evaluated sequentialy but you can't access\n previous values/names when next are evaluated. You can only get them\n from body of let expression.`),\n // ------------------------------------------------------------------\n 'begin*': doc(pararel('begin*', function(values) {\n return values.pop();\n }), `(begin* . expr)\n\n This macro is parallel version of begin. It evaluate each expression and\n if it's a promise it will evaluate it in parallel and return value\n of last expression.`),\n // ------------------------------------------------------------------\n 'begin': doc(new Macro('begin', function(code, options) {\n var args = Object.assign({ }, options);\n var arr = global_env.get('list->array')(code);\n if (args.dynamic_scope) {\n args.dynamic_scope = this;\n }\n args.env = this;\n var result;\n return (function loop() {\n if (arr.length) {\n var code = arr.shift();\n var ret = evaluate(code, args);\n return unpromise(ret, value => {\n result = value;\n return loop();\n });\n } else {\n return result;\n }\n })();\n }), `(begin . args)\n\n Macro runs list of expression and return valuate of the list one.\n It can be used in place where you can only have single exression,\n like if expression.`),\n // ------------------------------------------------------------------\n 'ignore': new Macro('ignore', function(code, { dynamic_scope, error }) {\n var args = { env: this, error };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n evaluate(new Pair(new LSymbol('begin'), code), args);\n }, `(ignore expression)\n\n Macro that will evaluate expression and swallow any promises that may\n be created. It wil run and ignore any value that may be returned by\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined.`),\n // ------------------------------------------------------------------\n 'call/cc': doc(Macro.defmacro('call/cc', function(code, eval_args = {}) {\n const args = {\n env: this,\n ...eval_args\n };\n return unpromise(evaluate(code.car, args), (result) => {\n if (is_function(result)) {\n return result(new Continuation(null));\n }\n });\n }), `(call/cc proc)\n\n TODO`),\n // ------------------------------------------------------------------\n define: doc(Macro.defmacro('define', function(code, eval_args) {\n var env = this;\n if (code.car instanceof Pair &&\n code.car.car instanceof LSymbol) {\n var new_code = new Pair(\n new LSymbol(\"define\"),\n new Pair(\n code.car.car,\n new Pair(\n new Pair(\n new LSymbol(\"lambda\"),\n new Pair(\n code.car.cdr,\n code.cdr\n )\n )\n )\n )\n );\n return new_code;\n } else if (eval_args.macro_expand) {\n // prevent evaluation in macroexpand\n return;\n }\n if (eval_args.dynamic_scope) {\n eval_args.dynamic_scope = this;\n }\n eval_args.env = env;\n var value = code.cdr.car;\n let new_expr;\n if (value instanceof Pair) {\n value = evaluate(value, eval_args);\n new_expr = true;\n } else if (value instanceof LSymbol) {\n value = env.get(value);\n }\n typecheck('define', code.car, 'symbol');\n return unpromise(value, value => {\n if (env.__name__ === Syntax.__merge_env__) {\n env = env.__parent__;\n }\n if (new_expr &&\n ((is_function(value) && is_lambda(value)) ||\n (value instanceof Syntax))) {\n value.__name__ = code.car.valueOf();\n if (value.__name__ instanceof LString) {\n value.__name__ = value.__name__.valueOf();\n }\n }\n let __doc__;\n if (code.cdr.cdr instanceof Pair &&\n LString.isString(code.cdr.cdr.car)) {\n __doc__ = code.cdr.cdr.car.valueOf();\n }\n env.set(code.car, value, __doc__, true);\n });\n }), `(define name expression)\n (define name expression \"doc string\")\n (define (function-name . args) body)\n\n Macro for defining values. It can be used to define variables,\n or function. If first argument is list it will create function\n with name beeing first element of the list. The macro evalute\n code \\`(define function (lambda args body))\\``),\n // ------------------------------------------------------------------\n 'set-obj!': doc('set-obj!', function(obj, key, value) {\n var obj_type = typeof obj;\n if (is_null(obj) || (obj_type !== 'object' && obj_type !== 'function')) {\n var msg = typeErrorMessage('set-obj!', type(obj), ['object', 'function']);\n throw new Error(msg);\n }\n typecheck('set-obj!', key, ['string', 'symbol', 'number']);\n obj = unbind(obj);\n key = key.valueOf();\n if (arguments.length === 2) {\n delete obj[key];\n } else if (is_prototype(obj) && is_function(value)) {\n obj[key] = unbind(value);\n obj[key][__prototype__] = true;\n } else if (is_function(value) || is_native(value) || value === nil) {\n obj[key] = value;\n } else {\n obj[key] = value && !is_prototype(value) ? value.valueOf() : value;\n }\n }, `(set-obj! obj key value)\n\n Function set property of JavaScript object`),\n // ------------------------------------------------------------------\n 'null-environment': doc('null-environment', function() {\n return global_env.inherit('null');\n }, `(null-environment)\n\n Function return new base environment with std lib.`),\n // ------------------------------------------------------------------\n 'values': doc('values', function values(...args) {\n return Values(args);\n }, `(values a1 a2 ...)\n\n If called with more then one elment it will create special\n Values object that can be used in call-with-values function`),\n // ------------------------------------------------------------------\n 'call-with-values': doc('call-with-values', function(producer, consumer) {\n typecheck('call-with-values', producer, 'function', 1);\n typecheck('call-with-values', consumer, 'function', 2);\n var maybe = producer();\n if (maybe instanceof Values) {\n return consumer(...maybe.valueOf());\n }\n return consumer(maybe);\n }, `(call-with-values producer consumer)\n\n Calls its producer argument with no values and a continuation that,\n when passed some values, calls the consumer procedure with those\n values as arguments.`),\n // ------------------------------------------------------------------\n 'current-environment': doc('current-environment', function() {\n if (this.__name__ === '__frame__') {\n return this.__parent__;\n }\n return this;\n }, `(current-environment)\n\n Function return current environement.`),\n // ------------------------------------------------------------------\n 'parent.frame': doc('parent.frame', function() {\n return user_env;\n }, `(parent.frame)\n\n Return parent environment if called from inside function.\n If no parent frame found it return nil.`),\n // ------------------------------------------------------------------\n 'eval': doc('eval', function(code, env) {\n env = env || this.get('current-environment').call(this);\n return evaluate(code, {\n env,\n //dynamic_scope: this,\n error: e => {\n var error = global_env.get('display-error');\n error.call(this, e.message);\n if (e.code) {\n var stack = e.code.map((line, i) => {\n return `[${i + 1}]: ${line}`;\n }).join('\\n');\n error.call(this, stack);\n }\n }\n });\n }, `(eval expr)\n (eval expr environment)\n\n Function evalute LIPS Scheme code.`),\n // ------------------------------------------------------------------\n lambda: new Macro('lambda', function(code, { dynamic_scope, error } = {}) {\n var self = this;\n var __doc__;\n if (code.cdr instanceof Pair &&\n LString.isString(code.cdr.car) &&\n code.cdr.cdr !== nil) {\n __doc__ = code.cdr.car.valueOf();\n }\n function lambda(...args) {\n var env;\n // this is function calling env\n // self is lexical scope when function was defined\n if (dynamic_scope) {\n if (!(this instanceof Environment)) {\n env = self;\n } else {\n env = this;\n }\n } else {\n env = self;\n }\n env = env.inherit('lambda');\n var name = code.car;\n var i = 0;\n var value;\n if (typeof this !== 'undefined' && !(this instanceof Environment)) {\n if (this && !this.__instance__) {\n Object.defineProperty(this, '__instance__', {\n enumerable: false,\n get: () => true,\n set: () => {},\n configurable: false\n });\n }\n env.set('this', this);\n }\n // arguments and arguments.callee inside lambda function\n if (this instanceof Environment) {\n var options = { throwError: false };\n env.set('arguments', this.get('arguments', options));\n env.set('parent.frame', this.get('parent.frame', options));\n } else {\n // this case is for lambda as callback function in JS; e.g. setTimeout\n var _args = args.slice();\n _args.callee = lambda;\n _args.env = env;\n env.set('arguments', _args);\n }\n if (name instanceof LSymbol || name !== nil) {\n while (true) {\n if (name.car !== nil) {\n if (name instanceof LSymbol) {\n // rest argument, can also be first argument\n value = quote(Pair.fromArray(args.slice(i), false));\n env.__env__[name.__name__] = value;\n break;\n } else {\n value = args[i];\n env.__env__[name.car.__name__] = value;\n }\n }\n if (name.cdr === nil) {\n break;\n }\n i++;\n name = name.cdr;\n }\n }\n if (dynamic_scope) {\n dynamic_scope = env;\n }\n var rest = __doc__ ? code.cdr.cdr : code.cdr;\n var output = new Pair(new LSymbol('begin'), rest);\n return evaluate(output, { env, dynamic_scope, error });\n }\n var length = code.car instanceof Pair ? code.car.length() : null;\n lambda.__code__ = new Pair(new LSymbol('lambda'), code);\n lambda[__lambda__] = true;\n if (!(code.car instanceof Pair)) {\n return doc(lambda, __doc__, true); // variable arguments\n }\n // wrap and decorate with __doc__\n return doc(set_fn_length(lambda, length), __doc__, true);\n }, `(lambda (a b) body)\n (lambda args body)\n (lambda (a b . rest) body)\n\n Macro lambda create new anonymous function, if first element of the body\n is string and there is more elements it will be documentation, that can\n be read using (help fn)`),\n 'macroexpand': new Macro('macroexpand', macro_expand()),\n 'macroexpand-1': new Macro('macroexpand-1', macro_expand(true)),\n // ------------------------------------------------------------------\n 'define-macro': doc(new Macro(macro, function(macro, { dynamic_scope, error }) {\n if (macro.car instanceof Pair && macro.car.car instanceof LSymbol) {\n var name = macro.car.car.__name__;\n var __doc__;\n if (LString.isString(macro.cdr.car) && macro.cdr.cdr instanceof Pair) {\n __doc__ = macro.cdr.car.valueOf();\n }\n var makro_instance = Macro.defmacro(name, function(code) {\n var env = new Environment({}, this, 'defmacro');\n var name = macro.car.cdr;\n var arg = code;\n while (true) {\n if (name === nil) {\n break;\n }\n if (name instanceof LSymbol) {\n env.__env__[name.__name__] = arg;\n break;\n } else if (name.car !== nil) {\n if (arg === nil) {\n env.__env__[name.car.__name__] = nil;\n } else {\n if (arg.car instanceof Pair) {\n arg.car[__data__] = true;\n }\n env.__env__[name.car.__name__] = arg.car;\n }\n }\n if (name.cdr === nil) {\n break;\n }\n if (arg !== nil) {\n arg = arg.cdr;\n }\n name = name.cdr;\n }\n if (dynamic_scope) {\n dynamic_scope = env;\n }\n var eval_args = {\n env,\n dynamic_scope,\n error\n };\n // evaluate macro\n if (macro.cdr instanceof Pair) {\n // this eval will return lips code\n var rest = __doc__ ? macro.cdr.cdr : macro.cdr;\n var result = rest.reduce(function(result, node) {\n return evaluate(node, eval_args);\n });\n return unpromise(result, function(result) {\n if (typeof result === 'object') {\n delete result[__data__];\n }\n return result;\n });\n }\n }, __doc__, true);\n makro_instance.__code__ = new Pair(new LSymbol('define-macro'), macro);\n this.set(name, makro_instance);\n }\n }), `(define-macro (name . args) body)\n\n Meta macro, macro that create new macros, if return value is list structure\n it will be evaluated when macro is invoked. You can use quasiquote \\` and\n unquote , and unquote-splicing ,@ inside to create expression that will be\n evaluated on runtime. Macros works like this: if you pass any expression to\n macro the arguments will not be evaluated unless macro itself evaluate it.\n Because of this macro can manipulate expression (arguments) as lists.`),\n // ------------------------------------------------------------------\n 'syntax-rules': new Macro('syntax-rules', function(macro, options) {\n var { dynamic_scope, error } = options;\n var env = this;\n function get_identifiers(node) {\n let symbols = [];\n while (node !== nil) {\n const x = node.car;\n symbols.push(x.valueOf());\n node = node.cdr;\n }\n return symbols;\n }\n function validate_identifiers(node) {\n while (node !== nil) {\n const x = node.car;\n if (!(x instanceof LSymbol)) {\n throw new Error('syntax-rules: wrong identifier');\n }\n node = node.cdr;\n }\n }\n if (macro.car instanceof LSymbol) {\n validate_identifiers(macro.cdr.car);\n } else {\n validate_identifiers(macro.car);\n }\n const syntax = new Syntax(function(code, { macro_expand }) {\n var scope = env.inherit('syntax');\n if (dynamic_scope) {\n dynamic_scope = scope;\n }\n var var_scope = this;\n // for macros that define variables used in macro (2 levels nestting)\n if (var_scope.__name__ === Syntax.__merge_env__) {\n // copy refs for defined gynsyms\n const props = Object.getOwnPropertySymbols(var_scope.__env__);\n props.forEach(symbol => {\n var_scope.__parent__.set(symbol, var_scope.__env__[symbol]);\n });\n var_scope = var_scope.__parent__;\n }\n var eval_args = { env: scope, dynamic_scope, error };\n let ellipsis, rules, symbols;\n if (macro.car instanceof LSymbol) {\n ellipsis = macro.car;\n symbols = get_identifiers(macro.cdr.car);\n rules = macro.cdr.cdr;\n } else {\n ellipsis = '...';\n symbols = get_identifiers(macro.car);\n rules = macro.cdr;\n }\n try {\n while (rules !== nil) {\n var rule = rules.car.car;\n var expr = rules.car.cdr.car;\n log(rule);\n var bindings = extract_patterns(rule, code, symbols, ellipsis, {\n expansion: this, define: env\n });\n if (bindings) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(JSON.stringify(symbolize(bindings), true, 2));\n console.log('PATTERN: ' + rule.toString(true));\n console.log('MACRO: ' + code.toString(true));\n }\n // name is modified in transform_syntax\n var names = [];\n const new_expr = transform_syntax({\n bindings,\n expr,\n symbols,\n scope,\n lex_scope: var_scope,\n names,\n ellipsis\n });\n log('OUPUT>>> ' + new_expr.toString());\n if (new_expr) {\n expr = new_expr;\n }\n var new_env = var_scope.merge(scope, Syntax.__merge_env__);\n if (macro_expand) {\n return { expr, scope: new_env };\n }\n var result = evaluate(expr, { ...eval_args, env: new_env });\n // Hack: update the result if there are generated\n // gensyms that should be literal symbols\n // TODO: maybe not the part move when literal elisps may\n // be generated, maybe they will need to be mark somehow\n return clear_gensyms(result, names);\n }\n rules = rules.cdr;\n }\n } catch (e) {\n e.message += ` in macro: ${macro.toString(true)}`;\n throw e;\n }\n throw new Error(`Invalid Syntax ${code.toString(true)}`);\n }, env);\n syntax.__code__ = macro;\n return syntax;\n }, `(syntax-rules () (pattern expression) ...)\n\n Base of Hygienic macro, it will return new syntax expander\n that works like lisp macros.`),\n // ------------------------------------------------------------------\n quote: doc(new Macro('quote', function(arg) {\n return quote(arg.car);\n }), `(quote expression)\n\n Macro that return single lips expression as data (it don't evaluate its\n argument). It will return list of pairs if put in front of lips code.\n And if put in fron of symbol it will return that symbol not value\n associated with that name.`),\n 'unquote-splicing': doc('unquote-splicing', function() {\n throw new Error(`You can't call \\`unquote-splicing\\` outside of quasiquote`);\n }, `(unquote-splicing code)\n\n Special form to be used in quasiquote macro, parser is processing special\n characters ,@ and create call to this pseudo function. It can be used\n to evalute expression inside and return the value without parenthesis.\n the value will be joined to the output list structure.`),\n 'unquote': doc('unquote', function() {\n throw new Error(`You can't call \\`unquote\\` outside of quasiquote`);\n }, `(unquote code)\n\n Special form to be used in quasiquote macro, parser is processing special\n characters , and create call to this pseudo function. It can be used\n to evalute expression inside and return the value, the output is inserted\n into list structure created by queasiquote.`),\n // ------------------------------------------------------------------\n quasiquote: Macro.defmacro('quasiquote', function(arg, env) {\n var { dynamic_scope, error } = env;\n var self = this;\n //var max_unquote = 1;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n // -----------------------------------------------------------------\n function is_struct(value) {\n return value instanceof Pair ||\n is_plain_object(value) ||\n Array.isArray(value);\n }\n // -----------------------------------------------------------------\n function resolve_pair(pair, fn, test = is_struct) {\n if (pair instanceof Pair) {\n var car = pair.car;\n var cdr = pair.cdr;\n if (test(car)) {\n car = fn(car);\n }\n if (test(cdr)) {\n cdr = fn(cdr);\n }\n if (is_promise(car) || is_promise(cdr)) {\n return promise_all([car, cdr]).then(([car, cdr]) => {\n return new Pair(car, cdr);\n });\n } else {\n return new Pair(car, cdr);\n }\n }\n return pair;\n }\n // -----------------------------------------------------------------\n function join(eval_pair, value) {\n if (eval_pair === nil && value === nil) {\n //return nil;\n }\n if (eval_pair instanceof Pair) {\n if (value !== nil) {\n eval_pair.append(value);\n }\n } else {\n eval_pair = new Pair(\n eval_pair,\n value\n );\n }\n return eval_pair;\n }\n // -----------------------------------------------------------------\n function unquoted_arr(arr) {\n return !!arr.filter(value => {\n return value instanceof Pair &&\n LSymbol.is(value.car, /^(unquote|unquote-splicing)$/);\n }).length;\n }\n // -----------------------------------------------------------------\n function quote_vector(arr, unquote_cnt, max_unq) {\n return arr.reduce((acc, x) => {\n if (!(x instanceof Pair)) {\n acc.push(x);\n return acc;\n }\n if (LSymbol.is(x.car, 'unquote-splicing')) {\n let result;\n if (unquote_cnt + 1 < max_unq) {\n result = recur(x.cdr, unquote_cnt + 1, max_unq);\n } else {\n result = evaluate(x.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n if (!(result instanceof Pair)) {\n throw new Error(`Expecting list ${type(x)} found`);\n }\n return acc.concat(result.to_array());\n }\n acc.push(recur(x, unquote_cnt, max_unq));\n return acc;\n }, []);\n }\n // -----------------------------------------------------------------\n function quote_object(object, unquote_cnt, max_unq) {\n const result = {};\n unquote_cnt++;\n Object.keys(object).forEach(key => {\n const value = object[key];\n if (value instanceof Pair) {\n if (LSymbol.is(value.car, 'unquote-splicing')) {\n throw new Error(\"You can't call `unquote-splicing` \" +\n \"inside object\");\n }\n let output;\n if (unquote_cnt < max_unq) {\n output = recur(value.cdr.car, unquote_cnt, max_unq);\n } else {\n output = evaluate(value.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n result[key] = output;\n } else {\n result[key] = value;\n }\n });\n if (Object.isFrozen(object)) {\n Object.freeze(result);\n }\n return result;\n }\n // -----------------------------------------------------------------\n function unquote_splice(pair, unquote_cnt, max_unq) {\n if (unquote_cnt < max_unq) {\n return new Pair(\n new Pair(\n pair.car.car,\n recur(pair.car.cdr, unquote_cnt, max_unq)\n ),\n nil\n );\n }\n var lists = [];\n return (function next(node) {\n var value = evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n });\n lists.push(value);\n if (node.cdr instanceof Pair) {\n return next(node.cdr);\n }\n return unpromise(lists, function(arr) {\n if (arr.some(x => !(x instanceof Pair))) {\n if (pair.cdr instanceof Pair &&\n LSymbol.is(pair.cdr.car, '.') &&\n pair.cdr.cdr instanceof Pair &&\n pair.cdr.cdr.cdr === nil) {\n return pair.cdr.cdr.car;\n }\n if (!(pair.cdr === nil || pair.cdr instanceof Pair)) {\n const msg = \"You can't splice atom inside list\";\n throw new Error(msg);\n }\n if (arr.length > 1) {\n const msg = \"You can't splice multiple atoms inside list\";\n throw new Error(msg);\n }\n if (!(pair.cdr instanceof Pair && arr[0] === nil)) {\n return arr[0];\n }\n }\n // don't create Cycles\n arr = arr.map(eval_pair => {\n if (splices.has(eval_pair)) {\n return eval_pair.clone();\n } else {\n splices.add(eval_pair);\n return eval_pair;\n }\n });\n const value = recur(pair.cdr, 0, 1);\n if (value === nil && arr[0] === nil) {\n return undefined;\n }\n return unpromise(value, value => {\n if (arr[0] === nil) {\n return value;\n }\n if (arr.length === 1) {\n return join(arr[0], value);\n }\n var result = arr.reduce((result, eval_pair) => {\n return join(result, eval_pair);\n });\n return join(result, value);\n });\n });\n })(pair.car.cdr);\n }\n // -----------------------------------------------------------------\n var splices = new Set();\n function recur(pair, unquote_cnt, max_unq) {\n if (pair instanceof Pair) {\n if (pair.car instanceof Pair) {\n if (LSymbol.is(pair.car.car, 'unquote-splicing')) {\n return unquote_splice(pair, unquote_cnt + 1, max_unq);\n }\n if (LSymbol.is(pair.car.car, 'unquote')) {\n // + 2 - one for unquote and one for unquote splicing\n if (unquote_cnt + 2 === max_unq &&\n pair.car.cdr instanceof Pair &&\n pair.car.cdr.car instanceof Pair &&\n LSymbol.is(pair.car.cdr.car.car, 'unquote-splicing')) {\n const rest = pair.car.cdr;\n return new Pair(\n new Pair(\n new LSymbol('unquote'),\n unquote_splice(rest, unquote_cnt + 2, max_unq)\n ),\n nil\n );\n } else if (pair.car.cdr instanceof Pair &&\n pair.car.cdr.cdr !== nil) {\n if (pair.car.cdr.car instanceof Pair) {\n // values inside unquote are lists\n const result = [];\n return (function recur(node) {\n if (node === nil) {\n return Pair.fromArray(result);\n }\n return unpromise(evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n }), function(next) {\n result.push(next);\n return recur(node.cdr);\n });\n })(pair.car.cdr);\n } else {\n // same as in guile if (unquote 1 2 3) it should be\n // spliced - scheme spec say it's unspecify but it\n // work like in CL\n return pair.car.cdr;\n }\n }\n }\n }\n if (LSymbol.is(pair.car, 'quasiquote')) {\n var cdr = recur(pair.cdr, unquote_cnt, max_unq + 1);\n return new Pair(pair.car, cdr);\n }\n if (LSymbol.is(pair.car, 'quote')) {\n return new Pair(\n pair.car,\n recur(pair.cdr, unquote_cnt, max_unq)\n );\n }\n if (LSymbol.is(pair.car, 'unquote')) {\n unquote_cnt++;\n if (unquote_cnt < max_unq) {\n return new Pair(\n new LSymbol('unquote'),\n recur(pair.cdr, unquote_cnt, max_unq)\n );\n }\n if (unquote_cnt > max_unq) {\n throw new Error(\"You can't call `unquote` outside \" +\n \"of quasiquote\");\n }\n if (pair.cdr instanceof Pair) {\n if (pair.cdr.cdr !== nil) {\n if (pair.cdr.car instanceof Pair) {\n // TODO: test if this part is needed\n // this part was duplicated in previous section\n // if (LSymbol.is(pair.car.car, 'unquote')) {\n // so this probably can be removed\n const result = [];\n // evaluate all values in unquote\n return (function recur(node) {\n if (node === nil) {\n return Pair.fromArray(result);\n }\n return unpromise(evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n }), function(next) {\n result.push(next);\n return recur(node.cdr);\n });\n })(pair.cdr);\n } else {\n return pair.cdr;\n }\n } else {\n return evaluate(pair.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n } else {\n return pair.cdr;\n }\n }\n return resolve_pair(pair, (pair) => {\n return recur(pair, unquote_cnt, max_unq);\n });\n } else if (is_plain_object(pair)) {\n return quote_object(pair, unquote_cnt, max_unq);\n } else if (pair instanceof Array) {\n return quote_vector(pair, unquote_cnt, max_unq);\n }\n return pair;\n }\n // -----------------------------------------------------------------\n function clear(node) {\n if (node instanceof Pair) {\n delete node[__data__];\n if (!node.haveCycles('car')) {\n clear(node.car);\n }\n if (!node.haveCycles('cdr')) {\n clear(node.cdr);\n }\n }\n }\n // -----------------------------------------------------------------\n if (is_plain_object(arg.car) && !unquoted_arr(Object.values(arg.car))) {\n return quote(arg.car);\n }\n if (Array.isArray(arg.car) && !unquoted_arr(arg.car)) {\n return quote(arg.car);\n }\n if (arg.car instanceof Pair &&\n !arg.car.find('unquote') &&\n !arg.car.find('unquote-splicing') &&\n !arg.car.find('quasiquote')) {\n return quote(arg.car);\n }\n var x = recur(arg.car, 0, 1);\n return unpromise(x, value => {\n // clear nested data for tests\n clear(value);\n return quote(value);\n });\n }, `(quasiquote list ,value ,@value)\n\n Similar macro to \\`quote\\` but inside it you can use special\n expressions unquote abbreviated to , that will evaluate expresion inside\n and return its value or unquote-splicing abbreviated to ,@ that will\n evaluate expression but return value without parenthesis (it will join)\n the list with its value. Best used with macros but it can be used outside`),\n // ------------------------------------------------------------------\n clone: doc('clone', function clone(list) {\n typecheck('clone', list, 'pair');\n return list.clone();\n }, `(clone list)\n\n Function return clone of the list.`),\n // ------------------------------------------------------------------\n append: doc('append', function append(...items) {\n items = items.map(item => {\n if (item instanceof Pair) {\n return item.clone();\n }\n return item;\n });\n return global_env.get('append!').call(this, ...items);\n }, `(append item ...)\n\n Function will create new list with eac argument appended to the end.\n It will always return new list and not modify it's arguments.`),\n // ------------------------------------------------------------------\n 'append!': doc('append!', function(...items) {\n var is_list = global_env.get('list?');\n return items.reduce((acc, item) => {\n typecheck('append!', acc, ['nil', 'pair']);\n if ((item instanceof Pair || item === nil) && !is_list(item)) {\n throw new Error('append!: Invalid argument, value is not a list');\n }\n if (is_null(item)) {\n return acc;\n }\n if (acc === nil) {\n if (item === nil) {\n return nil;\n }\n return item;\n }\n return acc.append(item);\n }, nil);\n }, `(append! arg1 ...)\n\n Destructive version of append, it modify the list in place. It return\n new list where each argument is appened to the end. It may modify\n lists added as arguments.`),\n // ------------------------------------------------------------------\n reverse: doc('reverse', function reverse(arg) {\n typecheck('reverse', arg, ['array', 'pair', 'nil']);\n if (arg === nil) {\n return nil;\n }\n if (arg instanceof Pair) {\n var arr = global_env.get('list->array')(arg).reverse();\n return global_env.get('array->list')(arr);\n } else if (!(arg instanceof Array)) {\n throw new Error(typeErrorMessage('reverse', type(arg), 'array or pair'));\n } else {\n return arg.reverse();\n }\n }, `(reverse list)\n\n Function will reverse the list or array. If value is not a list\n or array it will throw exception.`),\n // ------------------------------------------------------------------\n nth: doc('nth', function nth(index, obj) {\n typecheck('nth', index, 'number');\n typecheck('nth', obj, ['array', 'pair']);\n if (obj instanceof Pair) {\n var node = obj;\n var count = 0;\n while (count < index) {\n if (!node.cdr || node.cdr === nil || node.haveCycles('cdr')) {\n return nil;\n }\n node = node.cdr;\n count++;\n }\n return node.car;\n } else if (obj instanceof Array) {\n return obj[index];\n } else {\n throw new Error(typeErrorMessage('nth', type(obj), 'array or pair', 2));\n }\n }, `(nth index obj)\n\n Function return nth element of the list or array. If used with different\n value it will throw exception`),\n // ------------------------------------------------------------------\n list: doc('list', function list(...args) {\n return args.reverse().reduce((list, item) => new Pair(item, list), nil);\n }, `(list . args)\n\n Function create new list out of its arguments.`),\n // ------------------------------------------------------------------\n substring: doc('substring', function substring(string, start, end) {\n typecheck('substring', string, 'string');\n typecheck('substring', start, 'number');\n typecheck('substring', end, ['number', 'undefined']);\n return string.substring(start.valueOf(), end && end.valueOf());\n }, `(substring string start end)\n\n Function return part of the string starting at start ending with end.`),\n // ------------------------------------------------------------------\n concat: doc('concat', function concat(...args) {\n args.forEach((arg, i) => typecheck('concat', arg, 'string', i + 1));\n return args.join('');\n }, `(concat . strings)\n\n Function create new string by joining its arguments`),\n // ------------------------------------------------------------------\n join: doc('join', function join(separator, list) {\n typecheck('join', separator, 'string');\n typecheck('join', list, ['pair', 'nil']);\n return global_env.get('list->array')(list).join(separator);\n }, `(join separator list)\n\n Function return string by joining elements of the list`),\n // ------------------------------------------------------------------\n split: doc('split', function split(separator, string) {\n typecheck('split', separator, ['regex', 'string']);\n typecheck('split', string, 'string');\n return global_env.get('array->list')(string.split(separator));\n }, `(split separator string)\n\n Function create list by splitting string by separatar that can\n be a string or regular expression.`),\n // ------------------------------------------------------------------\n replace: doc('replace', function replace(pattern, replacement, string) {\n typecheck('replace', pattern, ['regex', 'string']);\n typecheck('replace', replacement, ['string', 'function']);\n typecheck('replace', string, 'string');\n return string.replace(pattern, replacement);\n }, `(replace pattern replacement string)\n\n Function change pattern to replacement inside string. Pattern can be string\n or regex and replacement can be function or string.`),\n // ------------------------------------------------------------------\n match: doc('match', function match(pattern, string) {\n typecheck('match', pattern, ['regex', 'string']);\n typecheck('match', string, 'string');\n var m = string.match(pattern);\n return m ? global_env.get('array->list')(m) : false;\n }, `(match pattern string)\n\n function return match object from JavaScript as list or #f if not match.`),\n // ------------------------------------------------------------------\n search: doc('search', function search(pattern, string) {\n typecheck('search', pattern, ['regex', 'string']);\n typecheck('search', string, 'string');\n return string.search(pattern);\n }, `(search pattern string)\n\n Function return first found index of the pattern inside a string`),\n // ------------------------------------------------------------------\n repr: doc('repr', function repr(obj, quote) {\n return toString(obj, quote);\n }, `(repr obj)\n\n Function return string LIPS representation of an object as string.`),\n // ------------------------------------------------------------------\n 'escape-regex': doc('escape-regex', function(string) {\n typecheck('escape-regex', string, 'string');\n return escape_regex(string.valueOf());\n }, `(escape-regex string)\n\n Function return new string where all special operators used in regex,\n are escaped with slash so they can be used in RegExp constructor\n to match literal string`),\n // ------------------------------------------------------------------\n env: doc('env', function env(env) {\n env = env || this;\n var names = Object.keys(env.__env__).map(LSymbol);\n // TODO: get symbols\n var result;\n if (names.length) {\n result = Pair.fromArray(names);\n } else {\n result = nil;\n }\n if (env.__parent__ instanceof Environment) {\n return global_env.get('env')(env.__parent__).append(result);\n }\n return result;\n }, `(env)\n (env obj)\n\n Function return list of values (functions, macros and variables)\n inside environment and it's parents.`),\n // ------------------------------------------------------------------\n 'new': doc('new', function(obj, ...args) {\n var instance = new (unbind(obj))(...args.map(x => unbox(x)));\n return instance;\n }, `(new obj . args)\n\n Function create new JavaScript instance of an object.`),\n // ------------------------------------------------------------------\n 'typecheck': doc(\n typecheck,\n `(typecheck label value type [position])\n\n Function check type and throw exception if type don't match.\n Type can be string or list of strings. Position optional argument\n is used to created proper error message.`),\n // ------------------------------------------------------------------\n 'unset-special!': doc('unset-special!', function(symbol) {\n typecheck('remove-special!', symbol, 'string');\n delete specials.remove(symbol.valueOf());\n }, `(unset-special! name)\n\n Function remove special symbol from parser. Added by \\`set-special!\\`,\n name must be a string.`),\n // ------------------------------------------------------------------\n 'set-special!': doc('set-special!', function(seq, name, type = specials.LITERAL) {\n typecheck('set-special!', seq, 'string', 1);\n typecheck('set-special!', name, 'symbol', 2);\n specials.append(seq.valueOf(), name, type);\n }, `(set-special! symbol name [type])\n\n Add special symbol to the list of transforming operators by the parser.\n e.g.: \\`(add-special! \"#\" 'x)\\` will allow to use \\`#(1 2 3)\\` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional and it can be constant value\n lips.specials.SPLICE if this constant is used it will transform\n \\`#(1 2 3)\\` into (x 1 2 3) that is required by # that define vectors.`),\n // ------------------------------------------------------------------\n 'get': get,\n '.': get,\n // ------------------------------------------------------------------\n 'unbind': doc(\n unbind,\n `(unbind fn)\n\n Function remove bidning from function so you can get props from it.`),\n // ------------------------------------------------------------------\n type: doc(\n type,\n `(type object)\n\n Function return type of an object as string.`),\n // ------------------------------------------------------------------\n 'debugger': doc('debugger', function() {\n /* eslint-disable */\n debugger;\n /* eslint-enable */\n }, `(debugger)\n\n Function stop JavaScript code in debugger.`),\n // ------------------------------------------------------------------\n 'in': doc('in', function(a, b) {\n if (a instanceof LSymbol ||\n a instanceof LString ||\n a instanceof LNumber) {\n a = a.valueOf();\n }\n return a in unbox(b);\n }, `(in key value)\n\n Function use is in operator to check if value is in object.`),\n // ------------------------------------------------------------------\n 'instanceof': doc('instanceof', function(type, obj) {\n return obj instanceof unbind(type);\n }, `(instanceof type obj)\n\n Function check of object is instance of object.`),\n // ------------------------------------------------------------------\n 'prototype?': doc(\n 'prototype?',\n is_prototype,\n `(prototype? obj)\n\n Function check if value is JavaScript Object prototype.`),\n // ------------------------------------------------------------------\n 'macro?': doc('macro?', function(obj) {\n return obj instanceof Macro;\n }, `(macro? expression)\n\n Function check if value is a macro.`),\n // ------------------------------------------------------------------\n 'function?': doc(\n 'function?',\n is_function,\n `(function? expression)\n\n Function check if value is a function.`),\n // ------------------------------------------------------------------\n 'real?': doc('real?', function(value) {\n if (type(value) !== 'number') {\n return false;\n }\n if (value instanceof LNumber) {\n return value.isFloat();\n }\n return LNumber.isFloat(value);\n }, `(real? number)\n\n Function check if value is real number.`),\n // ------------------------------------------------------------------\n 'number?': doc('number?', function(x) {\n return Number.isNaN(x) || LNumber.isNumber(x);\n }, `(number? expression)\n\n Function check if value is a number or NaN value.`),\n // ------------------------------------------------------------------\n 'string?': doc('string?', function(obj) {\n return LString.isString(obj);\n }, `(string? expression)\n\n Function check if value is a string.`),\n // ------------------------------------------------------------------\n 'pair?': doc('pair?', function(obj) {\n return obj instanceof Pair;\n }, `(pair? expression)\n\n Function check if value is a pair or list structure.`),\n // ------------------------------------------------------------------\n 'regex?': doc('regex?', function(obj) {\n return obj instanceof RegExp;\n }, `(regex? expression)\n\n Function check if value is regular expression.`),\n // ------------------------------------------------------------------\n 'null?': doc('null?', function(obj) {\n return is_null(obj);\n }, `(null? expression)\n\n Function check if value is nulish.`),\n // ------------------------------------------------------------------\n 'boolean?': doc('boolean?', function(obj) {\n return typeof obj === 'boolean';\n }, `(boolean? expression)\n\n Function check if value is boolean.`),\n // ------------------------------------------------------------------\n 'symbol?': doc('symbol?', function(obj) {\n return obj instanceof LSymbol;\n }, `(symbol? expression)\n\n Function check if value is LIPS symbol`),\n // ------------------------------------------------------------------\n 'array?': doc('array?', function(obj) {\n return obj instanceof Array;\n }, `(array? expression)\n\n Function check if value is an arrray.`),\n // ------------------------------------------------------------------\n 'object?': doc('object?', function(obj) {\n return obj !== nil && obj !== null &&\n !(obj instanceof LCharacter) &&\n !(obj instanceof RegExp) &&\n !(obj instanceof LString) &&\n !(obj instanceof Pair) &&\n !(obj instanceof LNumber) &&\n typeof obj === 'object' &&\n !(obj instanceof Array);\n }, `(object? expression)\n\n Function check if value is an plain object.`),\n // ------------------------------------------------------------------\n flatten: doc('flatten', function flatten(list) {\n typecheck('flatten', list, 'pair');\n return list.flatten();\n }, `(flatten list)\n\n Return shallow list from tree structure (pairs).`),\n // ------------------------------------------------------------------\n 'array->list': doc('array->list', function(array) {\n typecheck('array->list', array, 'array');\n return Pair.fromArray(array);\n }, `(array->list array)\n\n Function convert JavaScript array to LIPS list.`),\n // ------------------------------------------------------------------\n 'tree->array': doc(\n 'tree->array',\n to_array('tree->array', true),\n `(tree->array list)\n\n Function convert LIPS list structure into JavaScript array.`),\n // ------------------------------------------------------------------\n 'list->array': doc(\n 'list->array',\n to_array('list->array'),\n `(list->array list)\n\n Function convert LIPS list into JavaScript array.`),\n // ------------------------------------------------------------------\n apply: doc('apply', function apply(fn, ...args) {\n typecheck('apply', fn, 'function', 1);\n var last = args.pop();\n typecheck('apply', last, ['pair', 'nil'], args.length + 2);\n args = args.concat(global_env.get('list->array').call(this, last));\n return fn.apply(this, prepare_fn_args(fn, args));\n }, `(apply fn list)\n\n Function that call function with list of arguments.`),\n // ------------------------------------------------------------------\n length: doc('length', function length(obj) {\n if (!obj || obj === nil) {\n return 0;\n }\n if (obj instanceof Pair) {\n return obj.length();\n }\n if (\"length\" in obj) {\n return obj.length;\n }\n }, `(length expression)\n\n Function return length of the object, the object can be list\n or any object that have length property.`),\n // ------------------------------------------------------------------\n 'string->number': doc('string->number', function(arg, radix = 10) {\n typecheck('string->number', arg, 'string', 1);\n typecheck('string->number', radix, 'number', 2);\n arg = arg.valueOf();\n radix = radix.valueOf();\n if (arg.match(rational_bare_re) || arg.match(rational_re)) {\n return parse_rational(arg, radix);\n } else if (arg.match(complex_bare_re) || arg.match(complex_re)) {\n return parse_complex(arg, radix);\n } else {\n const valid_bare = (radix === 10 && !arg.match(/e/i)) || radix === 16;\n if (arg.match(int_bare_re) && valid_bare || arg.match(int_re)) {\n return parse_integer(arg, radix);\n }\n if (arg.match(float_re)) {\n return parse_float(arg);\n }\n }\n return false;\n }, `(string->number number [radix])\n\n Function convert string to number.`),\n // ------------------------------------------------------------------\n 'try': doc(new Macro('try', function(code, { dynamic_scope, error }) {\n return new Promise((resolve, reject) => {\n var catch_clause, finally_clause;\n if (LSymbol.is(code.cdr.car.car, 'catch')) {\n catch_clause = code.cdr.car;\n if (code.cdr.cdr instanceof Pair &&\n LSymbol.is(code.cdr.cdr.car.car, 'finally')) {\n finally_clause = code.cdr.cdr.car;\n }\n } else if (LSymbol.is(code.cdr.car.car, 'finally')) {\n finally_clause = code.cdr.car;\n }\n if (!(finally_clause || catch_clause)) {\n throw new Error('try: invalid syntax');\n }\n var next = resolve;\n if (finally_clause) {\n next = function(result, cont) {\n // prevent infinite loop when finally throw exception\n next = reject;\n unpromise(evaluate(new Pair(\n new LSymbol('begin'),\n finally_clause.cdr\n ), args), function() {\n cont(result);\n });\n };\n }\n var args = {\n env: this,\n error: (e) => {\n var env = this.inherit('try');\n if (catch_clause) {\n env.set(catch_clause.cdr.car.car, e);\n var args = {\n env,\n error\n };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n unpromise(evaluate(new Pair(\n new LSymbol('begin'),\n catch_clause.cdr.cdr\n ), args), function(result) {\n next(result, resolve);\n });\n } else {\n next(e, error);\n }\n }\n };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n var result = evaluate(code.car, args);\n if (is_promise(result)) {\n result.then(result => {\n next(result, resolve);\n }).catch(args.error);\n } else {\n next(result, resolve);\n }\n });\n }), `(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro execute user code and catch exception. If catch is provided\n it's executed when expression expr throw error. If finally is provide\n it's always executed at the end.`),\n // ------------------------------------------------------------------\n 'raise': doc('raise', function(obj) {\n throw obj;\n }, `(raise obj)\n\n Throws new exception with given object.`),\n 'throw': doc('throw', function(message) {\n throw new Error(message);\n }, `(throw string)\n\n Throws new expection.`),\n // ------------------------------------------------------------------\n find: doc('find', function find(arg, list) {\n typecheck('find', arg, ['regex', 'function']);\n typecheck('find', list, ['pair', 'nil']);\n if (is_null(list)) {\n return nil;\n }\n var fn = matcher('find', arg);\n return unpromise(fn(list.car), function(value) {\n if (value && value !== nil) {\n return list.car;\n }\n return find(arg, list.cdr);\n });\n }, `(find fn list)\n (find regex list)\n\n Higher order Function find first value for which function return true.\n If called with regex it will create matcher function.`),\n // ------------------------------------------------------------------\n 'for-each': doc('for-each', function(fn, ...lists) {\n typecheck('for-each', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('for-each', arg, ['pair', 'nil'], i + 1);\n });\n // we need to use call(this because babel transpile this code into:\n // var ret = map.apply(void 0, [fn].concat(lists));\n // it don't work with weakBind\n var ret = global_env.get('map').call(this, fn, ...lists);\n if (is_promise(ret)) {\n return ret.then(() => {});\n }\n }, `(for-each fn . lists)\n\n Higher order function that call function \\`fn\\` by for each\n value of the argument. If you provide more then one list as argument\n it will take each value from each list and call \\`fn\\` function\n with that many argument as number of list arguments.`),\n // ------------------------------------------------------------------\n map: doc('map', function map(fn, ...lists) {\n typecheck('map', fn, 'function');\n var is_list = global_env.get('list?');\n lists.forEach((arg, i) => {\n typecheck('map', arg, ['pair', 'nil'], i + 1);\n // detect cycles\n if (arg instanceof Pair && !is_list.call(this, arg)) {\n throw new Error(`map: argument ${i + 1} is not a list`);\n }\n });\n if (lists.length === 0) {\n return nil;\n }\n if (lists.some(x => x === nil)) {\n return nil;\n }\n var args = lists.map(l => l.car);\n var parent_frame = this.get('parent.frame');\n var env = this.newFrame(fn, args);\n env.set('parent.frame', parent_frame);\n return unpromise(fn.call(env, ...args), (head) => {\n return unpromise(map.call(this, fn, ...lists.map(l => l.cdr)), (rest) => {\n return new Pair(head, rest);\n });\n });\n }, `(map fn . lists)\n\n Higher order function that call function \\`fn\\` by for each\n value of the argument. If you provide more then one list as argument\n it will take each value from each list and call \\`fn\\` function\n with that many argument as number of list arguments. The return\n values of the function call is acumulated in result list and\n returned by the call to map.`),\n // ------------------------------------------------------------------\n 'list?': doc('list?', function(obj) {\n var node = obj;\n while (true) {\n if (node === nil) {\n return true;\n }\n if (!(node instanceof Pair)) {\n return false;\n }\n if (node.haveCycles('cdr')) {\n return false;\n }\n node = node.cdr;\n }\n }, `(list? obj)\n\n Function test if value is proper linked list structure.\n The car of each pair can be any value. It return false on cycles.\"`),\n // ------------------------------------------------------------------\n some: doc('some', function some(fn, list) {\n typecheck('some', fn, 'function');\n typecheck('some', list, ['pair', 'nil']);\n if (is_null(list)) {\n return false;\n } else {\n return unpromise(fn(list.car), (value) => {\n return value || some(fn, list.cdr);\n });\n }\n }, `(some fn list)\n\n Higher order function that call argument on each element of the list.\n It stops when function fn return true for a value if so it will\n return true. If none of the values give true, the function return false`),\n // ------------------------------------------------------------------\n fold: doc('fold', fold('fold', function(fold, fn, init, ...lists) {\n typecheck('fold', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('fold', arg, ['pair', 'nil'], i + 1);\n });\n if (lists.some(x => x === nil)) {\n return init;\n }\n const value = fold.call(this, fn, init, ...lists.map(l => l.cdr));\n return unpromise(value, value => {\n return fn(...lists.map(l => l.car), value);\n });\n }), `(fold fn init . lists)\n\n Function fold is reverse of the reduce. it call function \\`fn\\`\n on each elements of the list and return single value.\n e.g. it call (fn a1 b1 (fn a2 b2 (fn a3 b3 '())))\n for: (fold fn '() alist blist)`),\n // ------------------------------------------------------------------\n pluck: doc('pluck', function pluck(...keys) {\n return function(obj) {\n keys = keys.map(x => x instanceof LSymbol ? x.__name__ : x);\n if (keys.length === 0) {\n return nil;\n } else if (keys.length === 1) {\n const [key] = keys;\n return obj[key];\n }\n var result = {};\n keys.forEach((key) => {\n result[key] = obj[key];\n });\n return result;\n };\n }, `(pluck . string)\n\n If called with single string it will return function that will return\n key from object. If called with more then one argument function will\n return new object by taking all properties from given object.`),\n // ------------------------------------------------------------------\n reduce: doc('reduce', fold('reduce', function(reduce, fn, init, ...lists) {\n typecheck('reduce', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('reduce', arg, ['pair', 'nil'], i + 1);\n });\n if (lists.some(x => x === nil)) {\n return init;\n }\n return unpromise(fn(...lists.map(l => l.car), init), (value) => {\n return reduce.call(this, fn, value, ...lists.map(l => l.cdr));\n });\n }), `(reduce fn init list . lists)\n\n Higher order function take each element of the list and call\n the function with result of previous call or init and next element\n on the list until each element is processed and return single value\n as result of last call to \\`fn\\` function.\n e.g. it call (fn a3 b3 (fn a2 b2 (fn a1 b1 init)))\n for (reduce fn init alist blist)`),\n // ------------------------------------------------------------------\n filter: doc('filter', function filter(arg, list) {\n typecheck('filter', arg, ['regex', 'function']);\n typecheck('filter', list, ['pair', 'nil']);\n var array = global_env.get('list->array')(list);\n var result = [];\n var fn = matcher('filter', arg);\n return (function loop(i) {\n function next(value) {\n if (value && value !== nil) {\n result.push(item);\n }\n return loop(++i);\n }\n if (i === array.length) {\n return Pair.fromArray(result);\n }\n var item = array[i];\n return unpromise(fn(item), next);\n })(0);\n }, `(filter fn list)\n (filter regex list)\n\n Higher order function that call \\`fn\\` for each element of the list\n and return list for only those elements for which funtion return\n true value. If called with regex it will create matcher function.`),\n // ------------------------------------------------------------------\n compose: doc(\n compose,\n `(compose . fns)\n\n Higher order function and create new function that apply all functions\n From right to left and return it's value. Reverse of compose.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 3)\n 11\n `),\n pipe: doc(\n pipe,\n `(pipe . fns)\n\n Higher order function and create new function that apply all functions\n From left to right and return it's value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 3)\n 15`),\n curry: doc(\n curry,\n `(curry fn . args)\n\n Higher order function that create curried version of the function.\n The result function will have parially applied arguments and it\n will keep returning functions until all arguments are added\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))`),\n // ------------------------------------------------------------------\n // Numbers\n // ------------------------------------------------------------------\n gcd: doc('gcd', function gcd(...args) {\n typecheck_args('lcm', args, 'number');\n return args.reduce(function(result, item) {\n return result.gcd(item);\n });\n }, `(gcd n1 n2 ...)\n\n Function return the greatest common divisor of their arguments.`),\n // ------------------------------------------------------------------\n lcm: doc('lcm', function lcm(...args) {\n typecheck_args('lcm', args, 'number');\n // ref: https://rosettacode.org/wiki/Least_common_multiple#JavaScript\n var n = args.length, a = abs(args[0]);\n for (var i = 1; i < n; i++) {\n var b = abs(args[i]), c = a;\n while (a && b) {\n a > b ? a %= b : b %= a;\n }\n a = abs(c * args[i]) / (a + b);\n }\n return LNumber(a);\n }, `(lcm n1 n2 ...)\n\n Function return the least common multiple of their arguments.`),\n // ------------------------------------------------------------------\n 'odd?': doc('odd?', single_math_op(function(num) {\n return LNumber(num).isOdd();\n }), `(odd? number)\n\n Function check if number os odd.`),\n // ------------------------------------------------------------------\n 'even?': doc('even?', single_math_op(function(num) {\n return LNumber(num).isEven();\n }), `(even? number)\n\n Function check if number is even.`),\n // ------------------------------------------------------------------\n // math functions\n '*': doc('*', reduce_math_op(function(a, b) {\n return LNumber(a).mul(b);\n }, LNumber(1)), `(* . numbers)\n\n Multiplicate all numbers passed as arguments. If single value is passed\n it will return that value.`),\n // ------------------------------------------------------------------\n '+': doc('+', reduce_math_op(function(a, b) {\n return LNumber(a).add(b);\n }, LNumber(0)), `(+ . numbers)\n\n Sum all numbers passed as arguments. If single value is passed it will\n return that value.`),\n // ------------------------------------------------------------------\n '-': doc('-', function(...args) {\n if (args.length === 0) {\n throw new Error('-: procedure require at least one argument');\n }\n typecheck_args('-', args, 'number');\n if (args.length === 1) {\n return LNumber(args[0]).sub();\n }\n if (args.length) {\n return args.reduce(binary_math_op(function(a, b) {\n return LNumber(a).sub(b);\n }));\n }\n }, `(- n1 n2 ...)\n (- n)\n\n Substract number passed as argument. If only one argument is passed\n it will negate the value.`),\n // ------------------------------------------------------------------\n '/': doc('/', function(...args) {\n if (args.length === 0) {\n throw new Error('/: procedure require at least one argument');\n }\n typecheck_args('/', args, 'number');\n if (args.length === 1) {\n return LNumber(1).div(args[0]);\n }\n return args.reduce(binary_math_op(function(a, b) {\n return LNumber(a).div(b);\n }));\n }, `(/ n1 n2 ...)\n (/ n)\n\n Divide number passed as arguments one by one. If single argument\n is passed it will calculate (/ 1 n1).`),\n // ------------------------------------------------------------------\n abs: doc('abs', single_math_op(function(n) {\n return LNumber(n).abs();\n }), `(abs number)\n\n Function create absolute value from number.`),\n // ------------------------------------------------------------------\n truncate: doc('truncate', function(n) {\n typecheck('truncate', n, 'number');\n if (LNumber.isFloat(n)) {\n if (n instanceof LNumber) {\n n = n.valueOf();\n }\n return LFloat(truncate(n));\n }\n return n;\n }, `(truncate n)\n\n Function return integer value from real number.`),\n // ------------------------------------------------------------------\n sqrt: doc('sqrt', single_math_op(function(n) {\n return LNumber(n).sqrt();\n }), `(sqrt number)\n\n Function return square root of the number.`),\n // ------------------------------------------------------------------\n '**': doc('**', binary_math_op(function(a, b) {\n a = LNumber(a);\n b = LNumber(b);\n if (b.cmp(0) === -1) {\n return LFloat(1).div(a).pow(b.sub());\n }\n return a.pow(b);\n }), `(** a b)\n\n Function calculate number a to to the power of b.`),\n // ------------------------------------------------------------------\n '1+': doc('1+', single_math_op(function(number) {\n return LNumber(number).add(1);\n }), `(1+ number)\n\n Function add 1 to the number and return result.`),\n // ------------------------------------------------------------------\n '1-': doc(single_math_op(function(number) {\n return LNumber(number).sub(1);\n }), `(1- number)\n\n Function substract 1 from the number and return result.`),\n // ------------------------------------------------------------------\n '%': doc('%', function(a, b) {\n typecheck_args('%', [a, b], 'number');\n return LNumber(a).rem(b);\n }, `(% n1 n2)\n\n Function get reminder of it's arguments.`),\n // ------------------------------------------------------------------\n // Booleans\n '==': doc('==', function(...args) {\n typecheck_args('==', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === 0, args);\n }, `(== x1 x2 ...)\n\n Function compare its numerical arguments and check if they are equal`),\n // ------------------------------------------------------------------\n '>': doc('>', function(...args) {\n typecheck_args('>', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === 1, args);\n }, `(> x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically increasing`),\n // ------------------------------------------------------------------\n '<': doc('<', function(...args) {\n typecheck_args('<', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === -1, args);\n }, `(< x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically decreasing`),\n // ------------------------------------------------------------------\n '<=': doc('<=', function(...args) {\n typecheck_args('<=', args, 'number');\n return seq_compare((a, b) => [0, -1].includes(LNumber(a).cmp(b)), args);\n }, `(<= x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically nonincreasing`),\n // ------------------------------------------------------------------\n '>=': doc('>=', function(...args) {\n typecheck_args('>=', args, 'number');\n return seq_compare((a, b) => [0, 1].includes(LNumber(a).cmp(b)), args);\n }, `(>= x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically nondecreasing`),\n // ------------------------------------------------------------------\n 'eq?': doc(\n 'eq?',\n equal,\n `(eq? a b)\n\n Function compare two values if they are identical.`),\n // ------------------------------------------------------------------\n or: doc(new Macro('or', function(code, { dynamic_scope, error }) {\n var args = global_env.get('list->array')(code);\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n if (!args.length) {\n return false;\n }\n var result;\n return (function loop() {\n function next(value) {\n result = value;\n if (result !== false) {\n return result;\n } else {\n return loop();\n }\n }\n if (!args.length) {\n if (result !== false) {\n return result;\n } else {\n return false;\n }\n } else {\n var arg = args.shift();\n var value = evaluate(arg, { env: self, dynamic_scope, error });\n return unpromise(value, next);\n }\n })();\n }), `(or . expressions)\n\n Macro execute the values one by one and return the one that is truthy value.\n If there are no expression that evaluate to true it return false.`),\n // ------------------------------------------------------------------\n and: doc(new Macro('and', function(code, { dynamic_scope, error } = {}) {\n var args = global_env.get('list->array')(code);\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n if (!args.length) {\n return true;\n }\n var result;\n return (function loop() {\n function next(value) {\n result = value;\n if (result === false) {\n return false;\n } else {\n return loop();\n }\n }\n if (!args.length) {\n if (result !== false) {\n return result;\n } else {\n return false;\n }\n } else {\n var arg = args.shift();\n var value = evaluate(arg, { env: self, dynamic_scope, error });\n return unpromise(value, next);\n }\n })();\n }), `(and . expressions)\n\n Macro evalute each expression in sequence if any value return false it will\n return false. If each value return true it will return the last value.\n If it's called without arguments it will return true.`),\n // bit operations\n '|': doc('|', function(a, b) {\n return LNumber(a).or(b);\n }, `(| a b)\n\n Function calculate or bit operation.`),\n '&': doc('&', function(a, b) {\n return LNumber(a).and(b);\n }, `(& a b)\n\n Function calculate and bit operation.`),\n '~': doc('~', function(a) {\n return LNumber(a).neg();\n }, `(~ number)\n\n Function negate the value.`),\n '>>': doc('>>', function(a, b) {\n return LNumber(a).shr(b);\n }, `(>> a b)\n\n Function right shit the value a by value b.`),\n '<<': doc('<<', function(a, b) {\n return LNumber(a).shl(b);\n }, `(<< a b)\n\n Function left shit the value a by value b.`),\n not: doc('not', function not(value) {\n if (is_null(value)) {\n return true;\n }\n return !value;\n }, `(not object)\n\n Function return negation of the argument.`)\n}, undefined, 'global');\nvar user_env = global_env.inherit('user-env');\n// -------------------------------------------------------------------------\nfunction set_interaction_env(interaction, internal) {\n interaction.constant('**internal-env**', internal);\n interaction.doc(\n '**internal-env**',\n `**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are internal type\n of variables that can't be redefined, defining variable with same name\n will throw an error.`\n );\n global_env.set('**interaction-environment**', interaction);\n}\n// -------------------------------------------------------------------------\nset_interaction_env(user_env, internal_env);\nglobal_env.doc(\n '**interaction-environment**',\n `**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contain references to stdin, stdout and stderr.`\n);\n// -------------------------------------------------------------------------\n(function() {\n var map = { ceil: 'ceiling' };\n ['floor', 'round', 'ceil'].forEach(fn => {\n var name = map[fn] ? map[fn] : fn;\n global_env.set(name, doc(name, function(value) {\n typecheck(name, value, 'number');\n if (value instanceof LNumber) {\n return value[fn]();\n }\n }, `(${name} number)\n\n Function calculate ${name} of a number.`));\n });\n})();\n// -------------------------------------------------------------------------\n// ref: https://stackoverflow.com/a/4331218/387194\nfunction allPossibleCases(arr) {\n if (arr.length === 1) {\n return arr[0];\n } else {\n var result = [];\n // recur with the rest of array\n var allCasesOfRest = allPossibleCases(arr.slice(1));\n for (var i = 0; i < allCasesOfRest.length; i++) {\n for (var j = 0; j < arr[0].length; j++) {\n result.push(arr[0][j] + allCasesOfRest[i]);\n }\n }\n return result;\n }\n}\n\n// -------------------------------------------------------------------------\nfunction combinations(input, start, end) {\n var result = [];\n for (var i = start; i <= end; ++i) {\n var input_arr = [];\n for (var j = 0; j < i; ++j) {\n input_arr.push(input);\n }\n result = result.concat(allPossibleCases(input_arr));\n }\n return result;\n}\n\n// -------------------------------------------------------------------------\n// cadr caddr cadadr etc.\ncombinations(['d', 'a'], 2, 5).forEach(spec => {\n const s = spec.split('');\n const chars = s.slice().reverse();\n const code = s.map(c => `(c${c}r`).join(' ') + ' arg' + ')'.repeat(s.length);\n const name = 'c' + spec + 'r';\n global_env.set(name, doc(name, function(arg) {\n return chars.reduce(function(list, type) {\n typecheck(name, list, 'pair');\n if (type === 'a') {\n return list.car;\n } else {\n return list.cdr;\n }\n }, arg);\n }, `(${name} arg)\n\n Function calculate ${code}`));\n});\n// -----------------------------------------------------------------------------\nfunction reversseFind(dir, fn) {\n var parts = dir.split(path.sep).filter(Boolean);\n for (var i = parts.length; i--;) {\n var p = path.join('/', ...parts.slice(0, i + 1));\n if (fn(p)) {\n return p;\n }\n }\n}\n\n// -----------------------------------------------------------------------------\nfunction nodeModuleFind(dir) {\n return reversseFind(dir, function(dir) {\n return fs.existsSync(path.join(dir, 'node_modules'));\n });\n}\n\n// -------------------------------------------------------------------------\nfunction is_node() {\n return typeof global !== 'undefined' && global.global === global;\n}\n\n// -------------------------------------------------------------------------\nasync function node_specific() {\n const { createRequire } = await import('module');\n nodeRequire = createRequire(import.meta.url);\n fs = await import('fs');\n path = await import('path');\n global_env.set('global', global);\n global_env.set('self', global);\n global_env.set('window', undefined);\n const moduleURL = new URL(import.meta.url);\n const __dirname = path.dirname(moduleURL.pathname);\n const __filename = path.basename(moduleURL.pathname);\n global_env.set('__dirname', __dirname);\n global_env.set('__filename', __filename);\n // ---------------------------------------------------------------------\n global_env.set('require.resolve', doc('require.resolve', function(path) {\n typecheck('require.resolve', path, 'string');\n var name = path.valueOf();\n return nodeRequire.resolve(name);\n }, `(require.resolve path)\n\n Return path relative the current module.`));\n // ---------------------------------------------------------------------\n global_env.set('require', doc('require', function(module) {\n typecheck('require', module, 'string');\n module = module.valueOf();\n var root = process.cwd();\n var value;\n try {\n if (module.match(/^\\s*\\./)) {\n value = nodeRequire(path.join(root, module));\n } else {\n var dir = nodeModuleFind(root);\n if (dir) {\n value = nodeRequire(path.join(dir, 'node_modules', module));\n } else {\n value = nodeRequire(module);\n }\n }\n } catch (e) {\n value = nodeRequire(module);\n }\n return patch_value(value, global);\n }, `(require module)\n\n Function to be used inside Node.js to import the module.`));\n}\n// -------------------------------------------------------------------------\nif (is_node()) {\n node_specific();\n} else if (typeof window !== 'undefined' && window === root) {\n global_env.set('window', window);\n global_env.set('global', undefined);\n global_env.set('self', window);\n} else if (typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined') {\n global_env.set('self', self);\n global_env.set('window', undefined);\n global_env.set('global', undefined);\n}\n// -------------------------------------------------------------------------\nfunction typeErrorMessage(fn, got, expected, position = null) {\n let postfix = fn ? ` in expression \\`${fn}\\`` : '';\n if (position !== null) {\n postfix += ` (argument ${position})`;\n }\n if (is_function(expected)) {\n return `Invalid type got ${got}${postfix}`;\n }\n if (expected instanceof Array) {\n if (expected.length === 1) {\n expected = expected[0];\n } else {\n const last = expected[expected.length - 1];\n expected = expected.slice(0, -1).join(', ') + ' or ' + last;\n }\n }\n return `Expecting ${expected}, got ${got}${postfix}`;\n}\n// -------------------------------------------------------------------------\nfunction typecheck_args(fn, args, expected) {\n args.forEach((arg, i) => {\n typecheck(fn, arg, expected, i + 1);\n });\n}\n// -------------------------------------------------------------------------\nfunction typecheck_text_port(fn, arg, type) {\n typecheck(fn, arg, type);\n if (arg.__type__ === binary_port) {\n throw new Error(typeErrorMessage(\n fn,\n 'binary-port',\n 'textual-port'\n ));\n }\n}\n// -------------------------------------------------------------------------\nfunction typecheck(fn, arg, expected, position = null) {\n fn = fn.valueOf();\n const arg_type = type(arg).toLowerCase();\n if (is_function(expected)) {\n if (!expected(arg)) {\n throw new Error(typeErrorMessage(fn, arg_type, expected, position));\n }\n return;\n }\n var match = false;\n if (expected instanceof Pair) {\n expected = expected.to_array();\n }\n if (expected instanceof Array) {\n expected = expected.map(x => x.valueOf());\n }\n if (expected instanceof Array) {\n expected = expected.map(x => x.valueOf().toLowerCase());\n if (expected.includes(arg_type)) {\n match = true;\n }\n } else {\n expected = expected.valueOf().toLowerCase();\n }\n if (!match && arg_type !== expected) {\n throw new Error(typeErrorMessage(fn, arg_type, expected, position));\n }\n}\n// -------------------------------------------------------------------------\nfunction self_evaluated(obj) {\n var type = typeof obj;\n return ['string', 'function'].includes(type) ||\n typeof obj === 'symbol' ||\n obj instanceof QuotedPromise ||\n obj instanceof LSymbol ||\n obj instanceof LNumber ||\n obj instanceof LString ||\n obj instanceof RegExp;\n}\n// -------------------------------------------------------------------------\nfunction is_native(obj) {\n return obj instanceof LNumber ||\n obj instanceof LString ||\n obj instanceof LCharacter;\n}\n// -------------------------------------------------------------------------\nfunction has_own_symbol(obj, symbol) {\n if (obj === null) {\n return false;\n }\n return typeof obj === 'object' &&\n symbol in Object.getOwnPropertySymbols(obj);\n}\n// -------------------------------------------------------------------------\nfunction is_iterator(obj, symbol) {\n if (has_own_symbol(obj, symbol) || has_own_symbol(obj.__proto__, symbol)) {\n return is_function(obj[symbol]);\n }\n}\n// -------------------------------------------------------------------------\nfunction type(obj) {\n var mapping = {\n 'pair': Pair,\n 'symbol': LSymbol,\n 'character': LCharacter,\n 'values': Values,\n 'input-port': InputPort,\n 'output-port': OutputPort,\n 'number': LNumber,\n 'regex': RegExp,\n 'syntax': Syntax,\n 'macro': Macro,\n 'string': LString,\n 'array': Array,\n 'native-symbol': Symbol\n };\n if (Number.isNaN(obj)) {\n return 'NaN';\n }\n if (obj === nil) {\n return 'nil';\n }\n if (obj === null) {\n return 'null';\n }\n for (let [key, value] of Object.entries(mapping)) {\n if (obj instanceof value) {\n return key;\n }\n }\n if (typeof obj === 'object') {\n if (obj.__instance__) {\n obj.__instance__ = false;\n if (obj.__instance__) {\n if (is_function(obj.toType)) {\n return obj.toType();\n }\n return 'instance';\n }\n }\n if (obj.constructor) {\n if (obj.constructor.__class__) {\n return obj.constructor.__class__;\n }\n if (obj.constructor === Object) {\n if (is_iterator(obj, Symbol.iterator)) {\n return 'iterator';\n }\n if (is_iterator(obj, Symbol.asyncIterator)) {\n return 'async-iterator';\n }\n }\n return obj.constructor.name.toLowerCase();\n }\n }\n return typeof obj;\n}\n// -------------------------------------------------------------------------\n// :; wrap tree of Promises with single Promise or return argument as is\n// :: if tree have no Promises\n// -------------------------------------------------------------------------\nfunction resolve_promises(arg) {\n var promises = [];\n traverse(arg);\n if (promises.length) {\n return resolve(arg);\n }\n return arg;\n function traverse(node) {\n if (is_promise(node)) {\n promises.push(node);\n } else if (node instanceof Pair) {\n if (!node.haveCycles('car')) {\n traverse(node.car);\n }\n if (!node.haveCycles('cdr')) {\n traverse(node.cdr);\n }\n } else if (node instanceof Array) {\n node.forEach(traverse);\n }\n }\n async function promise(node) {\n var pair = new Pair(\n node.haveCycles('car') ? node.car : await resolve(node.car),\n node.haveCycles('cdr') ? node.cdr : await resolve(node.cdr)\n );\n if (node[__data__]) {\n pair[__data__] = true;\n }\n return pair;\n }\n function resolve(node) {\n if (node instanceof Array) {\n return promise_all(node.map(resolve));\n }\n if (node instanceof Pair && promises.length) {\n return promise(node);\n }\n return node;\n }\n}\n// -------------------------------------------------------------------------\nfunction evaluate_args(rest, { env, dynamic_scope, error }) {\n var args = [];\n var node = rest;\n markCycles(node);\n function next() {\n return args;\n }\n return (function loop() {\n if (node instanceof Pair) {\n var arg = evaluate(node.car, { env, dynamic_scope, error });\n if (dynamic_scope) {\n arg = unpromise(arg, arg => {\n if (is_native_function(arg)) {\n return arg.bind(dynamic_scope);\n }\n return arg;\n });\n }\n return unpromise(resolve_promises(arg), function(arg) {\n args.push(arg);\n if (node.haveCycles('cdr')) {\n return next();\n }\n node = node.cdr;\n return loop();\n });\n } else if (node === nil) {\n return next();\n } else {\n throw new Error('Syntax Error: improper list found in apply');\n }\n })();\n}\n// -------------------------------------------------------------------------\nfunction evaluate_syntax(macro, code, eval_args) {\n var value = macro.invoke(code, eval_args);\n return unpromise(resolve_promises(value), function(value) {\n if (value instanceof Pair) {\n value.markCycles();\n }\n return quote(value);\n });\n}\n// -------------------------------------------------------------------------\nfunction evaluate_macro(macro, code, eval_args) {\n function finalize(result) {\n if (result instanceof Pair) {\n result.markCycles();\n return result;\n }\n return quote(result);\n }\n var value = macro.invoke(code, eval_args);\n return unpromise(resolve_promises(value), function ret(value) {\n if (!value || value && value[__data__] || self_evaluated(value)) {\n return value;\n } else {\n return unpromise(evaluate(value, eval_args), finalize);\n }\n });\n}\n// -------------------------------------------------------------------------\nfunction prepare_fn_args(fn, args) {\n if (is_bound(fn) && !is_object_bound(fn) &&\n (!lips_context(fn) || is_port_method(fn))) {\n args = args.map(unbox);\n }\n if (!is_raw_lambda(fn) &&\n args.some(is_lips_function) &&\n !is_lips_function(fn) &&\n !is_array_method(fn)) {\n // we unbox values from callback functions #76\n // calling map on array should not unbox the value\n var result = [], i = args.length;\n while (i--) {\n let arg = args[i];\n if (is_lips_function(arg)) {\n var wrapper = function(...args) {\n return unpromise(arg.apply(this, args), unbox);\n };\n // make wrapper work like output of bind\n hidden_prop(wrapper, '__bound__', true);\n hidden_prop(wrapper, '__fn__', arg);\n // copy prototype from function to wrapper\n // so this work when calling new from JavaScript\n // case of Preact that pass LIPS class as argument\n // to h function\n wrapper.prototype = arg.prototype;\n result[i] = wrapper;\n } else {\n result[i] = arg;\n }\n }\n args = result;\n }\n return args;\n}\n// -------------------------------------------------------------------------\nfunction apply(fn, args, { env, dynamic_scope, error = () => {} } = {}) {\n args = evaluate_args(args, { env, dynamic_scope, error });\n return unpromise(args, function(args) {\n if (is_raw_lambda(fn)) {\n // lambda need environment as context\n // normal functions are bound to their contexts\n fn = unbind(fn);\n }\n args = prepare_fn_args(fn, args);\n var _args = args.slice();\n var scope = (dynamic_scope || env).newFrame(fn, _args);\n var result = resolve_promises(fn.apply(scope, args));\n return unpromise(result, (result) => {\n if (result instanceof Pair) {\n result.markCycles();\n return quote(result);\n }\n return box(result);\n }, error);\n });\n}\n// -------------------------------------------------------------------------\n// :: Continuations object from call/cc\n// -------------------------------------------------------------------------\nclass Continuation {\n constructor(k) {\n this.__value__ = k;\n }\n invoke() {\n if (this.__value__ === null) {\n throw new Error('Continuations are not implemented yet');\n }\n }\n toString() {\n return '#';\n }\n}\n// -------------------------------------------------------------------------\nconst noop = () => {};\n// -------------------------------------------------------------------------\nfunction evaluate(code, { env, dynamic_scope, error = noop } = {}) {\n try {\n if (dynamic_scope === true) {\n env = dynamic_scope = env || global_env;\n } else if (env === true) {\n env = dynamic_scope = global_env;\n } else {\n env = env || global_env;\n }\n var eval_args = { env, dynamic_scope, error };\n var value;\n if (is_null(code)) {\n return code;\n }\n if (code instanceof LSymbol) {\n return env.get(code);\n }\n if (!(code instanceof Pair)) {\n return code;\n }\n var first = code.car;\n var rest = code.cdr;\n if (first instanceof Pair) {\n value = resolve_promises(evaluate(first, eval_args));\n if (is_promise(value)) {\n return value.then((value) => {\n return evaluate(new Pair(value, code.cdr), eval_args);\n });\n // else is later in code\n } else if (!is_callable(value)) {\n throw new Error(\n type(value) + ' ' + env.get('repr')(value) +\n ' is not callable while evaluating ' + code.toString()\n );\n }\n }\n if (first instanceof LSymbol) {\n value = env.get(first);\n } else if (is_function(first)) {\n value = first;\n }\n var result;\n if (value instanceof Syntax) {\n result = evaluate_syntax(value, code, eval_args);\n } else if (value instanceof Macro) {\n result = evaluate_macro(value, rest, eval_args);\n } else if (is_function(value)) {\n result = apply(value, rest, eval_args);\n } else if (is_continuation(value)) {\n result = value.invoke();\n } else if (code instanceof Pair) {\n value = first && first.toString();\n throw new Error(`${type(first)} ${value} is not a function`);\n } else {\n return code;\n }\n // escape promise feature #54\n var __promise__ = env.get(Symbol.for('__promise__'), { throwError: false });\n if (__promise__ === true && is_promise(result)) {\n // fix #139 evaluate the code inside the promise that is not data.\n // When promise is not quoted it happen automatically, when returing\n // promise from evaluate.\n result = result.then(result => {\n if (result instanceof Pair && !value[__data__]) {\n return evaluate(result, eval_args);\n }\n return result;\n });\n return new QuotedPromise(result);\n }\n return result;\n } catch (e) {\n error && error.call(env, e, code);\n }\n}\n// -------------------------------------------------------------------------\nconst compile = exec_collect(function(code) {\n return code;\n});\n// -------------------------------------------------------------------------\nconst exec = exec_collect(function(code, value) {\n return value;\n});\n// -------------------------------------------------------------------------\nfunction exec_collect(collect_callback) {\n return async function exec_lambda(arg, env, dynamic_scope) {\n if (dynamic_scope === true) {\n env = dynamic_scope = env || user_env;\n } else if (env === true) {\n env = dynamic_scope = user_env;\n } else {\n env = env || user_env;\n }\n var results = [];\n var input = Array.isArray(arg) ? arg : parse(arg);\n for await (let code of input) {\n const value = evaluate(code, {\n env,\n dynamic_scope,\n error: (e, code) => {\n if (e && e.message) {\n if (e.message.match(/^Error:/)) {\n var re = /^(Error:)\\s*([^:]+:\\s*)/;\n // clean duplicated Error: added by JS\n e.message = e.message.replace(re, '$1 $2');\n }\n if (code) {\n // LIPS stack trace\n if (!(e.__code__ instanceof Array)) {\n e.__code__ = [];\n }\n e.__code__.push(code.toString(true));\n }\n }\n throw e;\n }\n });\n if (!is_promise(value)) {\n results.push(collect_callback(code, value));\n } else {\n results.push(collect_callback(code, await value));\n }\n }\n return results;\n };\n}\n// -------------------------------------------------------------------------\nfunction balanced(code) {\n var maching_pairs = {\n '[': ']',\n '(': ')'\n };\n var tokens;\n if (typeof code === 'string') {\n tokens = tokenize(code);\n } else {\n tokens = code.map(x => x && x.token ? x.token : x);\n }\n\n var open_tokens = Object.keys(maching_pairs);\n var brackets = Object.values(maching_pairs).concat(open_tokens);\n tokens = tokens.filter(token => brackets.includes(token));\n\n const stack = new Stack();\n for (const token of tokens) {\n if (open_tokens.includes(token)) {\n stack.push(token);\n } else if (!stack.is_empty()) { // closing token\n var last = stack.top();\n // last on stack need to match\n const closing_token = maching_pairs[last];\n if (token === closing_token) {\n stack.pop();\n } else {\n throw new Error(`Syntax error: missing closing ${closing_token}`);\n }\n } else {\n // closing bracket without opening\n throw new Error(`Syntax error: not matched closing ${token}`);\n }\n }\n return stack.is_empty();\n}\n\n// -------------------------------------------------------------------------\nfunction fworker(fn) {\n // ref: https://stackoverflow.com/a/10372280/387194\n var str = '(' + fn.toString() + ')()';\n var URL = window.URL || window.webkitURL;\n var blob;\n try {\n blob = new Blob([str], { type: 'application/javascript' });\n } catch (e) { // Backwards-compatibility\n const BlobBuilder = window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder;\n blob = new BlobBuilder();\n blob.append(str);\n blob = blob.getBlob();\n }\n return new root.Worker(URL.createObjectURL(blob));\n}\n// -------------------------------------------------------------------------\nfunction is_dev() {\n return lips.version.match(/^(\\{\\{VER\\}\\}|DEV)$/);\n}\n// -------------------------------------------------------------------------\nfunction bootstrap(url = '') {\n const std = 'dist/std.xcb';\n if (url === '') {\n if (is_dev()) {\n url = `https://cdn.jsdelivr.net/gh/jcubic/lips@devel/${std}`;\n } else {\n url = `https://cdn.jsdelivr.net/npm/@jcubic/lips@${lips.version}/${std}`;\n }\n }\n var load = global_env.get('load');\n return load.call(user_env, url, global_env);\n}\n// -------------------------------------------------------------------------\nfunction Worker(url) {\n this.url = url;\n const worker = this.worker = fworker(function() {\n var interpreter;\n var init;\n // string, numbers, booleans\n self.addEventListener('message', function(response) {\n var data = response.data;\n var id = data.id;\n if (data.type !== 'RPC' || id === null) {\n return;\n }\n function send_result(result) {\n self.postMessage({ id: id, type: 'RPC', result: result });\n }\n function send_error(message) {\n self.postMessage({ id: id, type: 'RPC', error: message });\n }\n if (data.method === 'eval') {\n if (!init) {\n send_error('Worker RPC: LIPS not initilized, call init first');\n return;\n }\n init.then(function() {\n // we can use ES6 inside function that's converted to blob\n var code = data.params[0];\n var dynamic = data.params[1];\n interpreter.exec(code, dynamic).then(function(result) {\n result = result.map(function(value) {\n return value && value.valueOf();\n });\n send_result(result);\n }).catch(error => {\n send_error(error);\n });\n });\n } else if (data.method === 'init') {\n var url = data.params[0];\n if (typeof url !== 'string') {\n send_error('Worker RPC: url is not a string');\n } else {\n importScripts(`${url}/dist/lips.min.js`);\n interpreter = new lips.Interpreter('worker');\n init = bootstrap(url);\n init.then(() => {\n send_result(true);\n });\n }\n }\n });\n });\n this.rpc = (function() {\n var id = 0;\n return function rpc(method, params) {\n var _id = ++id;\n return new Promise(function(resolve, reject) {\n worker.addEventListener('message', function handler(response) {\n var data = response.data;\n if (data && data.type === 'RPC' && data.id === _id) {\n if (data.error) {\n reject(data.error);\n } else {\n resolve(data.result);\n }\n worker.removeEventListener('message', handler);\n }\n });\n worker.postMessage({\n type: 'RPC',\n method: method,\n id: _id,\n params: params\n });\n });\n };\n })();\n this.rpc('init', [url]).catch((error) => {\n console.error(error);\n });\n this.exec = function(code, dynamic = false) {\n return this.rpc('eval', [code, dynamic]);\n };\n}\n\n// -------------------------------------------------------------------------\n// :: Serialization\n// -------------------------------------------------------------------------\nvar serialization_map = {\n 'pair': ([car, cdr]) => Pair(car, cdr),\n 'number': function(value) {\n if (LString.isString(value)) {\n return LNumber([value, 10]);\n }\n return LNumber(value);\n },\n 'regex': function([pattern, flag]) {\n return new RegExp(pattern, flag);\n },\n 'nil': function() {\n return nil;\n },\n 'symbol': function(value) {\n if (LString.isString(value)) {\n return LSymbol(value);\n } else if (Array.isArray(value)) {\n return LSymbol(Symbol.for(value[0]));\n }\n },\n 'string': LString,\n 'character': LCharacter\n};\n// -------------------------------------------------------------------------\n// class mapping to create smaller JSON\nconst available_class = Object.keys(serialization_map);\nconst class_map = {};\nfor (let [i, cls] of Object.entries(available_class)) {\n class_map[cls] = +i;\n}\nfunction mangle_name(name) {\n return class_map[name];\n}\nfunction resolve_name(i) {\n return available_class[i];\n}\n// -------------------------------------------------------------------------\nfunction serialize(data) {\n return JSON.stringify(data, function(key, value) {\n const v0 = this[key];\n if (v0) {\n if (v0 instanceof RegExp) {\n return {\n '@': mangle_name('regex'),\n '#': [v0.source, v0.flags]\n };\n }\n var cls = mangle_name(v0.constructor.__class__);\n if (!is_undef(cls)) {\n return {\n '@': cls,\n '#': v0.serialize()\n };\n }\n }\n return value;\n });\n}\n// -------------------------------------------------------------------------\nfunction unserialize(string) {\n return JSON.parse(string, (_, object) => {\n if (object && typeof object === 'object') {\n if (!is_undef(object['@'])) {\n var cls = resolve_name(object['@']);\n if (serialization_map[cls]) {\n return serialization_map[cls](object['#']);\n }\n }\n }\n return object;\n });\n}\n\n// -------------------------------------------------------------------------\n// binary serialization using CBOR binary data format\n// -------------------------------------------------------------------------\nconst cbor = (function() {\n\n var types = {\n 'pair': Pair,\n 'symbol': LSymbol,\n 'number': LNumber,\n 'string': LString,\n 'character': LCharacter,\n 'nil': nil.constructor,\n 'regex': RegExp\n };\n\n function serializer(Class, fn) {\n return {\n deserialize: fn,\n Class\n };\n }\n\n var encoder = new Encoder();\n\n const cbor_serialization_map = {};\n for (const [ name, fn ] of Object.entries(serialization_map)) {\n const Class = types[name];\n cbor_serialization_map[name] = serializer(Class, fn);\n }\n // add CBOR data mapping\n let tag = 43311;\n Object.keys(cbor_serialization_map).forEach(type => {\n const data = cbor_serialization_map[type];\n if (typeof data === 'function') {\n const Class = data;\n addExtension({\n Class,\n tag,\n encode(instance, encode) {\n encode(instance.serialize());\n },\n decode(data) {\n return new Class(data);\n }\n });\n } else {\n const { deserialize, Class } = data;\n addExtension({\n Class,\n tag,\n encode(instance, encode) {\n if (instance instanceof RegExp) {\n return encode([instance.source, instance.flags]);\n }\n encode(instance.serialize());\n },\n decode(data) {\n return deserialize(data);\n }\n });\n }\n tag++;\n });\n return encoder;\n})();\n\n// -------------------------------------------------------------------------\nfunction merge_uint8_array(...args) {\n if (args.length > 1) {\n const len = args.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(len);\n let offset = 0;\n args.forEach(item => {\n result.set(item, offset);\n offset += item.length;\n });\n return result;\n } else if (args.length) {\n return args[0];\n }\n}\n\n// -------------------------------------------------------------------------\nfunction encode_magic() {\n const VERSION = 1;\n const encoder = new TextEncoder('utf-8');\n return encoder.encode(`LIPS${VERSION.toString().padStart(3, ' ')}`);\n}\n\n// -------------------------------------------------------------------------\nconst MAGIC_LENGTH = 7;\n\n// -------------------------------------------------------------------------\nfunction decode_magic(obj) {\n const decoder = new TextDecoder('utf-8');\n const prefix = decoder.decode(obj.slice(0, MAGIC_LENGTH));\n const name = prefix.substring(0, 4);\n if (name === 'LIPS') {\n const m = prefix.match(/^(....).*([0-9]+)$/);\n if (m) {\n return {\n type: m[1],\n version: Number(m[2])\n };\n }\n }\n return {\n type: 'unknown'\n };\n}\n\n// -------------------------------------------------------------------------\nfunction serialize_bin(obj) {\n const magic = encode_magic();\n const payload = cbor.encode(obj);\n return merge_uint8_array(magic, pack(payload, { magic: false }));\n}\n\n// -------------------------------------------------------------------------\nfunction unserialize_bin(data) {\n const { type, version } = decode_magic(data);\n if (type === 'LIPS' && version === 1) {\n const arr = unpack(data.slice(MAGIC_LENGTH), { magic: false });\n return cbor.decode(arr);\n } else {\n throw new Error(`Invalid file format ${type}`);\n }\n}\n\n// -------------------------------------------------------------------------\nfunction execError(e) {\n console.error(e.message || e);\n if (e.code) {\n console.error(e.code.map((line, i) => `[${i + 1}]: ${line}`));\n }\n}\n\n// -------------------------------------------------------------------------\nfunction init() {\n var lips_mimes = ['text/x-lips', 'text/x-scheme'];\n var bootstraped;\n function load(script) {\n return new Promise(function(resolve) {\n var src = script.getAttribute('src');\n if (src) {\n return fetch(src).then(res => res.text())\n .then(exec).then(resolve).catch((e) => {\n execError(e);\n resolve();\n });\n } else {\n return exec(script.innerHTML).then(resolve).catch((e) => {\n execError(e);\n resolve();\n });\n }\n });\n }\n\n function loop() {\n return new Promise(function(resolve) {\n var scripts = Array.from(document.querySelectorAll('script'));\n return (function loop() {\n var script = scripts.shift();\n if (!script) {\n resolve();\n } else {\n var type = script.getAttribute('type');\n if (lips_mimes.includes(type)) {\n var bootstrap_attr = script.getAttribute('bootstrap');\n if (!bootstraped && typeof bootstrap_attr === 'string') {\n return bootstrap(bootstrap_attr).then(function() {\n return load(script, function(e) {\n console.error(e);\n });\n }).then(loop);\n } else {\n return load(script, function(e) {\n console.error(e);\n }).then(loop);\n }\n } else if (type && type.match(/lips|lisp/)) {\n console.warn('Expecting ' + lips_mimes.join(' or ') +\n ' found ' + type);\n }\n return loop();\n }\n })();\n });\n }\n if (!window.document) {\n return Promise.resolve();\n } else if (currentScript) {\n var script = currentScript;\n var bootstrap_attr = script.getAttribute('bootstrap');\n if (typeof bootstrap_attr === 'string') {\n return bootstrap(bootstrap_attr).then(function() {\n bootstraped = true;\n return loop();\n });\n }\n }\n return loop();\n}\n// this can't be in init function, because it need to be in script context\nconst currentScript = typeof window !== 'undefined' &&\n window.document && document.currentScript;\n// -------------------------------------------------------------------------\nif (typeof window !== 'undefined') {\n contentLoaded(window, init);\n}\n// -------------------------------------------------------------------------\nvar banner = (function() {\n // Rollup tree-shaking is removing the variable if it's normal string because\n // obviously '{{DATE}}' == '{{' + 'DATE}}'; can be removed\n // but disablig Tree-shaking is adding lot of not used code so we use this\n // hack instead\n var date = LString('{{DATE}}').valueOf();\n var _date = date === '{{' + 'DATE}}' ? new Date() : new Date(date);\n var _format = x => x.toString().padStart(2, '0');\n var _year = _date.getFullYear();\n var _build = [\n _year,\n _format(_date.getMonth() + 1),\n _format(_date.getDate())\n ].join('-');\n var banner = `\n __ __ __\n / / \\\\ \\\\ _ _ ___ ___ \\\\ \\\\\n| | \\\\ \\\\ | | | || . \\\\/ __> | |\n| | > \\\\ | |_ | || _/\\\\__ \\\\ | |\n| | / ^ \\\\ |___||_||_| <___/ | |\n \\\\_\\\\ /_/ \\\\_\\\\ /_/\n\nLIPS Interpreter {{VER}} (${_build}) \nCopyright (c) 2018-${_year} Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specic function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n`.replace(/^.*\\n/, '');\n return banner;\n})();\n// -------------------------------------------------------------------------\n// to be used with string function when code is minified\n// -------------------------------------------------------------------------\nread_only(Ahead, '__class__', 'ahead');\nread_only(Pair, '__class__', 'pair');\nread_only(Nil, '__class__', 'nil');\nread_only(Pattern, '__class__', 'pattern');\nread_only(Formatter, '__class__', 'formatter');\nread_only(Macro, '__class__', 'macro');\nread_only(Syntax, '__class__', 'syntax');\nread_only(Environment, '__class__', 'environment');\nread_only(InputPort, '__class__', 'input-port');\nread_only(OutputPort, '__class__', 'output-port');\nread_only(BufferedOutputPort, '__class__', 'output-port');\nread_only(OutputStringPort, '__class__', 'output-string-port');\nread_only(InputStringPort, '__class__', 'input-string-port');\nread_only(InputFilePort, '__class__', 'input-file-port');\nread_only(OutputFilePort, '__class__', 'output-file-port');\nread_only(LipsError, '__class__', 'lips-error');\n[LNumber, LComplex, LRational, LFloat, LBigInteger].forEach(cls => {\n read_only(cls, '__class__', 'number');\n});\nread_only(LCharacter, '__class__', 'character');\nread_only(LSymbol, '__class__', 'symbol');\nread_only(LString, '__class__', 'string');\nread_only(QuotedPromise, '__class__', 'promise');\n// -------------------------------------------------------------------------\nconst lips = {\n version: '{{VER}}',\n banner,\n date: '{{DATE}}',\n exec,\n // unwrap async generator into Promise\n parse: compose(uniterate_async, parse),\n tokenize,\n evaluate,\n compile,\n\n serialize,\n unserialize,\n\n serialize_bin,\n unserialize_bin,\n\n bootstrap,\n\n Environment,\n env: user_env,\n\n Worker,\n\n Interpreter,\n balanced_parenthesis: balanced,\n balancedParenthesis: balanced,\n balanced,\n\n Macro,\n Syntax,\n Pair,\n Values,\n QuotedPromise,\n Error: LipsError,\n\n quote,\n\n InputPort,\n OutputPort,\n BufferedOutputPort,\n InputFilePort,\n OutputFilePort,\n InputStringPort,\n OutputStringPort,\n InputByteVectorPort,\n OutputByteVectorPort,\n InputBinaryFilePort,\n OutputBinaryFilePort,\n\n Formatter,\n Parser,\n Lexer,\n specials,\n repr,\n nil,\n eof,\n\n LSymbol,\n LNumber,\n LFloat,\n LComplex,\n LRational,\n LBigInteger,\n LCharacter,\n LString,\n rationalize\n};\n// so it work when used with webpack where it will be not global\nexport default lips;\nglobal_env.set('lips', lips);\n","export default {};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexport function resolve() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : '/';\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexport function normalize(path) {\n var isPathAbsolute = isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isPathAbsolute).join('/');\n\n if (!path && !isPathAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexport function isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\nexport function join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n}\n\n\n// path.relative(from, to)\n// posix version\nexport function relative(from, to) {\n from = resolve(from).substr(1);\n to = resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\nexport var sep = '/';\nexport var delimiter = ':';\n\nexport function dirname(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\nexport function basename(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n}\n\n\nexport function extname(path) {\n return splitPath(path)[3];\n}\nexport default {\n extname: extname,\n basename: basename,\n dirname: dirname,\n sep: sep,\n delimiter: delimiter,\n relative: relative,\n join: join,\n isAbsolute: isAbsolute,\n normalize: normalize,\n resolve: resolve\n};\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b' ?\n function (str, start, len) { return str.substr(start, len) } :\n function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n"],"names":["_isNativeReflectConstruct","isNativeReflectConstruct","setPrototypeOf","assertThisInitialized","_arrayLikeToArray","_unsupportedIterableToArray","arrayLikeToArray","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","nonIterableSpread","objectWithoutPropertiesLoose","iterableToArrayLimit","AwaitValue","undefined","require$$0","init","read","toString","global","position","addExtension","decodeAddExtension","encode_magic","merge_uint8_array","root","self","fetch","unfetch","fs","path","nodeRequire","BN","contentLoaded","win","fn","done","top","doc","document","documentElement","modern","addEventListener","add","rem","pre","e","type","readyState","call","poll","doScroll","setTimeout","frameElement","log","x","regex","literal","arguments","msg","is_debug","value","global_env","get","RegExp","test","console","is_promise","then","user_env","throwError","num_mnemicic_re","mnemonic","gen_rational_re","range","gen_complex_re","gen_integer_re","re_re","float_stre","complex_float_stre","float_re","make_complex_match_re","neg","fl","complex_list_re","result","forEach","radix","characters","ucs2decode","string","output","counter","length","charCodeAt","extra","push","character_symbols","Object","keys","join","char_sre_re","char_re","make_num_stre","ranges","map","m","make_type_re","complex_re","rational_re","int_re","int_bare_re","rational_bare_re","complex_bare_re","complex_bare_match_re","pre_num_parse_re","num_pre_parse","arg","parts","match","options","replace","toLowerCase","split","includes","inexact","exact","number","parse_rational","parse","num","LRational","LNumber","denom","valueOf","parse_integer","LFloat","parseInt","parse_character","char","ord","String","fromCodePoint","LCharacter","Error","parse_complex","parse_num","n","float","parse_float","toRational","NaN","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","bare_match","re","im","cmp","__type__","LComplex","is_int","parse_big_int","str","num_match","exponent","mantisa","digits","decimal_points","Math","abs","parseFloat","simple_number","factor","pow","mul","parse_string","_","hex","padStart","LString","JSON","parse_symbol","chars","t","r","chr","fromCharCode","LSymbol","parse_argument","constants","hasOwnProperty","is_atom_string","specials","names","is_symbol_string","string_re","escape_regex","special","Stack","data","prototype","item","pop","is_empty","tokens","lexer","Lexer","whitespace","token","peek","eof","skip","multiline_formatter","meta","rest","col","Thunk","cont","trampoline","args","unwind","apply","thunk","tokenize","trim","filter","strip_s_comments","s_count","s_start","remove_list","i","slice","reverse","begin","end","splice","isSymbol","name","constructor","list","__name__","Symbol","object","is","symbol","quote","symbol_to_string","is_gensym","serialize","isString","obj","gensym","count","with_props","sym","hidden_prop","QuotedPromise","promise","internal","pending","rejected","fulfilled","reason","v","read_only","hidden","is_function","err","defineProperty","enumerable","_promise","__pending__","pending_str","__rejected__","rejected_str","promise_all","Array","isArray","Promise","all","escape_quoted_promises","unescape_quoted_promises","array","escaped","Value","unescaped","LITERAL","SPLICE","SYMBOL","_specials","off","_events","on","trigger","remove","append","seq","is_special","is_builtin","builtin","is_literal","defined_specials","writable","arr","input","internals","configurable","set","_whitespace","_i","_line","_col","_newline","_state","_next","_token","_prev_char","__internal","line","offset","__input__","found","next_token","substring","len","read_rest","peek_char","skip_char","rule","prev_char","next_char","prev_re","next_re","state","match_or_null","start","loop","newline","rules","match_rule","next_state","symbol_rule","literal_rule","boundary","concat","p_re","n_re","comment","regex_class","character","bracket","b_symbol","b_comment","i_comment","l_datum","dot","_rules","_brackets","_symbol_rules","_cache","valid","sort","a","b","localeCompare","special_rules","reduce","acc","special_symbol","Parser","env","formatter","__env__","__lexer__","is_comment","_read_object","_formatter","_meta","_refs","head","nil","prev","is_close","cdr","Pair","cur","code","evaluate","error","reset","DatumReference","_resolve_object","is_plain_object","key","_resolve_pair","pair","car","bultin","extension","to_array","expr","Macro","fromArray","ref","match_datum_ref","ref_label","match_datum_label","is_open","read_list","read_value","parser","read_object","unpromise","ret","unpromise_array","unpromise_object","find","isFrozen","freeze","values","anyPromise","property","uniterate_async","matcher","dump","__doc__","trim_lines","is_lambda","previousSexp","sexp","outer","lineIndent","pattern","inner_match","get_first_match","patterns","p","not_symbol_match","match_next","next_pattern","next_input","glob","Pattern","flag","lips","inc","Formatter","__code__","defaults","indent","exceptions","shift","_options","assign","exeptions","_indent","exception_shift","settings","indexOf","regexes","s","entries","spaces","before_sexpr","last","balanced","exeption","next_tokens","Ahead","p_o","p_e","not_p","not_close","sexp_or_atom","symbols","identifiers","let_value","def_lambda_re","keywords_re","non_def","let_re","first_token_index","sub","ext","test_sexp","next","index","_spaces","format","j","lines","flatten","mutable","arrayTypeStr","nodes","node","Nil","to_object","deep","recur","typecheck","haveCycles","some","clone","visited","Map","has","__cycles__","last_pair","__data__","isNaN","is_native","fromPairs","fromObject","transform","repr","props","getOwnPropertyNames","array_methods","is_array_method","unbind","is_lips_function","user_repr","plain_object","iterator","asyncIterator","str_mapping","symbolize","getOwnPropertySymbols","o","get_props","has_own_function","function_to_string","is_native_function","__class__","instances","message","skip_cycles","pair_args","markCycles","stringify","cls","native_types","Values","InputPort","OutputPort","Environment","jQuery","is_prototype","is_iterator","seen_pairs","cycles","refs","visit","child","parents","detect","detect_thunk","mark_node","ref_nodes","__ref__","nested","prop","seq_compare","equal","y","__im__","__re__","__char__","same_atom","is_atom","source","truncate","trunc","ceil","floor","__fn__","defmacro","macro","__defmacro__","invoke","macro_expand","dynamic_scope","recur_guard","single","is_let_macro","is_procedure","proc_bindings","let_binding","is_macro","expand_let_binding","traverse","is_let","is_binding","bindings","second","Syntax","scope","lambda","define","let_macros","isNumber","__merge_env__","create","className","Parameter","extract_patterns","ellipsis_symbol","lists","expansion","pattern_names","ellipsis","list_len","code_len","IIIIII","rest_pattern","clear_gensyms","gensyms","replacement","transform_syntax","valid_symbol","n_type","first","rename","gensym_name","Boolean","transform_ellipsis_expr","caar","cadr","______","have_binding","biding","skip_nulls","every","get_names","disabled","is_spread","new_expr","bind","new_bind","is_null","is_syntax","is_undef","is_continuation","Continuation","is_callable","box","nan","map_object","descriptor","getOwnPropertyDescriptor","unbox","lips_type","patch_value","context","is_bound","bound","filter_fn_names","is_object_bound","lips_context","__context__","is_port","is_port_method","__method__","__prototype__","__lambda__","exluded_names","set_fn_length","fill","wrapper","Function","is_method","is_raw_lambda","native","let_macro","params","inherit","var_body_env","exec","promises","pararel","results","havePromises","guard_math_call","pipe","fns","f","compose","fold","limit_math_op","limit","curry","single_math_op","binary_math_op","reduce_math_op","init_args","more_args","from","__names__","__rev_names__","toUpperCase","__string__","ignore","_keys","wrap","lower","upper","force","_type","getType","types","parsable","sign","minus","BigInt","prefix","n_radix","LBigInteger","constant","complex","isComplex","rational","isRational","__value__","gcd","temp","isFloat","isNative","isBN","isInteger","isBigInteger","getArgsType","asType","isBigNumber","toNumber","matrix","bigint","integer","coerce","a_re","b_re","a_im","b_im","type_a","type_b","a_type","b_type","tmp","mapping","rev_mapping","op","_ops","_op","sqrt","exp_op","iabs","isOdd","isEven","complex_op","modulus","conjugate","div","calc","re_a","re_b","re_cmp","im_a","im_b","inf","im_str","zero_check","_minus","approxRatio","eps","gcde","_gcd","c","rationalize","simplest_rational2","fx","fy","d","__num__","__denom__","is_integer","a_denom","b_denom","a_num","b_num","_native","bn_op","text_port","_read","_with_parser","_with_init_parser","char_ready","__parser__","_make_defaults","read_line","read_char","read_string","typeErrorMessage","make_parser","close","write","_closed","flush","BufferedOutputPort","_write","_buffer","_fn","last_value","OutputStringPort","__buffer__","OutputFilePort","filename","fd","_fd","_fs","resolve","reject","__filename__","InputStringPort","InputByteVectorPort","bytevectors","binary_port","u8_ready","peek_u8","__index__","__vector__","read_u8","byte","read_u8_vector","OutputByteVectorPort","Uint8Array","_close_guard","write_u8","write_u8_vector","vector","InputFilePort","content","InputBinaryFilePort","OutputBinaryFilePort","Buffer","buffer","EOF","Interpreter","stderr","stdin","stdout","defaults_name","inter","internal_env","set_interaction_env","dynamic","LipsError","stack","parent","__docs__","__parent__","unset","newFrame","frame","parent_frame","callee","_lookup","merge","isUndefined","__values__","unshift","native_lambda","interaction","interaction_env","prompt","port","typecheck_text_port","pprint","print","display","help","cons","resolve_promises","thrid","slot","load","file","g_env","PATH","module_path","IS_BIN","run","unserialize_bin","unserialize","res","arrayBuffer","text","is_node","dirname","readFile","vars","body","eval_args","cond","new_code","obj_type","producer","consumer","maybe","__instance__","_args","makro_instance","get_identifiers","validate_identifiers","syntax","var_scope","lex_scope","new_env","quasiquote","is_struct","resolve_pair","eval_pair","unquoted_arr","quote_vector","unquote_cnt","max_unq","quote_object","unquote_splice","splices","Set","clear","items","is_list","nth","separator","search","instance","prepare_fn_args","valid_bare","catch_clause","finally_clause","l","pluck","typecheck_args","lcm","or","and","shr","shl","not","allPossibleCases","allCasesOfRest","combinations","input_arr","spec","repeat","reversseFind","dir","sep","nodeModuleFind","existsSync","node_specific","createRequire","import","moduleURL","URL","__dirname","pathname","__filename","basename","module","process","cwd","window","WorkerGlobalScope","got","expected","postfix","arg_type","self_evaluated","has_own_symbol","__proto__","toType","evaluate_args","evaluate_syntax","evaluate_macro","finalize","k","noop","__promise__","compile","exec_collect","collect_callback","exec_lambda","maching_pairs","open_tokens","brackets","closing_token","fworker","webkitURL","blob","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","Worker","createObjectURL","is_dev","version","bootstrap","url","std","worker","interpreter","response","id","send_result","postMessage","send_error","method","importScripts","rpc","_id","handler","removeEventListener","serialization_map","available_class","class_map","mangle_name","resolve_name","v0","flags","cbor","serializer","Class","deserialize","encoder","Encoder","cbor_serialization_map","tag","encode","decode","VERSION","TextEncoder","MAGIC_LENGTH","decode_magic","decoder","TextDecoder","serialize_bin","magic","payload","pack","unpack","execError","lips_mimes","bootstraped","script","src","getAttribute","innerHTML","scripts","querySelectorAll","bootstrap_attr","warn","currentScript","banner","date","_date","Date","_format","_year","getFullYear","_build","getMonth","getDate","balanced_parenthesis","balancedParenthesis"],"mappings":";;;;;;EAAe,SAAS,sBAAsB,CAAC,IAAI,EAAE;EACrD,EAAE,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;EACvB,IAAI,MAAM,IAAI,cAAc,CAAC,2DAA2D,CAAC,CAAC;EAC1F,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd;;ECNe,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9C,EAAE,eAAe,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5E,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;EACpB,IAAI,OAAO,CAAC,CAAC;EACb,GAAG,CAAC;AACJ;EACA,EAAE,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC/B;;ECPe,SAASA,2BAAyB,GAAG;EACpD,EAAE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;EACzE,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC;EAC3C,EAAE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC;AAC/C;EACA,EAAE,IAAI;EACN,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;EACnF,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,CAAC,OAAO,CAAC,EAAE;EACd,IAAI,OAAO,KAAK,CAAC;EACjB,GAAG;EACH;;ECTe,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EACxD,EAAE,IAAIC,2BAAwB,EAAE,EAAE;EAClC,IAAI,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;EACnC,GAAG,MAAM;EACT,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;EAC1D,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACrB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC5B,MAAM,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EACvD,MAAM,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;EACvC,MAAM,IAAI,KAAK,EAAEC,eAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;EAC3D,MAAM,OAAO,QAAQ,CAAC;EACtB,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;EAC3C;;EChBe,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;EACxD,EAAE,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;EAC/D,IAAI,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;EAC9E,GAAG;AACH;EACA,EAAE,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;EACzE,IAAI,WAAW,EAAE;EACjB,MAAM,KAAK,EAAE,QAAQ;EACrB,MAAM,QAAQ,EAAE,IAAI;EACpB,MAAM,YAAY,EAAE,IAAI;EACxB,KAAK;EACL,GAAG,CAAC,CAAC;EACL,EAAE,IAAI,UAAU,EAAEA,eAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;EACvD;;ECde,SAAS,OAAO,CAAC,GAAG,EAAE;EACrC,EAAE,yBAAyB,CAAC;AAC5B;EACA,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE;EAC3E,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE;EACpC,MAAM,OAAO,OAAO,GAAG,CAAC;EACxB,KAAK,CAAC;EACN,GAAG,MAAM;EACT,IAAI,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE;EACpC,MAAM,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC;EACnI,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;EACtB;;ECZe,SAAS,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE;EAC/D,EAAE,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,EAAE;EAC1E,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;EAC9B,IAAI,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;EACpF,GAAG;AACH;EACA,EAAE,OAAOC,sBAAqB,CAAC,IAAI,CAAC,CAAC;EACrC;;ECVe,SAAS,eAAe,CAAC,CAAC,EAAE;EAC3C,EAAE,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE;EAChG,IAAI,OAAO,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;EACnD,GAAG,CAAC;EACJ,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;EAC5B;;ECLe,SAAS,eAAe,CAAC,GAAG,EAAE;EAC7C,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC;EACrC;;ECFe,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC/C,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC5H;;ECFe,SAASC,mBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE;EACpD,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACxD;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EACvD,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACrB,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd;;ECPe,SAASC,6BAA2B,CAAC,CAAC,EAAE,MAAM,EAAE;EAC/D,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO;EACjB,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,OAAOC,mBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;EAChE,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EACzD,EAAE,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;EAC9D,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;EACvD,EAAE,IAAI,CAAC,KAAK,WAAW,IAAI,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAOA,mBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;EAClH;;ECRe,SAAS,gBAAgB,GAAG;EAC3C,EAAE,MAAM,IAAI,SAAS,CAAC,2IAA2I,CAAC,CAAC;EACnK;;ECEe,SAAS,QAAQ,CAAC,GAAG,EAAE;EACtC,EAAE,OAAOC,eAAc,CAAC,GAAG,CAAC,IAAIC,gBAAe,CAAC,GAAG,CAAC,IAAIC,6BAA0B,CAAC,GAAG,CAAC,IAAIC,gBAAe,EAAE,CAAC;EAC7G;;ECLe,SAAS,kBAAkB,CAAC,GAAG,EAAE;EAChD,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAOJ,mBAAgB,CAAC,GAAG,CAAC,CAAC;EACvD;;ECHe,SAAS,kBAAkB,GAAG;EAC7C,EAAE,MAAM,IAAI,SAAS,CAAC,sIAAsI,CAAC,CAAC;EAC9J;;ECEe,SAAS,kBAAkB,CAAC,GAAG,EAAE;EAChD,EAAE,OAAOK,kBAAiB,CAAC,GAAG,CAAC,IAAIH,gBAAe,CAAC,GAAG,CAAC,IAAIC,6BAA0B,CAAC,GAAG,CAAC,IAAIG,kBAAiB,EAAE,CAAC;EAClH;;ECNA,SAAS,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;EAC3E,EAAE,IAAI;EACN,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;EAC3B,GAAG,CAAC,OAAO,KAAK,EAAE;EAClB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;EAClB,IAAI,OAAO;EACX,GAAG;AACH;EACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;EACjB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;EACnB,GAAG,MAAM;EACT,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;EAC/C,GAAG;EACH,CAAC;AACD;EACe,SAAS,iBAAiB,CAAC,EAAE,EAAE;EAC9C,EAAE,OAAO,YAAY;EACrB,IAAI,IAAI,IAAI,GAAG,IAAI;EACnB,QAAQ,IAAI,GAAG,SAAS,CAAC;EACzB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;EAClD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC;EACA,MAAM,SAAS,KAAK,CAAC,KAAK,EAAE;EAC5B,QAAQ,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAC/E,OAAO;AACP;EACA,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE;EAC3B,QAAQ,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;EAC9E,OAAO;AACP;EACA,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;EACvB,KAAK,CAAC,CAAC;EACP,GAAG,CAAC;EACJ;;EClCe,SAAS,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE;EAC/D,EAAE,IAAI,EAAE,QAAQ,YAAY,WAAW,CAAC,EAAE;EAC1C,IAAI,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;EAC7D,GAAG;EACH;;ECJA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACzC,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EAC9B,IAAI,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;EAC3D,IAAI,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;EACnC,IAAI,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC1D,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;EAC9D,GAAG;EACH,CAAC;AACD;EACe,SAAS,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;EAC3E,EAAE,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;EACvE,EAAE,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;EAC/D,EAAE,OAAO,WAAW,CAAC;EACrB;;ECde,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;EACzD,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;EAClB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;EACpC,MAAM,KAAK,EAAE,KAAK;EAClB,MAAM,UAAU,EAAE,IAAI;EACtB,MAAM,YAAY,EAAE,IAAI;EACxB,MAAM,QAAQ,EAAE,IAAI;EACpB,KAAK,CAAC,CAAC;EACP,GAAG,MAAM;EACT,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACrB,GAAG;AACH;EACA,EAAE,OAAO,GAAG,CAAC;EACb;;ECbe,SAAS,6BAA6B,CAAC,MAAM,EAAE,QAAQ,EAAE;EACxE,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;EAChC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;EAClB,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACvC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACb;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS;EAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,OAAO,MAAM,CAAC;EAChB;;ECZe,SAAS,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE;EACnE,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;EAChC,EAAE,IAAI,MAAM,GAAGC,6BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;EAC9D,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACb;EACA,EAAE,IAAI,MAAM,CAAC,qBAAqB,EAAE;EACpC,IAAI,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAChE;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAClD,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;EAChC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS;EAC/C,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS;EAC7E,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAChC,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,MAAM,CAAC;EAChB;;EClBe,SAAS,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE;EACtD,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;AAC3G;EACA,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,OAAO;EACzB,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;EAChB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AACjB;EACA,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACb;EACA,EAAE,IAAI;EACN,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE;EACtE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B;EACA,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM;EACxC,KAAK;EACL,GAAG,CAAC,OAAO,GAAG,EAAE;EAChB,IAAI,EAAE,GAAG,IAAI,CAAC;EACd,IAAI,EAAE,GAAG,GAAG,CAAC;EACb,GAAG,SAAS;EACZ,IAAI,IAAI;EACR,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;EACtD,KAAK,SAAS;EACd,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;EACvB,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,IAAI,CAAC;EACd;;ECxBe,SAAS,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE;EAC/C,EAAE,OAAON,eAAc,CAAC,GAAG,CAAC,IAAIO,qBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIL,6BAA0B,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIC,gBAAe,EAAE,CAAC;EACxH;;ECNe,SAAS,cAAc,CAAC,QAAQ,EAAE;EACjD,EAAE,IAAI,MAAM,CAAC;AACb;EACA,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACrC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;EACtE,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EAC9E,GAAG;AACH;EACA,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;EAC3D,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;EACtD,EAAE,IAAI,MAAM,IAAI,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;EAC1E,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC/B;;ECZe,SAAS,WAAW,CAAC,KAAK,EAAE;EAC3C,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;EACvB;;ECDe,SAAS,oBAAoB,CAAC,KAAK,EAAE;EACpD,EAAE,OAAO,IAAIK,WAAU,CAAC,KAAK,CAAC,CAAC;EAC/B;;ECFe,SAAS,cAAc,CAAC,GAAG,EAAE;EAC5C,EAAE,IAAI,KAAK,EAAE,IAAI,CAAC;AAClB;EACA,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;EAC1B,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;EAClD,MAAM,IAAI,OAAO,GAAG;EACpB,QAAQ,GAAG,EAAE,GAAG;EAChB,QAAQ,GAAG,EAAE,GAAG;EAChB,QAAQ,OAAO,EAAE,OAAO;EACxB,QAAQ,MAAM,EAAE,MAAM;EACtB,QAAQ,IAAI,EAAE,IAAI;EAClB,OAAO,CAAC;AACR;EACA,MAAM,IAAI,IAAI,EAAE;EAChB,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;EACnC,OAAO,MAAM;EACb,QAAQ,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;EAC/B,QAAQ,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EACzB,OAAO;EACP,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;EAC5B,IAAI,IAAI;EACR,MAAM,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACjC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAM,IAAI,YAAY,GAAG,KAAK,YAAYA,WAAU,CAAC;EACrD,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;EAChF,QAAQ,IAAI,YAAY,EAAE;EAC1B,UAAU,MAAM,CAAC,GAAG,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;EAC5D,UAAU,OAAO;EACjB,SAAS;AACT;EACA,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;EACvD,OAAO,EAAE,UAAU,GAAG,EAAE;EACxB,QAAQ,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC7B,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,OAAO,GAAG,EAAE;EAClB,MAAM,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC3B,KAAK;EACL,GAAG;AACH;EACA,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;EAC/B,IAAI,QAAQ,IAAI;EAChB,MAAM,KAAK,QAAQ;EACnB,QAAQ,KAAK,CAAC,OAAO,CAAC;EACtB,UAAU,KAAK,EAAE,KAAK;EACtB,UAAU,IAAI,EAAE,IAAI;EACpB,SAAS,CAAC,CAAC;EACX,QAAQ,MAAM;AACd;EACA,MAAM,KAAK,OAAO;EAClB,QAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EAC5B,QAAQ,MAAM;AACd;EACA,MAAM;EACN,QAAQ,KAAK,CAAC,OAAO,CAAC;EACtB,UAAU,KAAK,EAAE,KAAK;EACtB,UAAU,IAAI,EAAE,KAAK;EACrB,SAAS,CAAC,CAAC;EACX,QAAQ,MAAM;EACd,KAAK;AACL;EACA,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AACvB;EACA,IAAI,IAAI,KAAK,EAAE;EACf,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;EACnC,KAAK,MAAM;EACX,MAAM,IAAI,GAAG,IAAI,CAAC;EAClB,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACtB;EACA,EAAE,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;EAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;EAC/B,GAAG;EACH,CAAC;AACD;EACA,cAAc,CAAC,SAAS,CAAC,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,aAAa,IAAI,iBAAiB,CAAC,GAAG,YAAY;EAClH,EAAE,OAAO,IAAI,CAAC;EACd,CAAC,CAAC;AACF;EACA,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,GAAG,EAAE;EAC/C,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACnC,CAAC,CAAC;AACF;EACA,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,UAAU,GAAG,EAAE;EACnD,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EACpC,CAAC,CAAC;AACF;EACA,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,GAAG,EAAE;EACpD,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EACrC,CAAC;;EC7Fc,SAAS,mBAAmB,CAAC,EAAE,EAAE;EAChD,EAAE,OAAO,YAAY;EACrB,IAAI,OAAO,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;EACzD,GAAG,CAAC;EACJ;;;;;;;;;;;;ECEA,IAAI,OAAO,IAAI,UAAU,OAAO,EAAE;AAElC;EACA,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;EAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC;EACjC,EAAE,IAAIC,WAAS,CAAC;EAChB,EAAE,IAAI,OAAO,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;EAC3D,EAAE,IAAI,cAAc,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC;EACxD,EAAE,IAAI,mBAAmB,GAAG,OAAO,CAAC,aAAa,IAAI,iBAAiB,CAAC;EACvE,EAAE,IAAI,iBAAiB,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC;AACjE;EACA,EAAE,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;EACnC,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;EACpC,MAAM,KAAK,EAAE,KAAK;EAClB,MAAM,UAAU,EAAE,IAAI;EACtB,MAAM,YAAY,EAAE,IAAI;EACxB,MAAM,QAAQ,EAAE,IAAI;EACpB,KAAK,CAAC,CAAC;EACP,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;EACpB,GAAG;EACH,EAAE,IAAI;EACN;EACA,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EACnB,GAAG,CAAC,OAAO,GAAG,EAAE;EAChB,IAAI,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;EACvC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAC9B,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;EACrD;EACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAI,OAAO,CAAC,SAAS,YAAY,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;EACjG,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;EAC5D,IAAI,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AACjD;EACA;EACA;EACA,IAAI,SAAS,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACjE;EACA,IAAI,OAAO,SAAS,CAAC;EACrB,GAAG;EACH,EAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,SAAS,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;EAClC,IAAI,IAAI;EACR,MAAM,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;EACxD,KAAK,CAAC,OAAO,GAAG,EAAE;EAClB,MAAM,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;EACzC,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,sBAAsB,GAAG,gBAAgB,CAAC;EAChD,EAAE,IAAI,sBAAsB,GAAG,gBAAgB,CAAC;EAChD,EAAE,IAAI,iBAAiB,GAAG,WAAW,CAAC;EACtC,EAAE,IAAI,iBAAiB,GAAG,WAAW,CAAC;AACtC;EACA;EACA;EACA,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC5B;EACA;EACA;EACA;EACA;EACA,EAAE,SAAS,SAAS,GAAG,EAAE;EACzB,EAAE,SAAS,iBAAiB,GAAG,EAAE;EACjC,EAAE,SAAS,0BAA0B,GAAG,EAAE;AAC1C;EACA;EACA;EACA,EAAE,IAAI,iBAAiB,GAAG,EAAE,CAAC;EAC7B,EAAE,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,YAAY;EACxD,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,CAAC,CAAC;AACL;EACA,EAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;EACvC,EAAE,IAAI,uBAAuB,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;EAC3E,EAAE,IAAI,uBAAuB;EAC7B,MAAM,uBAAuB,KAAK,EAAE;EACpC,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,cAAc,CAAC,EAAE;EAC5D;EACA;EACA,IAAI,iBAAiB,GAAG,uBAAuB,CAAC;EAChD,GAAG;AACH;EACA,EAAE,IAAI,EAAE,GAAG,0BAA0B,CAAC,SAAS;EAC/C,IAAI,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;EAC3D,EAAE,iBAAiB,CAAC,SAAS,GAAG,0BAA0B,CAAC;EAC3D,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,0BAA0B,CAAC,CAAC;EACxD,EAAE,MAAM,CAAC,0BAA0B,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;EACvE,EAAE,iBAAiB,CAAC,WAAW,GAAG,MAAM;EACxC,IAAI,0BAA0B;EAC9B,IAAI,iBAAiB;EACrB,IAAI,mBAAmB;EACvB,GAAG,CAAC;AACJ;EACA;EACA;EACA,EAAE,SAAS,qBAAqB,CAAC,SAAS,EAAE;EAC5C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,EAAE;EACzD,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE;EAC9C,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACzC,OAAO,CAAC,CAAC;EACT,KAAK,CAAC,CAAC;EACP,GAAG;AACH;EACA,EAAE,OAAO,CAAC,mBAAmB,GAAG,SAAS,MAAM,EAAE;EACjD,IAAI,IAAI,IAAI,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC;EAClE,IAAI,OAAO,IAAI;EACf,QAAQ,IAAI,KAAK,iBAAiB;EAClC;EACA;EACA,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,MAAM,mBAAmB;EAC/D,QAAQ,KAAK,CAAC;EACd,GAAG,CAAC;AACJ;EACA,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;EAClC,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE;EAC/B,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;EAChE,KAAK,MAAM;EACX,MAAM,MAAM,CAAC,SAAS,GAAG,0BAA0B,CAAC;EACpD,MAAM,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;EAC7D,KAAK;EACL,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;EACzC,IAAI,OAAO,MAAM,CAAC;EAClB,GAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;EAChC,IAAI,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;EAC5B,GAAG,CAAC;AACJ;EACA,EAAE,SAAS,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE;EACjD,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;EAClD,MAAM,IAAI,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;EAC/D,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAC3B,OAAO,MAAM;EACb,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;EAChC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;EACjC,QAAQ,IAAI,KAAK;EACjB,YAAY,OAAO,KAAK,KAAK,QAAQ;EACrC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;EAC3C,UAAU,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE;EACzE,YAAY,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;EACnD,WAAW,EAAE,SAAS,GAAG,EAAE;EAC3B,YAAY,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;EAClD,WAAW,CAAC,CAAC;EACb,SAAS;AACT;EACA,QAAQ,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE;EACnE;EACA;EACA;EACA,UAAU,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;EACnC,UAAU,OAAO,CAAC,MAAM,CAAC,CAAC;EAC1B,SAAS,EAAE,SAAS,KAAK,EAAE;EAC3B;EACA;EACA,UAAU,OAAO,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;EACzD,SAAS,CAAC,CAAC;EACX,OAAO;EACP,KAAK;AACL;EACA,IAAI,IAAI,eAAe,CAAC;AACxB;EACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;EAClC,MAAM,SAAS,0BAA0B,GAAG;EAC5C,QAAQ,OAAO,IAAI,WAAW,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;EACzD,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;EAC/C,SAAS,CAAC,CAAC;EACX,OAAO;AACP;EACA,MAAM,OAAO,eAAe;EAC5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ,eAAe,GAAG,eAAe,CAAC,IAAI;EAC9C,UAAU,0BAA0B;EACpC;EACA;EACA,UAAU,0BAA0B;EACpC,SAAS,GAAG,0BAA0B,EAAE,CAAC;EACzC,KAAK;AACL;EACA;EACA;EACA,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;EACjD,EAAE,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,mBAAmB,EAAE,YAAY;EACnE,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,CAAC,CAAC;EACL,EAAE,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;AACxC;EACA;EACA;EACA;EACA,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE;EAC7E,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;AACtD;EACA,IAAI,IAAI,IAAI,GAAG,IAAI,aAAa;EAChC,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC;EAC/C,MAAM,WAAW;EACjB,KAAK,CAAC;AACN;EACA,IAAI,OAAO,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC;EAC/C,QAAQ,IAAI;EACZ,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE;EAC1C,UAAU,OAAO,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;EAC1D,SAAS,CAAC,CAAC;EACX,GAAG,CAAC;AACJ;EACA,EAAE,SAAS,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;EACpD,IAAI,IAAI,KAAK,GAAG,sBAAsB,CAAC;AACvC;EACA,IAAI,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;EACxC,MAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE;EACvC,QAAQ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;EACxD,OAAO;AACP;EACA,MAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE;EACvC,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE;EAChC,UAAU,MAAM,GAAG,CAAC;EACpB,SAAS;AACT;EACA;EACA;EACA,QAAQ,OAAO,UAAU,EAAE,CAAC;EAC5B,OAAO;AACP;EACA,MAAM,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;EAC9B,MAAM,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACxB;EACA,MAAM,OAAO,IAAI,EAAE;EACnB,QAAQ,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;EACxC,QAAQ,IAAI,QAAQ,EAAE;EACtB,UAAU,IAAI,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;EACtE,UAAU,IAAI,cAAc,EAAE;EAC9B,YAAY,IAAI,cAAc,KAAK,gBAAgB,EAAE,SAAS;EAC9D,YAAY,OAAO,cAAc,CAAC;EAClC,WAAW;EACX,SAAS;AACT;EACA,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;EACvC;EACA;EACA,UAAU,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AACrD;EACA,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;EAC/C,UAAU,IAAI,KAAK,KAAK,sBAAsB,EAAE;EAChD,YAAY,KAAK,GAAG,iBAAiB,CAAC;EACtC,YAAY,MAAM,OAAO,CAAC,GAAG,CAAC;EAC9B,WAAW;AACX;EACA,UAAU,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjD;EACA,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;EAChD,UAAU,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;EAChD,SAAS;AACT;EACA,QAAQ,KAAK,GAAG,iBAAiB,CAAC;AAClC;EACA,QAAQ,IAAI,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;EACtD,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;EACtC;EACA;EACA,UAAU,KAAK,GAAG,OAAO,CAAC,IAAI;EAC9B,cAAc,iBAAiB;EAC/B,cAAc,sBAAsB,CAAC;AACrC;EACA,UAAU,IAAI,MAAM,CAAC,GAAG,KAAK,gBAAgB,EAAE;EAC/C,YAAY,SAAS;EACrB,WAAW;AACX;EACA,UAAU,OAAO;EACjB,YAAY,KAAK,EAAE,MAAM,CAAC,GAAG;EAC7B,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI;EAC9B,WAAW,CAAC;AACZ;EACA,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EAC5C,UAAU,KAAK,GAAG,iBAAiB,CAAC;EACpC;EACA;EACA,UAAU,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;EACnC,UAAU,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;EACnC,SAAS;EACT,OAAO;EACP,KAAK,CAAC;EACN,GAAG;AACH;EACA;EACA;EACA;EACA;EACA,EAAE,SAAS,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE;EAClD,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;EACnD,IAAI,IAAI,MAAM,KAAKA,WAAS,EAAE;EAC9B;EACA;EACA,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9B;EACA,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;EACtC;EACA,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;EACzC;EACA;EACA,UAAU,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;EACpC,UAAU,OAAO,CAAC,GAAG,GAAGA,WAAS,CAAC;EAClC,UAAU,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD;EACA,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE;EAC1C;EACA;EACA,YAAY,OAAO,gBAAgB,CAAC;EACpC,WAAW;EACX,SAAS;AACT;EACA,QAAQ,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;EACjC,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,SAAS;EACnC,UAAU,gDAAgD,CAAC,CAAC;EAC5D,OAAO;AACP;EACA,MAAM,OAAO,gBAAgB,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAClE;EACA,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EACjC,MAAM,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;EAC/B,MAAM,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;EAC/B,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC9B,MAAM,OAAO,gBAAgB,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;AAC1B;EACA,IAAI,IAAI,EAAE,IAAI,EAAE;EAChB,MAAM,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;EAC/B,MAAM,OAAO,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;EACtE,MAAM,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC9B,MAAM,OAAO,gBAAgB,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;EACnB;EACA;EACA,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAChD;EACA;EACA,MAAM,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;EACvC,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;EAChC,QAAQ,OAAO,CAAC,GAAG,GAAGA,WAAS,CAAC;EAChC,OAAO;AACP;EACA,KAAK,MAAM;EACX;EACA,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK;AACL;EACA;EACA;EACA,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;EAC5B,IAAI,OAAO,gBAAgB,CAAC;EAC5B,GAAG;AACH;EACA;EACA;EACA,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAC5B;EACA,EAAE,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAC7C;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW;EACxC,IAAI,OAAO,IAAI,CAAC;EAChB,GAAG,CAAC,CAAC;AACL;EACA,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW;EACpC,IAAI,OAAO,oBAAoB,CAAC;EAChC,GAAG,CAAC,CAAC;AACL;EACA,EAAE,SAAS,YAAY,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC;EACA,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;EACnB,MAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAK;AACL;EACA,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;EACnB,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACjC,MAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EAC/B,KAAK;AACL;EACA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;EAChC,GAAG;AACH;EACA,EAAE,SAAS,aAAa,CAAC,KAAK,EAAE;EAChC,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;EACxC,IAAI,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;EAC3B,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC;EACtB,IAAI,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;EAC9B,GAAG;AACH;EACA,EAAE,SAAS,OAAO,CAAC,WAAW,EAAE;EAChC;EACA;EACA;EACA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;EAC3C,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;EAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;EACrB,GAAG;AACH;EACA,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,MAAM,EAAE;EAClC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;EAClB,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;EAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACrB,KAAK;EACL,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACnB;EACA;EACA;EACA,IAAI,OAAO,SAAS,IAAI,GAAG;EAC3B,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE;EAC1B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;EAC7B,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE;EAC3B,UAAU,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;EAC3B,UAAU,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC5B,UAAU,OAAO,IAAI,CAAC;EACtB,SAAS;EACT,OAAO;AACP;EACA;EACA;EACA;EACA,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACvB,MAAM,OAAO,IAAI,CAAC;EAClB,KAAK,CAAC;EACN,GAAG,CAAC;AACJ;EACA,EAAE,SAAS,MAAM,CAAC,QAAQ,EAAE;EAC5B,IAAI,IAAI,QAAQ,EAAE;EAClB,MAAM,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;EACpD,MAAM,IAAI,cAAc,EAAE;EAC1B,QAAQ,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EAC7C,OAAO;AACP;EACA,MAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;EAC/C,QAAQ,OAAO,QAAQ,CAAC;EACxB,OAAO;AACP;EACA,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;EACnC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,IAAI,GAAG;EAC3C,UAAU,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;EACxC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;EAC1C,cAAc,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACvC,cAAc,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAChC,cAAc,OAAO,IAAI,CAAC;EAC1B,aAAa;EACb,WAAW;AACX;EACA,UAAU,IAAI,CAAC,KAAK,GAAGA,WAAS,CAAC;EACjC,UAAU,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3B;EACA,UAAU,OAAO,IAAI,CAAC;EACtB,SAAS,CAAC;AACV;EACA,QAAQ,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EAChC,OAAO;EACP,KAAK;AACL;EACA;EACA,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;EAChC,GAAG;EACH,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B;EACA,EAAE,SAAS,UAAU,GAAG;EACxB,IAAI,OAAO,EAAE,KAAK,EAAEA,WAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;EAC5C,GAAG;AACH;EACA,EAAE,OAAO,CAAC,SAAS,GAAG;EACtB,IAAI,WAAW,EAAE,OAAO;AACxB;EACA,IAAI,KAAK,EAAE,SAAS,aAAa,EAAE;EACnC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EACpB,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;EACpB;EACA;EACA,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAGA,WAAS,CAAC;EACzC,MAAM,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EACxB,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B;EACA,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC3B,MAAM,IAAI,CAAC,GAAG,GAAGA,WAAS,CAAC;AAC3B;EACA,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7C;EACA,MAAM,IAAI,CAAC,aAAa,EAAE;EAC1B,QAAQ,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;EAC/B;EACA,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;EACpC,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;EACrC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;EACtC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAGA,WAAS,CAAC;EACnC,WAAW;EACX,SAAS;EACT,OAAO;EACP,KAAK;AACL;EACA,IAAI,IAAI,EAAE,WAAW;EACrB,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB;EACA,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACzC,MAAM,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;EAC5C,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;EACvC,QAAQ,MAAM,UAAU,CAAC,GAAG,CAAC;EAC7B,OAAO;AACP;EACA,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC;EACvB,KAAK;AACL;EACA,IAAI,iBAAiB,EAAE,SAAS,SAAS,EAAE;EAC3C,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;EACrB,QAAQ,MAAM,SAAS,CAAC;EACxB,OAAO;AACP;EACA,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC;EACzB,MAAM,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;EACnC,QAAQ,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;EAC9B,QAAQ,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;EAC/B,QAAQ,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B;EACA,QAAQ,IAAI,MAAM,EAAE;EACpB;EACA;EACA,UAAU,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;EAClC,UAAU,OAAO,CAAC,GAAG,GAAGA,WAAS,CAAC;EAClC,SAAS;AACT;EACA,QAAQ,OAAO,CAAC,EAAE,MAAM,CAAC;EACzB,OAAO;AACP;EACA,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;AACtC;EACA,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;EACrC;EACA;EACA;EACA,UAAU,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;EAC/B,SAAS;AACT;EACA,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;EACvC,UAAU,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;EACxD,UAAU,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC5D;EACA,UAAU,IAAI,QAAQ,IAAI,UAAU,EAAE;EACtC,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE;EAC5C,cAAc,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;EAClD,aAAa,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE;EACrD,cAAc,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;EAC9C,aAAa;AACb;EACA,WAAW,MAAM,IAAI,QAAQ,EAAE;EAC/B,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE;EAC5C,cAAc,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;EAClD,aAAa;AACb;EACA,WAAW,MAAM,IAAI,UAAU,EAAE;EACjC,YAAY,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE;EAC9C,cAAc,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;EAC9C,aAAa;AACb;EACA,WAAW,MAAM;EACjB,YAAY,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;EACtE,WAAW;EACX,SAAS;EACT,OAAO;EACP,KAAK;AACL;EACA,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE,GAAG,EAAE;EAChC,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI;EACrC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;EAC5C,YAAY,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE;EAC1C,UAAU,IAAI,YAAY,GAAG,KAAK,CAAC;EACnC,UAAU,MAAM;EAChB,SAAS;EACT,OAAO;AACP;EACA,MAAM,IAAI,YAAY;EACtB,WAAW,IAAI,KAAK,OAAO;EAC3B,WAAW,IAAI,KAAK,UAAU,CAAC;EAC/B,UAAU,YAAY,CAAC,MAAM,IAAI,GAAG;EACpC,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,EAAE;EAC1C;EACA;EACA,QAAQ,YAAY,GAAG,IAAI,CAAC;EAC5B,OAAO;AACP;EACA,MAAM,IAAI,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC;EAC/D,MAAM,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;EACzB,MAAM,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB;EACA,MAAM,IAAI,YAAY,EAAE;EACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC;EAC5C,QAAQ,OAAO,gBAAgB,CAAC;EAChC,OAAO;AACP;EACA,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACnC,KAAK;AACL;EACA,IAAI,QAAQ,EAAE,SAAS,MAAM,EAAE,QAAQ,EAAE;EACzC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EACnC,QAAQ,MAAM,MAAM,CAAC,GAAG,CAAC;EACzB,OAAO;AACP;EACA,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;EACjC,UAAU,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;EACtC,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;EAC/B,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC3C,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;EAC1C,QAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;EAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;EAC1B,OAAO,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,EAAE;EACvD,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EAC7B,OAAO;AACP;EACA,MAAM,OAAO,gBAAgB,CAAC;EAC9B,KAAK;AACL;EACA,IAAI,MAAM,EAAE,SAAS,UAAU,EAAE;EACjC,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;EAC7C,UAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC1D,UAAU,aAAa,CAAC,KAAK,CAAC,CAAC;EAC/B,UAAU,OAAO,gBAAgB,CAAC;EAClC,SAAS;EACT,OAAO;EACP,KAAK;AACL;EACA,IAAI,OAAO,EAAE,SAAS,MAAM,EAAE;EAC9B,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EAC5D,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACvC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;EACrC,UAAU,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;EACxC,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;EACvC,YAAY,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;EACpC,YAAY,aAAa,CAAC,KAAK,CAAC,CAAC;EACjC,WAAW;EACX,UAAU,OAAO,MAAM,CAAC;EACxB,SAAS;EACT,OAAO;AACP;EACA;EACA;EACA,MAAM,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;EAC/C,KAAK;AACL;EACA,IAAI,aAAa,EAAE,SAAS,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;EAC3D,MAAM,IAAI,CAAC,QAAQ,GAAG;EACtB,QAAQ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;EAClC,QAAQ,UAAU,EAAE,UAAU;EAC9B,QAAQ,OAAO,EAAE,OAAO;EACxB,OAAO,CAAC;AACR;EACA,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;EAClC;EACA;EACA,QAAQ,IAAI,CAAC,GAAG,GAAGA,WAAS,CAAC;EAC7B,OAAO;AACP;EACA,MAAM,OAAO,gBAAgB,CAAC;EAC9B,KAAK;EACL,GAAG,CAAC;AACJ;EACA;EACA;EACA;EACA;EACA,EAAE,OAAO,OAAO,CAAC;AACjB;EACA,CAAC;EACD;EACA;EACA;EACA;EACA,EAA+B,MAAM,CAAC,OAAO,CAAK;EAClD,CAAC,CAAC,CAAC;AACH;EACA,IAAI;EACJ,EAAE,kBAAkB,GAAG,OAAO,CAAC;EAC/B,CAAC,CAAC,OAAO,oBAAoB,EAAE;EAC/B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;EACtC,IAAI,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC;EAC5C,GAAG,MAAM;EACT,IAAI,QAAQ,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC;EACrD,GAAG;EACH;;;MCjvBA,WAAc,GAAGC,eAA8B;;ACA/C,iBAAe,CAAC,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM;EACtD,EAAE,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI;EACpC,EAAE,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,EAAE;;ECF7C,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,IAAI,SAAS,GAAG,EAAE,CAAC;EACnB,IAAI,GAAG,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;EACjE,IAAI,MAAM,GAAG,KAAK,CAAC;EACnB,SAASC,MAAI,IAAI;EACjB,EAAE,MAAM,GAAG,IAAI,CAAC;EAChB,EAAE,IAAI,IAAI,GAAG,kEAAkE,CAAC;EAChF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EACnD,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACtC,GAAG;AACH;EACA,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACpC,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;EACpC,CAAC;AACD;EACA,SAAS,WAAW,EAAE,GAAG,EAAE;EAC3B,EAAE,IAAI,CAAC,MAAM,EAAE;EACf,IAAIA,MAAI,EAAE,CAAC;EACX,GAAG;EACH,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC;EACtC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACvB;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;EACnB,IAAI,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;EACrE,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACzE;EACA;EACA,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AAC5C;EACA;EACA,EAAE,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;EACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;EAC5C,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACvK,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC;EAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;EACjC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,IAAI,YAAY,KAAK,CAAC,EAAE;EAC1B,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EACxF,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,GAAG,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;EACjC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EACnI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;EACjC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,eAAe,EAAE,GAAG,EAAE;EAC/B,EAAE,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;EAC3G,CAAC;AACD;EACA,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACzC,EAAE,IAAI,GAAG,CAAC;EACV,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;EAClB,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;EACvC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAClE,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;EACtC,GAAG;EACH,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;EACxB,CAAC;AACD;EACA,SAAS,aAAa,EAAE,KAAK,EAAE;EAC/B,EAAE,IAAI,CAAC,MAAM,EAAE;EACf,IAAIA,MAAI,EAAE,CAAC;EACX,GAAG;EACH,EAAE,IAAI,GAAG,CAAC;EACV,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;EACzB,EAAE,IAAI,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;EAC3B,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;EAClB,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;EACjB,EAAE,IAAI,cAAc,GAAG,KAAK,CAAC;AAC7B;EACA;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,cAAc,EAAE;EAC1E,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;EACjG,GAAG;AACH;EACA;EACA,EAAE,IAAI,UAAU,KAAK,CAAC,EAAE;EACxB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;EAC/B,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EACxC,IAAI,MAAM,IAAI,IAAI,CAAC;EACnB,GAAG,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;EAC/B,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EACnD,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;EAChC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EACxC,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;EACxC,IAAI,MAAM,IAAI,GAAG,CAAC;EAClB,GAAG;AACH;EACA,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB;EACA,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;EACvB,CAAC;AACD;EACA,SAASC,MAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EACnD,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;EACX,EAAE,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;EACnC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;EAC7B,EAAE,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;EACxB,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;EACjB,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7B;EACA,EAAE,CAAC,IAAI,CAAC,CAAC;AACT;EACA,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EAChC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACjB,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAC5E;EACA,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;EAChC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;EACjB,EAAE,KAAK,IAAI,IAAI,CAAC;EAChB,EAAE,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAC5E;EACA,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;EACf,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAClB,GAAG,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;EACzB,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;EAC9C,GAAG,MAAM;EACT,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EAClB,GAAG;EACH,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;EACjD,CAAC;AACD;EACA,SAAS,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EAC3D,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACd,EAAE,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;EACnC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;EAC7B,EAAE,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC;EACxB,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACnE,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;EAClC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9D;EACA,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1B;EACA,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,QAAQ,EAAE;EAC1C,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7B,IAAI,CAAC,GAAG,IAAI,CAAC;EACb,GAAG,MAAM;EACT,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;EAC/C,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;EAC3C,MAAM,CAAC,EAAE,CAAC;EACV,MAAM,CAAC,IAAI,CAAC,CAAC;EACb,KAAK;EACL,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;EACxB,MAAM,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;EACtB,KAAK,MAAM;EACX,MAAM,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;EAC3C,KAAK;EACL,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;EACxB,MAAM,CAAC,EAAE,CAAC;EACV,MAAM,CAAC,IAAI,CAAC,CAAC;EACb,KAAK;AACL;EACA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE;EAC3B,MAAM,CAAC,GAAG,CAAC,CAAC;EACZ,MAAM,CAAC,GAAG,IAAI,CAAC;EACf,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;EAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;EACpB,KAAK,MAAM;EACX,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;EAC7D,MAAM,CAAC,GAAG,CAAC,CAAC;EACZ,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;AAClF;EACA,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;EACtB,EAAE,IAAI,IAAI,IAAI,CAAC;EACf,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;AACjF;EACA,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;EACpC,CAAC;AACD;EACA,IAAIC,UAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;AAC3B;EACA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,UAAU,GAAG,EAAE;EAC9C,EAAE,OAAOA,UAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC;EAChD,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA,MAAM,CAAC,mBAAmB,GAAGC,QAAM,CAAC,mBAAmB,KAAK,SAAS;EACrE,IAAIA,QAAM,CAAC,mBAAmB;EAC9B,IAAI,IAAI,CAAC;AAMT;EACA,SAAS,UAAU,IAAI;EACvB,EAAE,OAAO,MAAM,CAAC,mBAAmB;EACnC,MAAM,UAAU;EAChB,MAAM,UAAU;EAChB,CAAC;AACD;EACA,SAAS,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;EACrC,EAAE,IAAI,UAAU,EAAE,GAAG,MAAM,EAAE;EAC7B,IAAI,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC;EACtD,GAAG;EACH,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC;EACA,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;EACtC,GAAG,MAAM;EACT;EACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;EACvB,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;EAChC,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACzB,GAAG;AACH;EACA,EAAE,OAAO,IAAI;EACb,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA,SAAS,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE;EAChD,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC,EAAE;EAChE,IAAI,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC;EACpD,GAAG;AACH;EACA;EACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;EAC9C,MAAM,MAAM,IAAI,KAAK;EACrB,QAAQ,mEAAmE;EAC3E,OAAO;EACP,KAAK;EACL,IAAI,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;EACjC,GAAG;EACH,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC;EAClD,CAAC;AACD;EACA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACvB;EACA;EACA,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;EACjC,EAAE,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;EACnC,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE;EACtD,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACjC,IAAI,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC;EAChE,GAAG;AACH;EACA,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,KAAK,YAAY,WAAW,EAAE;EAC1E,IAAI,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC;EACjE,GAAG;AACH;EACA,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACjC,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC;EACpD,GAAG;AACH;EACA,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;EAChC,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAM,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE;EACzD,EAAE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC;EACpD,CAAC,CAAC;AACF;EACA,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAChC,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;EACpD,EAAE,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;EAChC,CAAC;AACD;EACA,SAAS,UAAU,EAAE,IAAI,EAAE;EAC3B,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAChC,IAAI,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC;EAC3D,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE;EACvB,IAAI,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC;EAChE,GAAG;EACH,CAAC;AACD;EACA,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC5C,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;EACnB,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE;EACjB,IAAI,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;EACnC,GAAG;EACH,EAAE,IAAI,IAAI,KAAK,SAAS,EAAE;EAC1B;EACA;EACA;EACA,IAAI,OAAO,OAAO,QAAQ,KAAK,QAAQ;EACvC,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;EACrD,QAAQ,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EAC3C,GAAG;EACH,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;EACjC,CAAC;AACD;EACA;EACA;EACA;EACA;EACA,MAAM,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC/C,EAAE,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;EAC1C,CAAC,CAAC;AACF;EACA,SAAS,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;EAClC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;EACnB,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9D,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;EACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;EACnC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EAClB,KAAK;EACL,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC;AACD;EACA;EACA;EACA;EACA,MAAM,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;EACrC,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;EAChC,CAAC,CAAC;EACF;EACA;EACA;EACA,MAAM,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;EACzC,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;EAChC,CAAC,CAAC;AACF;EACA,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC7C,EAAE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE;EACvD,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,GAAG;AACH;EACA,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;EACpC,IAAI,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC;EACrE,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC;EACA,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C;EACA,EAAE,IAAI,MAAM,KAAK,MAAM,EAAE;EACzB;EACA;EACA;EACA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;EACjC,GAAG;AACH;EACA,EAAE,OAAO,IAAI;EACb,CAAC;AACD;EACA,SAAS,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE;EACrC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EAChE,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACpC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC;AACD;EACA,SAAS,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;EAC3D,EAAE,KAAK,CAAC,UAAU,CAAC;AACnB;EACA,EAAE,IAAI,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;EACvD,IAAI,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC;EACvD,GAAG;AACH;EACA,EAAE,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE;EACrD,IAAI,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC;EACvD,GAAG;AACH;EACA,EAAE,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;EACxD,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;EAClC,GAAG,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE;EACnC,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;EAC9C,GAAG,MAAM;EACT,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;EACtD,GAAG;AACH;EACA,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC;EACA,IAAI,IAAI,GAAG,KAAK,CAAC;EACjB,IAAI,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;EACtC,GAAG,MAAM;EACT;EACA,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;EACtC,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC;AACD;EACA,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;EAChC,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;EAC7B,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;EACtC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnC;EACA,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;EAC3B,MAAM,OAAO,IAAI;EACjB,KAAK;AACL;EACA,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;EAC9B,IAAI,OAAO,IAAI;EACf,GAAG;AACH;EACA,EAAE,IAAI,GAAG,EAAE;EACX,IAAI,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW;EAC3C,QAAQ,GAAG,CAAC,MAAM,YAAY,WAAW,KAAK,QAAQ,IAAI,GAAG,EAAE;EAC/D,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;EAC/D,QAAQ,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;EACpC,OAAO;EACP,MAAM,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;EACrC,KAAK;AACL;EACA,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;EACpD,MAAM,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;EAC1C,KAAK;EACL,GAAG;AACH;EACA,EAAE,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC;EAC3G,CAAC;AACD;EACA,SAAS,OAAO,EAAE,MAAM,EAAE;EAC1B;EACA;EACA,EAAE,IAAI,MAAM,IAAI,UAAU,EAAE,EAAE;EAC9B,IAAI,MAAM,IAAI,UAAU,CAAC,iDAAiD;EAC1E,yBAAyB,UAAU,GAAG,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;EAC3E,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC;EAQD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC3B,SAAS,gBAAgB,EAAE,CAAC,EAAE;EAC9B,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;EACrC,CAAC;AACD;EACA,MAAM,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;EACzC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;EACpD,IAAI,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;EACpD,GAAG;AACH;EACA,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;EACnB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACnB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EACtD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;EACvB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACf,MAAM,KAAK;EACX,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;EACrB,EAAE,OAAO,CAAC;EACV,CAAC,CAAC;AACF;EACA,MAAM,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE;EACnD,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;EACxC,IAAI,KAAK,KAAK,CAAC;EACf,IAAI,KAAK,MAAM,CAAC;EAChB,IAAI,KAAK,OAAO,CAAC;EACjB,IAAI,KAAK,OAAO,CAAC;EACjB,IAAI,KAAK,QAAQ,CAAC;EAClB,IAAI,KAAK,QAAQ,CAAC;EAClB,IAAI,KAAK,QAAQ,CAAC;EAClB,IAAI,KAAK,MAAM,CAAC;EAChB,IAAI,KAAK,OAAO,CAAC;EACjB,IAAI,KAAK,SAAS,CAAC;EACnB,IAAI,KAAK,UAAU;EACnB,MAAM,OAAO,IAAI;EACjB,IAAI;EACJ,MAAM,OAAO,KAAK;EAClB,GAAG;EACH,CAAC,CAAC;AACF;EACA,MAAM,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EAC/C,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;EACtB,IAAI,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;EACtE,GAAG;AACH;EACA,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;EACzB,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;EAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;EACf,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACtC,MAAM,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;EAC/B,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;EAC1C,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACpC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACtB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;EAChC,MAAM,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;EACxE,KAAK;EACL,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAC1B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,MAAM;EACf,CAAC,CAAC;AACF;EACA,SAAS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvC,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE;EAChC,IAAI,OAAO,MAAM,CAAC,MAAM;EACxB,GAAG;EACH,EAAE,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,UAAU;EACpF,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,WAAW,CAAC,EAAE;EACrE,IAAI,OAAO,MAAM,CAAC,UAAU;EAC5B,GAAG;EACH,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;EAClC,IAAI,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;EACzB,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;EAC1B,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC;AACzB;EACA;EACA,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;EAC1B,EAAE,SAAS;EACX,IAAI,QAAQ,QAAQ;EACpB,MAAM,KAAK,OAAO,CAAC;EACnB,MAAM,KAAK,QAAQ,CAAC;EACpB,MAAM,KAAK,QAAQ;EACnB,QAAQ,OAAO,GAAG;EAClB,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO,CAAC;EACnB,MAAM,KAAK,SAAS;EACpB,QAAQ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM;EACzC,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO,CAAC;EACnB,MAAM,KAAK,SAAS,CAAC;EACrB,MAAM,KAAK,UAAU;EACrB,QAAQ,OAAO,GAAG,GAAG,CAAC;EACtB,MAAM,KAAK,KAAK;EAChB,QAAQ,OAAO,GAAG,KAAK,CAAC;EACxB,MAAM,KAAK,QAAQ;EACnB,QAAQ,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM;EAC3C,MAAM;EACN,QAAQ,IAAI,WAAW,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM;EAC1D,QAAQ,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC;EACjD,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,CAAC;EACD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B;EACA,SAAS,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;EAC7C,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;AAC1B;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE;EACxC,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,GAAG;EACH;EACA;EACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;EAC3B,IAAI,OAAO,EAAE;EACb,GAAG;AACH;EACA,EAAE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;EAC9C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACtB,GAAG;AACH;EACA,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE;EAChB,IAAI,OAAO,EAAE;EACb,GAAG;AACH;EACA;EACA,EAAE,GAAG,MAAM,CAAC,CAAC;EACb,EAAE,KAAK,MAAM,CAAC,CAAC;AACf;EACA,EAAE,IAAI,GAAG,IAAI,KAAK,EAAE;EACpB,IAAI,OAAO,EAAE;EACb,GAAG;AACH;EACA,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;AACnC;EACA,EAAE,OAAO,IAAI,EAAE;EACf,IAAI,QAAQ,QAAQ;EACpB,MAAM,KAAK,KAAK;EAChB,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AACzC;EACA,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO;EAClB,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAC1C;EACA,MAAM,KAAK,OAAO;EAClB,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAC3C;EACA,MAAM,KAAK,QAAQ,CAAC;EACpB,MAAM,KAAK,QAAQ;EACnB,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAC5C;EACA,MAAM,KAAK,QAAQ;EACnB,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAC5C;EACA,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO,CAAC;EACnB,MAAM,KAAK,SAAS,CAAC;EACrB,MAAM,KAAK,UAAU;EACrB,QAAQ,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;AAC7C;EACA,MAAM;EACN,QAAQ,IAAI,WAAW,EAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;EAC7E,QAAQ,QAAQ,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;EACjD,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,CAAC;AACD;EACA;EACA;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;AAClC;EACA,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACxB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACf,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACd,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACX,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC7C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;EACrB,IAAI,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC;EACrE,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;EACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC7C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;EACrB,IAAI,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC;EACrE,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;EACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC7C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,EAAE,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;EACrB,IAAI,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC;EACrE,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;EACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,IAAI;EACb,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;EACjD,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAC/B,EAAE,IAAI,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EAC7B,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC;EAC/D,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;EAC5C,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;EAC9C,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;EAC5E,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI;EAC7B,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;EACtC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;EAC/C,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,IAAI,GAAG,GAAG,iBAAiB,CAAC;EAC9B,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACvB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAChE,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC;EAC1C,GAAG;EACH,EAAE,OAAO,UAAU,GAAG,GAAG,GAAG,GAAG;EAC/B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;EACrF,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;EACjC,IAAI,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;EACpD,GAAG;AACH;EACA,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;EAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,GAAG;EACH,EAAE,IAAI,GAAG,KAAK,SAAS,EAAE;EACzB,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACrC,GAAG;EACH,EAAE,IAAI,SAAS,KAAK,SAAS,EAAE;EAC/B,IAAI,SAAS,GAAG,CAAC,CAAC;EAClB,GAAG;EACH,EAAE,IAAI,OAAO,KAAK,SAAS,EAAE;EAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;EAClF,IAAI,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,EAAE;EAC5C,IAAI,OAAO,CAAC;EACZ,GAAG;EACH,EAAE,IAAI,SAAS,IAAI,OAAO,EAAE;EAC5B,IAAI,OAAO,CAAC,CAAC;EACb,GAAG;EACH,EAAE,IAAI,KAAK,IAAI,GAAG,EAAE;EACpB,IAAI,OAAO,CAAC;EACZ,GAAG;AACH;EACA,EAAE,KAAK,MAAM,CAAC,CAAC;EACf,EAAE,GAAG,MAAM,CAAC,CAAC;EACb,EAAE,SAAS,MAAM,CAAC,CAAC;EACnB,EAAE,OAAO,MAAM,CAAC,CAAC;AACjB;EACA,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC;AAC/B;EACA,EAAE,IAAI,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;EAC9B,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;EACtB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B;EACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;EAChD,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5C;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAChC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE;EACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;EACtB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;EACxB,MAAM,KAAK;EACX,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;EACrB,EAAE,OAAO,CAAC;EACV,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE;EACvE;EACA,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACpC;EACA;EACA,EAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;EACtC,IAAI,QAAQ,GAAG,UAAU,CAAC;EAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,GAAG,MAAM,IAAI,UAAU,GAAG,UAAU,EAAE;EACtC,IAAI,UAAU,GAAG,UAAU,CAAC;EAC5B,GAAG,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE;EACvC,IAAI,UAAU,GAAG,CAAC,UAAU,CAAC;EAC7B,GAAG;EACH,EAAE,UAAU,GAAG,CAAC,UAAU,CAAC;EAC3B,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;EACzB;EACA,IAAI,UAAU,GAAG,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EAC/C,GAAG;AACH;EACA;EACA,EAAE,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;EAC9D,EAAE,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE;EACnC,IAAI,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;EACtB,SAAS,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;EACxC,GAAG,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE;EAC7B,IAAI,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC;EAC5B,SAAS,OAAO,CAAC,CAAC;EAClB,GAAG;AACH;EACA;EACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;EACrC,GAAG;AACH;EACA;EACA,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE;EAC7B;EACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,MAAM,OAAO,CAAC,CAAC;EACf,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC;EAC/D,GAAG,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACtC,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;EACrB,IAAI,IAAI,MAAM,CAAC,mBAAmB;EAClC,QAAQ,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE;EAC5D,MAAM,IAAI,GAAG,EAAE;EACf,QAAQ,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;EACzE,OAAO,MAAM;EACb,QAAQ,OAAO,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;EAC7E,OAAO;EACP,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC;EACnE,GAAG;AACH;EACA,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;EAC7D,CAAC;AACD;EACA,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE;EAC5D,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;EACpB,EAAE,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;EAC7B,EAAE,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AAC7B;EACA,EAAE,IAAI,QAAQ,KAAK,SAAS,EAAE;EAC9B,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,IAAI,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO;EACnD,QAAQ,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,EAAE;EAC3D,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;EAC5C,QAAQ,OAAO,CAAC,CAAC;EACjB,OAAO;EACP,MAAM,SAAS,GAAG,CAAC,CAAC;EACpB,MAAM,SAAS,IAAI,CAAC,CAAC;EACrB,MAAM,SAAS,IAAI,CAAC,CAAC;EACrB,MAAM,UAAU,IAAI,CAAC,CAAC;EACtB,KAAK;EACL,GAAG;AACH;EACA,EAAE,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;EACzB,IAAI,IAAI,SAAS,KAAK,CAAC,EAAE;EACzB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC;EACnB,KAAK,MAAM;EACX,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC;EAC5C,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,GAAG,EAAE;EACX,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;EACxB,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EAC7C,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE;EAC9E,QAAQ,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;EAC9C,QAAQ,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,KAAK,SAAS,EAAE,OAAO,UAAU,GAAG,SAAS;EAC3E,OAAO,MAAM;EACb,QAAQ,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;EACnD,QAAQ,UAAU,GAAG,CAAC,CAAC,CAAC;EACxB,OAAO;EACP,KAAK;EACL,GAAG,MAAM;EACT,IAAI,IAAI,UAAU,GAAG,SAAS,GAAG,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;EAC/E,IAAI,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACtC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC;EACvB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EAC1C,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;EAC/C,UAAU,KAAK,GAAG,KAAK,CAAC;EACxB,UAAU,KAAK;EACf,SAAS;EACT,OAAO;EACP,MAAM,IAAI,KAAK,EAAE,OAAO,CAAC;EACzB,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,CAAC,CAAC;EACX,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC1E,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;EACvD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxE,EAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC;EACpE,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EAChF,EAAE,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC;EACrE,CAAC,CAAC;AACF;EACA,SAAS,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAChD,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAC/B,EAAE,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;EACtC,EAAE,IAAI,CAAC,MAAM,EAAE;EACf,IAAI,MAAM,GAAG,SAAS,CAAC;EACvB,GAAG,MAAM;EACT,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;EAC5B,IAAI,IAAI,MAAM,GAAG,SAAS,EAAE;EAC5B,MAAM,MAAM,GAAG,SAAS,CAAC;EACzB,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC7B,EAAE,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC;AACjE;EACA,EAAE,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;EAC3B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACxB,GAAG;EACH,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACnC,IAAI,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;EACvD,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;EAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,CAAC;EACV,CAAC;AACD;EACA,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACjD,EAAE,OAAO,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;EAClF,CAAC;AACD;EACA,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAClD,EAAE,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;EAC9D,CAAC;AACD;EACA,SAAS,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACnD,EAAE,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;EAChD,CAAC;AACD;EACA,SAAS,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACnD,EAAE,OAAO,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;EAC/D,CAAC;AACD;EACA,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACjD,EAAE,OAAO,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;EACrF,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3E;EACA,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;EAC5B,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EACzB,IAAI,MAAM,GAAG,CAAC,CAAC;EACf;EACA,GAAG,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;EACjE,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EACzB,IAAI,MAAM,GAAG,CAAC,CAAC;EACf;EACA,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;EAC/B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACxB,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;EAC1B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EAC1B,MAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;EACpD,KAAK,MAAM;EACX,MAAM,QAAQ,GAAG,MAAM,CAAC;EACxB,MAAM,MAAM,GAAG,SAAS,CAAC;EACzB,KAAK;EACL;EACA,GAAG,MAAM;EACT,IAAI,MAAM,IAAI,KAAK;EACnB,MAAM,yEAAyE;EAC/E,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACvC,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;AACrE;EACA,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;EACjF,IAAI,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC;EAClE,GAAG;AACH;EACA,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;AACnC;EACA,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC;EAC1B,EAAE,SAAS;EACX,IAAI,QAAQ,QAAQ;EACpB,MAAM,KAAK,KAAK;EAChB,QAAQ,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACrD;EACA,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO;EAClB,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACtD;EACA,MAAM,KAAK,OAAO;EAClB,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACvD;EACA,MAAM,KAAK,QAAQ,CAAC;EACpB,MAAM,KAAK,QAAQ;EACnB,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACxD;EACA,MAAM,KAAK,QAAQ;EACnB;EACA,QAAQ,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACxD;EACA,MAAM,KAAK,MAAM,CAAC;EAClB,MAAM,KAAK,OAAO,CAAC;EACnB,MAAM,KAAK,SAAS,CAAC;EACrB,MAAM,KAAK,UAAU;EACrB,QAAQ,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACtD;EACA,MAAM;EACN,QAAQ,IAAI,WAAW,EAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;EAC7E,QAAQ,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,CAAC;EACjD,QAAQ,WAAW,GAAG,IAAI,CAAC;EAC3B,KAAK;EACL,GAAG;EACH,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC7C,EAAE,OAAO;EACT,IAAI,IAAI,EAAE,QAAQ;EAClB,IAAI,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;EAC1D,GAAG;EACH,CAAC,CAAC;AACF;EACA,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACvC,EAAE,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE;EACzC,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC;EAC7B,GAAG,MAAM;EACT,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EAC/C,GAAG;EACH,CAAC;AACD;EACA,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACrC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EAClC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf;EACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;EAChB,EAAE,OAAO,CAAC,GAAG,GAAG,EAAE;EAClB,IAAI,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAC3B,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC;EACzB,IAAI,IAAI,gBAAgB,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC;EACjD,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC;EAC9B,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC;EAC9B,QAAQ,CAAC,CAAC;AACV;EACA,IAAI,IAAI,CAAC,GAAG,gBAAgB,IAAI,GAAG,EAAE;EACrC,MAAM,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;AAC3D;EACA,MAAM,QAAQ,gBAAgB;EAC9B,QAAQ,KAAK,CAAC;EACd,UAAU,IAAI,SAAS,GAAG,IAAI,EAAE;EAChC,YAAY,SAAS,GAAG,SAAS,CAAC;EAClC,WAAW;EACX,UAAU,KAAK;EACf,QAAQ,KAAK,CAAC;EACd,UAAU,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,IAAI,EAAE;EAC5C,YAAY,aAAa,GAAG,CAAC,SAAS,GAAG,IAAI,KAAK,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC;EAC5E,YAAY,IAAI,aAAa,GAAG,IAAI,EAAE;EACtC,cAAc,SAAS,GAAG,aAAa,CAAC;EACxC,aAAa;EACb,WAAW;EACX,UAAU,KAAK;EACf,QAAQ,KAAK,CAAC;EACd,UAAU,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,UAAU,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACjC,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,IAAI,EAAE;EAC3E,YAAY,aAAa,GAAG,CAAC,SAAS,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,KAAK,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC;EACvG,YAAY,IAAI,aAAa,GAAG,KAAK,KAAK,aAAa,GAAG,MAAM,IAAI,aAAa,GAAG,MAAM,CAAC,EAAE;EAC7F,cAAc,SAAS,GAAG,aAAa,CAAC;EACxC,aAAa;EACb,WAAW;EACX,UAAU,KAAK;EACf,QAAQ,KAAK,CAAC;EACd,UAAU,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,UAAU,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EACjC,UAAU,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;EAClC,UAAU,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,IAAI,EAAE;EAC3G,YAAY,aAAa,GAAG,CAAC,SAAS,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,KAAK,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC;EACrI,YAAY,IAAI,aAAa,GAAG,MAAM,IAAI,aAAa,GAAG,QAAQ,EAAE;EACpE,cAAc,SAAS,GAAG,aAAa,CAAC;EACxC,aAAa;EACb,WAAW;EACX,OAAO;EACP,KAAK;AACL;EACA,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;EAC5B;EACA;EACA,MAAM,SAAS,GAAG,MAAM,CAAC;EACzB,MAAM,gBAAgB,GAAG,CAAC,CAAC;EAC3B,KAAK,MAAM,IAAI,SAAS,GAAG,MAAM,EAAE;EACnC;EACA,MAAM,SAAS,IAAI,OAAO,CAAC;EAC3B,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;EAClD,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;EAC7C,KAAK;AACL;EACA,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EACxB,IAAI,CAAC,IAAI,gBAAgB,CAAC;EAC1B,GAAG;AACH;EACA,EAAE,OAAO,qBAAqB,CAAC,GAAG,CAAC;EACnC,CAAC;AACD;EACA;EACA;EACA;EACA,IAAI,oBAAoB,GAAG,MAAM,CAAC;AAClC;EACA,SAAS,qBAAqB,EAAE,UAAU,EAAE;EAC5C,EAAE,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;EAC9B,EAAE,IAAI,GAAG,IAAI,oBAAoB,EAAE;EACnC,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;EACxD,GAAG;AACH;EACA;EACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,OAAO,CAAC,GAAG,GAAG,EAAE;EAClB,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK;EACpC,MAAM,MAAM;EACZ,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC;EACpD,KAAK,CAAC;EACN,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACtC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EACpC,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;EAC9C,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACvC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EACpC,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AACvB;EACA,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;EACrC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AAC9C;EACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EACpC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;EACzB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACxC,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;EACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;EAC5C,IAAI,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;EAC9D,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACrD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;EAClB,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACxC;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;EACjB,IAAI,KAAK,IAAI,GAAG,CAAC;EACjB,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;EAC7B,GAAG,MAAM,IAAI,KAAK,GAAG,GAAG,EAAE;EAC1B,IAAI,KAAK,GAAG,GAAG,CAAC;EAChB,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;EACf,IAAI,GAAG,IAAI,GAAG,CAAC;EACf,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;EACzB,GAAG,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE;EACxB,IAAI,GAAG,GAAG,GAAG,CAAC;EACd,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;AAC/B;EACA,EAAE,IAAI,MAAM,CAAC;EACb,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACvC,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;EACxC,GAAG,MAAM;EACT,IAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;EAC/B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;EAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;EACvC,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAClC,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,MAAM;EACf,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA,SAAS,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;EAC3C,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAClF,EAAE,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC;EAC1F,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACjF,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAC7C,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EAClC,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACjF,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACjD,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC,CAAC;EACxC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,OAAO,UAAU,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAC3C,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;EACnE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;EACrB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAC/C,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;EAC/C,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;EACvB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EAC9B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;EACpC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS;EAClC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE;EAC5B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACrB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC/E,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAC7C,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;EAClC,GAAG;EACH,EAAE,GAAG,IAAI,IAAI,CAAC;AACd;EACA,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC/E,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D;EACA,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC;EACrB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;EAC/B,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAClC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;EACpC,GAAG;EACH,EAAE,GAAG,IAAI,IAAI,CAAC;AACd;EACA,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;EACjE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC;EACnD,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;EACzC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EACnD,EAAE,OAAO,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG,GAAG;EAChD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;EACnD,EAAE,OAAO,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,UAAU,GAAG,GAAG;EAChD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;EACtB,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EAC5B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EAC5B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD;EACA,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;EAC5B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;EAC5B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAC3B,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACtB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAOF,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;EACxC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAOA,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;EACzC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAOA,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;EACxC,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACzE,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,EAAE,OAAOA,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;EACzC,CAAC,CAAC;AACF;EACA,SAAS,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACtD,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;EAChG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC;EAC3F,EAAE,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAC3E,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC1F,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EACnD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;EAC3D,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9B,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC;EAC5C,GAAG;AACH;EACA,EAAE,OAAO,MAAM,GAAG,UAAU;EAC5B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC1F,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;EAC9B,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;EACnD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;EAC3D,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EAClC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC;EAC5C,GAAG;AACH;EACA,EAAE,OAAO,MAAM,GAAG,UAAU;EAC5B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC5E,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;EAC3D,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC7D,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAChC,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,SAAS,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAC9D,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;EAC5C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EACpE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACzE,MAAM,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;EACrC,GAAG;EACH,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EAC7D,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EAC7D,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAClD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,SAAS,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAC9D,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;EAChD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;EACpE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;EACxE,GAAG;EACH,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;EACjE,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAClC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;EACjE,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAClD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;AAChD;EACA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;EACjE,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;EACZ,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EAC9B,EAAE,OAAO,EAAE,CAAC,GAAG,UAAU,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EAC7C,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EAC9D,MAAM,GAAG,GAAG,CAAC,CAAC;EACd,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;EACzD,GAAG;AACH;EACA,EAAE,OAAO,MAAM,GAAG,UAAU;EAC5B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;AAChD;EACA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;EACjE,GAAG;AACH;EACA,EAAE,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;EACzB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;EACd,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;EAClC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE;EACrC,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;EAC9D,MAAM,GAAG,GAAG,CAAC,CAAC;EACd,KAAK;EACL,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;EACzD,GAAG;AACH;EACA,EAAE,OAAO,MAAM,GAAG,UAAU;EAC5B,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC1E,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;EAC/D,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;EAC7D,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;EAC1C,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAChC,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;EACnE,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;EACnE,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACjC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAClD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;EAC3E,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;EACjD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;EACjB,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;EACtB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;EAC3E,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;EAChD,EAAE,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAClC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;EACtC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;EACrC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;EACtC,GAAG,MAAM;EACT,IAAI,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;EAClD,GAAG;EACH,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC,CAAC;AACF;EACA,SAAS,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EAC1D,EAAE,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAC3E,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAC5D,CAAC;AACD;EACA,SAAS,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;EACjE,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EACxC,GAAG;EACH,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EACjD,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;EACxD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;EACzD,CAAC,CAAC;AACF;EACA,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;EAClE,EAAE,IAAI,CAAC,QAAQ,EAAE;EACjB,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;EACxC,GAAG;EACH,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EACjD,EAAE,OAAO,MAAM,GAAG,CAAC;EACnB,CAAC;AACD;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;EACzD,CAAC,CAAC;AACF;EACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAClF,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;EAC1D,CAAC,CAAC;AACF;EACA;EACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;EACxE,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;EACxB,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EAC3C,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;EAChE,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC;EACpC,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;AAC1C;EACA;EACA,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE,OAAO,CAAC;EAC7B,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC;AACxD;EACA;EACA,EAAE,IAAI,WAAW,GAAG,CAAC,EAAE;EACvB,IAAI,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC;EACrD,GAAG;EACH,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC;EAC1F,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC;AAC9D;EACA;EACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EAC3C,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,GAAG,GAAG,KAAK,EAAE;EACjD,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;EACxB,EAAE,IAAI,CAAC,CAAC;AACR;EACA,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG,WAAW,IAAI,WAAW,GAAG,GAAG,EAAE;EACnE;EACA,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;EACnC,MAAM,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAChD,KAAK;EACL,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;EACxD;EACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAC9B,MAAM,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;EAChD,KAAK;EACL,GAAG,MAAM;EACT,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;EACjC,MAAM,MAAM;EACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC;EACvC,MAAM,WAAW;EACjB,KAAK,CAAC;EACN,GAAG;AACH;EACA,EAAE,OAAO,GAAG;EACZ,CAAC,CAAC;AACF;EACA;EACA;EACA;EACA;EACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClE;EACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACnC,MAAM,QAAQ,GAAG,KAAK,CAAC;EACvB,MAAM,KAAK,GAAG,CAAC,CAAC;EAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,KAAK,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACxC,MAAM,QAAQ,GAAG,GAAG,CAAC;EACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACxB,KAAK;EACL,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;EAC1B,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACnC,MAAM,IAAI,IAAI,GAAG,GAAG,EAAE;EACtB,QAAQ,GAAG,GAAG,IAAI,CAAC;EACnB,OAAO;EACP,KAAK;EACL,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;EAChE,MAAM,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;EACtD,KAAK;EACL,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;EACtE,MAAM,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;EAC1D,KAAK;EACL,GAAG,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EACtC,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACpB,GAAG;AACH;EACA;EACA,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;EAC7D,IAAI,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAC9C,GAAG;AACH;EACA,EAAE,IAAI,GAAG,IAAI,KAAK,EAAE;EACpB,IAAI,OAAO,IAAI;EACf,GAAG;AACH;EACA,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC;EACtB,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC;AACpD;EACA,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AACpB;EACA,EAAE,IAAI,CAAC,CAAC;EACR,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;EAC/B,IAAI,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;EAClC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;EACpB,KAAK;EACL,GAAG,MAAM;EACT,IAAI,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC;EACrC,QAAQ,GAAG;EACX,QAAQ,WAAW,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;EAC1D,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;EAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;EACtC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;EACvC,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,IAAI;EACb,CAAC,CAAC;AACF;EACA;EACA;AACA;EACA,IAAI,iBAAiB,GAAG,oBAAoB,CAAC;AAC7C;EACA,SAAS,WAAW,EAAE,GAAG,EAAE;EAC3B;EACA,EAAE,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;EACvD;EACA,EAAE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE;EAC/B;EACA,EAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;EAC/B,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;EACpB,GAAG;EACH,EAAE,OAAO,GAAG;EACZ,CAAC;AACD;EACA,SAAS,UAAU,EAAE,GAAG,EAAE;EAC1B,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;EACjC,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;EACtC,CAAC;AACD;EACA,SAAS,KAAK,EAAE,CAAC,EAAE;EACnB,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;EACzC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;EACvB,CAAC;AACD;EACA,SAAS,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE;EACrC,EAAE,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC;EAC5B,EAAE,IAAI,SAAS,CAAC;EAChB,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC7B,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC;EAC3B,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACjB;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACnC,IAAI,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC;EACA;EACA,IAAI,IAAI,SAAS,GAAG,MAAM,IAAI,SAAS,GAAG,MAAM,EAAE;EAClD;EACA,MAAM,IAAI,CAAC,aAAa,EAAE;EAC1B;EACA,QAAQ,IAAI,SAAS,GAAG,MAAM,EAAE;EAChC;EACA,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC9D,UAAU,QAAQ;EAClB,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;EACrC;EACA,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC9D,UAAU,QAAQ;EAClB,SAAS;AACT;EACA;EACA,QAAQ,aAAa,GAAG,SAAS,CAAC;AAClC;EACA,QAAQ,QAAQ;EAChB,OAAO;AACP;EACA;EACA,MAAM,IAAI,SAAS,GAAG,MAAM,EAAE;EAC9B,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC5D,QAAQ,aAAa,GAAG,SAAS,CAAC;EAClC,QAAQ,QAAQ;EAChB,OAAO;AACP;EACA;EACA,MAAM,SAAS,GAAG,CAAC,aAAa,GAAG,MAAM,IAAI,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC;EAChF,KAAK,MAAM,IAAI,aAAa,EAAE;EAC9B;EACA,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;EAC1D,KAAK;AACL;EACA,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB;EACA;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,EAAE;EAC1B,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;EACjC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;EAC5B,KAAK,MAAM,IAAI,SAAS,GAAG,KAAK,EAAE;EAClC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;EACjC,MAAM,KAAK,CAAC,IAAI;EAChB,QAAQ,SAAS,IAAI,GAAG,GAAG,IAAI;EAC/B,QAAQ,SAAS,GAAG,IAAI,GAAG,IAAI;EAC/B,OAAO,CAAC;EACR,KAAK,MAAM,IAAI,SAAS,GAAG,OAAO,EAAE;EACpC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;EACjC,MAAM,KAAK,CAAC,IAAI;EAChB,QAAQ,SAAS,IAAI,GAAG,GAAG,IAAI;EAC/B,QAAQ,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;EACtC,QAAQ,SAAS,GAAG,IAAI,GAAG,IAAI;EAC/B,OAAO,CAAC;EACR,KAAK,MAAM,IAAI,SAAS,GAAG,QAAQ,EAAE;EACrC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;EACjC,MAAM,KAAK,CAAC,IAAI;EAChB,QAAQ,SAAS,IAAI,IAAI,GAAG,IAAI;EAChC,QAAQ,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;EACtC,QAAQ,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;EACtC,QAAQ,SAAS,GAAG,IAAI,GAAG,IAAI;EAC/B,OAAO,CAAC;EACR,KAAK,MAAM;EACX,MAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;EAC3C,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,KAAK;EACd,CAAC;AACD;EACA,SAAS,YAAY,EAAE,GAAG,EAAE;EAC5B,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;EACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACvC;EACA,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;EAC7C,GAAG;EACH,EAAE,OAAO,SAAS;EAClB,CAAC;AACD;EACA,SAAS,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE;EACrC,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;EAChB,EAAE,IAAI,SAAS,GAAG,EAAE,CAAC;EACrB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;EACvC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK;AAC/B;EACA,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EAC1B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;EAChB,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EACjB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACvB,GAAG;AACH;EACA,EAAE,OAAO,SAAS;EAClB,CAAC;AACD;AACA;EACA,SAAS,aAAa,EAAE,GAAG,EAAE;EAC7B,EAAE,OAAO,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;EACtC,CAAC;AACD;EACA,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;EAC/C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;EACnC,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK;EAC9D,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;EAC7B,GAAG;EACH,EAAE,OAAO,CAAC;EACV,CAAC;AACD;EACA,SAAS,KAAK,EAAE,GAAG,EAAE;EACrB,EAAE,OAAO,GAAG,KAAK,GAAG;EACpB,CAAC;AACD;AACA;EACA;EACA;EACA;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE;EACvB,EAAE,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;EACnF,CAAC;AACD;EACA,SAAS,YAAY,EAAE,GAAG,EAAE;EAC5B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,QAAQ,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;EAC7G,CAAC;AACD;EACA;EACA,SAAS,YAAY,EAAE,GAAG,EAAE;EAC5B,EAAE,OAAO,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClH;;ECz7DA,IAAI,QAAO;EACX,IAAI;EACJ,CAAC,OAAO,GAAG,IAAI,WAAW,GAAE;EAC5B,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE;EACjB,IAAI,IAAG;EACP,IAAI,OAAM;EACV,IAAIG,UAAQ,GAAG,EAAC;EAGhB,MAAM,aAAa,GAAG,KAAI;EAC1B,MAAM,SAAS,GAAG,GAAE;EAGpB,IAAI,cAAc,GAAG,GAAE;EACvB,IAAI,kBAAiB;EACrB,IAAI,UAAS;EACb,IAAI,cAAc,GAAG,EAAC;EACtB,IAAI,YAAY,GAAG,EAAC;EACpB,IAAI,aAAY;EAChB,IAAI,iBAAiB,GAAG,GAAE;EAC1B,IAAI,SAAQ;EACZ,IAAI,oBAAmB;EACvB,IAAI,cAAc,GAAG;EACrB,CAAC,UAAU,EAAE,KAAK;EAClB,CAAC,aAAa,EAAE,IAAI;EACpB,EAAC;EACD,IAAI,cAAc,GAAG,MAAK;AAC1B;EACO,MAAM,OAAO,CAAC;EACrB,CAAC,WAAW,CAAC,OAAO,EAAE;EACtB,EAAE,IAAI,OAAO,EAAE;EACf,GAAG,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;EAC1E,IAAI,OAAO,CAAC,aAAa,GAAG,KAAI;EAChC,GAAG,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,UAAU;EACnD,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE,EAAE,aAAa,GAAG,KAAI;EAClD,GAAG;EACH,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAC;EAC9B,EAAE;EACF,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;EACrB,EAAE,IAAI,GAAG,EAAE;EACX;EACA,GAAG,OAAO,SAAS,CAAC,MAAM;EAC1B,IAAI,WAAW,GAAE;EACjB,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC;EACvG,IAAI,CAAC;EACL,GAAG;EACH,EAAE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAM;EACzC,EAAEA,UAAQ,GAAG,EAAC;EAEd,EAAE,YAAY,GAAG,EAAC;EAClB,EAAE,SAAS,GAAG,KAAI;EAElB,EAAE,GAAG,GAAG,OAAM;EACd;EACA;EACA;EACA,EAAE,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,EAAC;EACrH,EAAE,IAAI,IAAI,EAAE;EACZ,GAAG,cAAc,GAAG,KAAI;EACxB,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;EACxB,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAU;EACvC,IAAI,OAAO,WAAW,EAAE;EACxB,IAAI,MAAM,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;EAClE,IAAI,iBAAiB,GAAG,GAAE;EAC1B,IAAI;EACJ,GAAG,MAAM;EACT,GAAG,cAAc,GAAG,eAAc;EAClC,GAAG,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;EACzD,IAAI,iBAAiB,GAAG,GAAE;EAC1B,GAAG;EACH,EAAE,OAAO,WAAW,EAAE;EACtB,EAAE;EACF,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;EACjC,EAAE,IAAI,MAAM,EAAE,YAAY,GAAG,EAAC;EAC9B,EAAE,IAAI;EACN,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,OAAM;EAC3B,GAAG,cAAc,GAAG,KAAI;EACxB,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAC;EACrF,GAAG,IAAI,OAAO,EAAE;EAChB,IAAI,OAAO,CAAC,KAAK,EAAC;EAClB,IAAI,MAAMA,UAAQ,GAAG,IAAI,EAAE;EAC3B,KAAK,YAAY,GAAGA,WAAQ;EAC5B,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,EAAE;EAC3C,MAAM,MAAM;EACZ,MAAM;EACN,KAAK;EACL,IAAI;EACJ,QAAQ;EACR,IAAI,MAAM,GAAG,EAAE,KAAK,GAAE;EACtB,IAAI,MAAMA,UAAQ,GAAG,IAAI,EAAE;EAC3B,KAAK,YAAY,GAAGA,WAAQ;EAC5B,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAC;EAC/B,KAAK;EACL,IAAI,OAAO,MAAM;EACjB,IAAI;EACJ,GAAG,CAAC,MAAM,KAAK,EAAE;EACjB,GAAG,KAAK,CAAC,YAAY,GAAG,aAAY;EACpC,GAAG,KAAK,CAAC,MAAM,GAAG,OAAM;EACxB,GAAG,MAAM,KAAK;EACd,GAAG,SAAS;EACZ,GAAG,cAAc,GAAG,MAAK;EACzB,GAAG,WAAW,GAAE;EAChB,GAAG;EACH,EAAE;EACF,CAAC;EAIM,SAAS,WAAW,GAAG;EAC9B,CAAC,IAAI;EACL,EAAE,IAAI,MAAM,GAAG,IAAI,GAAE;EACrB,EAAE,IAAIA,UAAQ,IAAI,MAAM,EAAE;EAC1B;EACA,GAAG,iBAAiB,GAAG,KAAI;EAC3B,GAAG,GAAG,GAAG,KAAI;EACb,GAAG,IAAI,YAAY;EACnB,IAAI,YAAY,GAAG,KAAI;EACvB,GAAG,MAAM,IAAIA,UAAQ,GAAG,MAAM,EAAE;EAChC;EACA,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,6BAA6B,EAAC;EACvD,GAAG,KAAK,CAAC,UAAU,GAAG,KAAI;EAC1B,GAAG,MAAM,KAAK;EACd,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;EAC9B,GAAG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;EAC9D,GAAG;EACH;EACA,EAAE,OAAO,MAAM;EACf,EAAE,CAAC,MAAM,KAAK,EAAE;EAChB,EAAE,WAAW,GAAE;EACf,EAAE,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE;EAC3F,GAAG,KAAK,CAAC,UAAU,GAAG,KAAI;EAC1B,GAAG;EACH,EAAE,MAAM,KAAK;EACb,EAAE;EACF,CAAC;AACD;EACO,SAAS,IAAI,GAAG;EACvB,CAAC,IAAI,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,CAAC,IAAI,SAAS,GAAG,KAAK,IAAI,EAAC;EAC3B,CAAC,KAAK,GAAG,KAAK,GAAG,KAAI;EACrB,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE;EACnB,EAAE,QAAQ,KAAK;EACf,GAAG,KAAK,IAAI;EACZ,IAAI,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,KAAK;EACT,GAAG,KAAK,IAAI;EACZ,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;EACxB,KAAK,OAAO,UAAU,EAAE;EACxB,KAAK;EACL,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAACA,UAAQ,EAAC;EACxC,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,KAAK;EACT,GAAG,KAAK,IAAI;EACZ,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;EACxB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAACA,UAAQ,EAAC;EAC9C,KAAK,IAAI,cAAc,CAAC,UAAU,GAAG,CAAC,EAAE;EACxC;EACA,MAAM,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAACA,UAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAACA,UAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC;EACvF,MAAMA,UAAQ,IAAI,EAAC;EACnB,MAAM,OAAO,CAAC,CAAC,UAAU,GAAG,KAAK,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU;EAChF,MAAM;EACN,KAAKA,UAAQ,IAAI,EAAC;EAClB,KAAK,OAAO,KAAK;EACjB,KAAK;EACL,IAAI,KAAK,GAAG,QAAQ,CAAC,SAAS,CAACA,UAAQ,EAAC;EACxC,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,KAAK;EACT,GAAG,KAAK,IAAI;EACZ,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;EACxB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAACA,UAAQ,EAAC;EAC9C,KAAKA,UAAQ,IAAI,EAAC;EAClB,KAAK,OAAO,KAAK;EACjB,KAAK;EACL,IAAI,IAAI,cAAc,CAAC,cAAc;EACrC,KAAK,OAAO,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,eAAe,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,aAAa,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,WAAW;EACrJ,MAAM,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,SAAS,IAAI,GAAG,CAACA,UAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAACA,UAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC;EACtG,IAAI,KAAK,GAAG,QAAQ,CAAC,YAAY,CAACA,UAAQ,EAAC;EAC3C,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,KAAK;EACT,GAAG,KAAK,IAAI;EACZ;EACA,IAAI,OAAO,SAAS;EACpB,KAAK,KAAK,CAAC,CAAC;EACZ,KAAK,KAAK,CAAC,CAAC;EACZ,KAAK,KAAK,CAAC;EACX,MAAM,IAAI,KAAK,GAAG,GAAE;EACpB,MAAM,IAAI,KAAK,EAAE,CAAC,GAAG,EAAC;EACtB,MAAM,OAAO,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,SAAS,EAAE;EAC5C,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAK;EACzB,OAAO;EACP,MAAM,OAAO,SAAS,IAAI,CAAC,GAAG,KAAK,GAAG,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;EAC5F,KAAK,KAAK,CAAC;EACX,MAAM,IAAI,IAAG;EACb,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE;EACxC,OAAO,IAAI,MAAM,GAAG,GAAE;EACtB,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,EAAE,KAAK,SAAS;EAC5C,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAE;EAC5B,OAAO,OAAO,MAAM;EACpB,OAAO,MAAM;EACb,OAAO,IAAI,mBAAmB,EAAE;EAChC,QAAQ,cAAc,CAAC,aAAa,GAAG,KAAI;EAC3C,QAAQ,mBAAmB,GAAG,MAAK;EACnC,QAAQ;EACR,OAAO,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE;EAC1B,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,EAAE,KAAK,SAAS;EACzC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC;EAC5B,OAAO,OAAO,GAAG;EACjB,OAAO;EACP,KAAK,KAAK,CAAC;EACX,MAAM,OAAO,SAAS;EACtB,KAAK;EACL,MAAM,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,SAAS,CAAC;EAC9E,KAAK;EACL,GAAG;EACH,IAAI,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAC7C,GAAG;EACH,EAAE;EACF,CAAC,QAAQ,SAAS;EAClB,EAAE,KAAK,CAAC;EACR,GAAG,OAAO,KAAK;EACf,EAAE,KAAK,CAAC;EACR,GAAG,OAAO,CAAC,KAAK;EAChB,EAAE,KAAK,CAAC;EACR,GAAG,OAAO,OAAO,CAAC,KAAK,CAAC;EACxB,EAAE,KAAK,CAAC;EACR,GAAG,IAAI,YAAY,IAAIA,UAAQ,EAAE;EACjC,IAAI,OAAO,SAAS,CAAC,KAAK,CAACA,UAAQ,GAAG,cAAc,EAAE,CAACA,UAAQ,IAAI,KAAK,IAAI,cAAc,CAAC;EAC3F,IAAI;EACJ,GAAG,IAAI,YAAY,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,EAAE,EAAE;EACxD;EACA,IAAI,IAAI,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,KAAK,EAAC;EAC5E,IAAI,IAAI,MAAM,IAAI,IAAI;EACtB,KAAK,OAAO,MAAM;EAClB,IAAI;EACJ,GAAG,OAAO,eAAe,CAAC,KAAK,CAAC;EAChC,EAAE,KAAK,CAAC;EACR,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAC;EAC/B,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAE;EACrB,IAAI;EACJ,GAAG,OAAO,KAAK;EACf,EAAE,KAAK,CAAC;EACR,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;EACrC,IAAI,IAAI,MAAM,GAAG,GAAE;EACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACpC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAE;EAC/B,KAAK;EACL,IAAI,OAAO,MAAM;EACjB,IAAI,MAAM;EACV,IAAI,IAAI,mBAAmB,EAAE;EAC7B,KAAK,cAAc,CAAC,aAAa,GAAG,KAAI;EACxC,KAAK,mBAAmB,GAAG,MAAK;EAChC,KAAK;EACL,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAE;EACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;EACpC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAC;EAC5B,KAAK;EACL,IAAI,OAAO,GAAG;EACd,IAAI;EACJ,EAAE,KAAK,CAAC;EACR,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,aAAa,EAAE;EACtC,IAAI,IAAI,SAAS,GAAG,iBAAiB,CAAC,KAAK,GAAG,IAAI,EAAC;EACnD,IAAI,IAAI,SAAS,EAAE;EACnB,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI;EACxB,MAAM,SAAS,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,EAAC;EACvD,KAAK,OAAO,SAAS,CAAC,IAAI,EAAE;EAC5B,KAAK,MAAM,IAAI,cAAc,CAAC,aAAa,EAAE;EAC7C,KAAK,IAAI,iBAAiB,GAAG,SAAS,CAAC,MAAM;EAC7C;EACA,MAAM,GAAG,GAAG,KAAI;EAChB,MAAM,OAAO,cAAc,CAAC,aAAa,EAAE;EAC3C,MAAM,EAAC;EACP,KAAK,IAAI,iBAAiB,KAAK,IAAI;EACnC,MAAM,cAAc,CAAC,UAAU,GAAG,iBAAiB,GAAG,kBAAiB;EACvE;EACA,MAAM,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAC;EAChH,KAAK,SAAS,GAAG,iBAAiB,CAAC,KAAK,GAAG,IAAI,EAAC;EAChD,KAAK,IAAI,SAAS,EAAE;EACpB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI;EACzB,OAAO,SAAS,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,EAAC;EACxD,MAAM,OAAO,SAAS,CAAC,IAAI,EAAE;EAC7B,MAAM;EACN,MAAM,OAAO,KAAK;EAClB,KAAK;EACL,KAAK,OAAO,KAAK;EACjB,IAAI,MAAM;EACV,IAAI,IAAI,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAC;EAC5C,IAAI,IAAI,SAAS,EAAE;EACnB,KAAK,IAAI,SAAS,CAAC,WAAW;EAC9B,MAAM,OAAO,SAAS,CAAC,IAAI,CAAC;EAC5B;EACA,MAAM,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;EAC9B,KAAK;EACL;EACA,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;EAC3B,IAAI;EACJ,EAAE,KAAK,CAAC;EACR,GAAG,QAAQ,KAAK;EAChB,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK;EAC3B,IAAI,KAAK,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAI,KAAK,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAI,KAAK,IAAI,EAAE,OAAO;EACtB,IAAI,KAAK,IAAI,CAAC;EACd,IAAI;EACJ,KAAK,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAC9C,IAAI;EACJ,EAAE;EACF,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;EACrB,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,6BAA6B,EAAC;EACxD,IAAI,KAAK,CAAC,UAAU,GAAG,KAAI;EAC3B,IAAI,MAAM,KAAK;EACf,IAAI;EACJ,GAAG,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC;EACjD,EAAE;EACF,CAAC;EACD,MAAM,SAAS,GAAG,4BAA2B;EAC7C,SAAS,qBAAqB,CAAC,SAAS,EAAE;EAC1C,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAM;EACzB,CAAC,SAAS,UAAU,GAAG;EACvB;EACA,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;EAC9B,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,gCAAgC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAC;EACpN,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE;EACrB,GAAG;EACH,EAAE,eAAe,CAAE,EAAC;EACpB,EAAE,IAAI,MAAM,GAAG,GAAE;EACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9B,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,EAAC;EACzB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAE;EACvB,GAAG;EACH,EAAE,OAAO,MAAM;EACf,EAAE;EACF,CAAC,UAAU,CAAC,KAAK,GAAG,EAAC;EACrB,CAAC,OAAO,UAAU;EAClB,CAAC;AACD;EACA,SAAS,eAAe,CAAC,cAAc,EAAE;EACzC;EACA,CAAC,IAAI,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B;EACA,CAAC,KAAK,GAAG,KAAK,GAAG,KAAI;EACrB,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE;EACnB,EAAE,QAAQ,KAAK;EACf,GAAG,KAAK,IAAI,EAAEA,UAAQ,GAAE;EACxB,IAAI,KAAK;EACT,GAAG,KAAK,IAAI,EAAEA,UAAQ,IAAI,EAAC;EAC3B,IAAI,KAAK;EACT,GAAG,KAAK,IAAI,EAAEA,UAAQ,IAAI,EAAC;EAC3B,GAAG;EACH,EAAE;EACF,CAAC;AACD;EACA,IAAI,eAAe,GAAG,aAAY;EAwClC,SAAS,YAAY,CAAC,MAAM,EAAE;EAC9B,CAAC,IAAI,OAAM;EACX,CAAC,IAAI,MAAM,GAAG,EAAE,EAAE;EAClB,EAAE,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;EACtC,GAAG,OAAO,MAAM;EAChB,EAAE;EACF,CAAC,IAAI,MAAM,GAAG,EAAE,IAAI,OAAO;EAC3B,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAACA,UAAQ,EAAEA,UAAQ,IAAI,MAAM,CAAC,CAAC;EACnE,CAAC,MAAM,GAAG,GAAGA,UAAQ,GAAG,OAAM;EAC9B,CAAC,MAAM,KAAK,GAAG,GAAE;EACjB,CAAC,MAAM,GAAG,GAAE;EACZ,CAAC,OAAOA,UAAQ,GAAG,GAAG,EAAE;EACxB,EAAE,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC/B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;EAC5B;EACA,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAC;EACpB,GAAG,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE;EACtC;EACA,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,EAAC;EAC5C,GAAG,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE;EACtC;EACA,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,EAAC;EAC5D,GAAG,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE;EACtC;EACA,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,MAAM,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,GAAG,KAAI;EACvC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,MAAK;EAClF,GAAG,IAAI,IAAI,GAAG,MAAM,EAAE;EACtB,IAAI,IAAI,IAAI,QAAO;EACnB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,MAAM,EAAC;EAChD,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,GAAG,KAAK,EAAC;EAClC,IAAI;EACJ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAC;EACnB,GAAG,MAAM;EACT,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAC;EACpB,GAAG;AACH;EACA,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE;EAC9B,GAAG,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAC;EAC9C,GAAG,KAAK,CAAC,MAAM,GAAG,EAAC;EACnB,GAAG;EACH,EAAE;AACF;EACA,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;EACvB,EAAE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAC;EAC7C,EAAE;AACF;EACA,CAAC,OAAO,MAAM;EACd,CAAC;EACD,IAAI,YAAY,GAAG,MAAM,CAAC,aAAY;EACtC,SAAS,cAAc,CAAC,MAAM,EAAE;EAChC,CAAC,IAAI,KAAK,GAAGA,WAAQ;EACrB,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAC;EAC9B,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EAClC,EAAE,MAAM,IAAI,GAAG,GAAG,CAACA,UAAQ,EAAE,CAAC,CAAC;EAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE;EACzB,GAAGA,UAAQ,GAAG,MAAK;EACnB,OAAO,MAAM;EACb,OAAO;EACP,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,KAAI;EACrB,MAAM;EACN,KAAK,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;EAC7C,CAAC;EACD,SAAS,eAAe,CAAC,MAAM,EAAE;EACjC,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;EACjB,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;EAClB,GAAG,IAAI,MAAM,KAAK,CAAC;EACnB,IAAI,OAAO,EAAE;EACb,QAAQ;EACR,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACxB,KAAKA,UAAQ,IAAI,EAAC;EAClB,KAAK,MAAM;EACX,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC;EAC1B,IAAI;EACJ,GAAG,MAAM;EACT,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACzC,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,MAAM;EACV,IAAI;EACJ,GAAG,IAAI,MAAM,GAAG,CAAC;EACjB,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;EAC7B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACvB,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,MAAM;EACV,IAAI;EACJ,GAAG,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC/B,GAAG;EACH,EAAE,MAAM;EACR,EAAE,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EACzB,EAAE,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EACzB,EAAE,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EACzB,EAAE,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EACzB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC5E,GAAGA,UAAQ,IAAI,EAAC;EAChB,GAAG,MAAM;EACT,GAAG;EACH,EAAE,IAAI,MAAM,GAAG,CAAC,EAAE;EAClB,GAAG,IAAI,MAAM,KAAK,CAAC;EACnB,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACnC,QAAQ;EACR,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACxB,KAAKA,UAAQ,IAAI,EAAC;EAClB,KAAK,MAAM;EACX,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACtC,IAAI;EACJ,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,EAAE;EACzB,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACzC,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,MAAM;EACV,IAAI;EACJ,GAAG,IAAI,MAAM,GAAG,CAAC;EACjB,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACzC,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACvB,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,MAAM;EACV,IAAI;EACJ,GAAG,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC3C,GAAG,MAAM;EACT,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC1B,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC7E,IAAIA,UAAQ,IAAI,EAAC;EACjB,IAAI,MAAM;EACV,IAAI;EACJ,GAAG,IAAI,MAAM,GAAG,EAAE,EAAE;EACpB,IAAI,IAAI,MAAM,KAAK,CAAC;EACpB,KAAK,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChD,SAAS;EACT,KAAK,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACzB,MAAMA,UAAQ,IAAI,EAAC;EACnB,MAAM,MAAM;EACZ,MAAM;EACN,KAAK,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACnD,KAAK;EACL,IAAI,MAAM,IAAI,MAAM,GAAG,EAAE,EAAE;EAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC1C,KAAKA,UAAQ,IAAI,GAAE;EACnB,KAAK,MAAM;EACX,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE;EACnB,KAAK,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACxB,KAAKA,UAAQ,IAAI,GAAE;EACnB,KAAK,MAAM;EACX,KAAK;EACL,IAAI,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACxD,IAAI,MAAM;EACV,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC9E,KAAKA,UAAQ,IAAI,GAAE;EACnB,KAAK,MAAM;EACX,KAAK;EACL,IAAI,IAAI,MAAM,GAAG,EAAE,EAAE;EACrB,KAAK,IAAI,MAAM,KAAK,EAAE;EACtB,MAAM,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7D,UAAU;EACV,MAAM,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC7B,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC1B,OAAOA,UAAQ,IAAI,GAAE;EACrB,OAAO,MAAM;EACb,OAAO;EACP,MAAM,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAChE,MAAM;EACN,KAAK,MAAM;EACX,KAAK,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,KAAK,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EAC3C,MAAMA,UAAQ,IAAI,GAAE;EACpB,MAAM,MAAM;EACZ,MAAM;EACN,KAAK,IAAI,MAAM,GAAG,EAAE;EACpB,MAAM,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACnE,KAAK,IAAI,CAAC,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE;EACzB,MAAMA,UAAQ,IAAI,GAAE;EACpB,MAAM,MAAM;EACZ,MAAM;EACN,KAAK,OAAO,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACrE,KAAK;EACL,IAAI;EACJ,GAAG;EACH,EAAE;EACF,CAAC;AACD;EACA,SAAS,OAAO,CAAC,MAAM,EAAE;EACzB,CAAC,OAAO,cAAc,CAAC,WAAW;EAClC;EACA,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAEA,UAAQ,EAAEA,UAAQ,IAAI,MAAM,CAAC;EACpE,EAAE,GAAG,CAAC,QAAQ,CAACA,UAAQ,EAAEA,UAAQ,IAAI,MAAM,CAAC;EAC5C,CAAC;AASD;EACA,SAAS,UAAU,GAAG;EACtB,CAAC,IAAI,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,CAAC,IAAI,KAAK,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC5B,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,MAAK;EAChC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,KAAI;EAC9B,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,MAAK;EACxB,CAAC,IAAI,IAAG;EACR,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAC;EACxC,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,EAAC;EAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAG;EACtC,CAAC,OAAO,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG;EAClC,CAAC;AACD;EACA,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,EAAC;EAC9B,SAAS,OAAO,GAAG;EACnB,CAAC,IAAI,MAAM,GAAG,GAAG,CAACA,UAAQ,EAAE,EAAC;EAC7B,CAAC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,EAAE;EACtC;EACA,EAAE,MAAM,GAAG,MAAM,GAAG,KAAI;EACxB,EAAE,IAAI,YAAY,IAAIA,UAAQ;EAC9B,GAAG,OAAO,SAAS,CAAC,KAAK,CAACA,UAAQ,GAAG,cAAc,EAAE,CAACA,UAAQ,IAAI,MAAM,IAAI,cAAc,CAAC;EAC3F,OAAO,IAAI,EAAE,YAAY,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC;EAC/C,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;EACjC,EAAE,MAAM;EACR,EAAEA,UAAQ,GAAE;EACZ,EAAE,OAAO,IAAI,EAAE;EACf,EAAE;EACF,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAACA,UAAQ,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,CAACA,UAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,MAAK;EACjH,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAC;EAC1B,CAAC,IAAI,aAAa,GAAGA,WAAQ;EAC7B,CAAC,IAAI,GAAG,GAAGA,UAAQ,GAAG,MAAM,GAAG,EAAC;EAChC,CAAC,IAAI,MAAK;EACV,CAAC,IAAI,CAAC,GAAG,EAAC;EACV,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,EAAE;EACrC,EAAE,OAAO,aAAa,GAAG,GAAG,EAAE;EAC9B,GAAG,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAC;EAC5C,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,aAAa,GAAG,WAAU;EAC9B,IAAI,KAAK;EACT,IAAI;EACJ,GAAG,aAAa,IAAI,EAAC;EACrB,GAAG;EACH,EAAE,GAAG,IAAI,EAAC;EACV,EAAE,OAAO,aAAa,GAAG,GAAG,EAAE;EAC9B,GAAG,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,EAAC;EAC/B,GAAG,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,IAAI,aAAa,GAAG,WAAU;EAC9B,IAAI,KAAK;EACT,IAAI;EACJ,GAAG;EACH,EAAE,IAAI,aAAa,KAAK,GAAG,EAAE;EAC7B,GAAGA,UAAQ,GAAG,cAAa;EAC3B,GAAG,OAAO,KAAK,CAAC,MAAM;EACtB,GAAG;EACH,EAAE,GAAG,IAAI,EAAC;EACV,EAAE,aAAa,GAAGA,WAAQ;EAC1B,EAAE;EACF,CAAC,KAAK,GAAG,GAAE;EACX,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAK;EACtB,CAAC,KAAK,CAAC,KAAK,GAAG,OAAM;EACrB,CAAC,OAAO,aAAa,GAAG,GAAG,EAAE;EAC7B,EAAE,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAC;EAC3C,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAC;EACnB,EAAE,aAAa,IAAI,EAAC;EACpB,EAAE;EACF,CAAC,GAAG,IAAI,EAAC;EACT,CAAC,OAAO,aAAa,GAAG,GAAG,EAAE;EAC7B,EAAE,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,EAAC;EAC9B,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAC;EACnB,EAAE;EACF;EACA,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,EAAC;EAC5E,CAAC,IAAI,MAAM,IAAI,IAAI;EACnB,EAAE,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM;EAC9B,CAAC,OAAO,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;EAC9C,CAAC;AACD;EACO,MAAM,GAAG,CAAC;EACjB,CAAC,WAAW,CAAC,KAAK,EAAE;EACpB,EAAE,IAAI,CAAC,KAAK,GAAG,MAAK;EACpB,EAAE;EACF,CAAC;AACD;EACA,IAAI,IAAI,GAAG,OAAO,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAGD,SAAM;AACtD;EACA,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK;EACvC;EACA,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;EAC5B,EAAC;AACD;EACA,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK;EACrC;EACA,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;EACjC,EAAC;AACD;EACA,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK;EACnC;EACA,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;EACzF,EAAC;AACD;EACA,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK;EACnC;EACA,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;EACxG,EAAC;AACD;EACA;EACA,MAAM,gBAAgB,GAAG,MAAM;EAC/B,CAAC,IAAI,UAAU,GAAG,IAAI,GAAE;EACxB,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,EAAC;EAC9B,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,EAAC;EACvB,CAAC,iBAAiB,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,UAAS;EACzC,CAAC,SAAS,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,EAAC;EAClD,CAAC,IAAI,MAAM,GAAG,GAAE;EAChB,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACnD,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,EAAC;EAC5B,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,EAAC;EAC7B,EAAE;EACF,CAAC,OAAO,MAAM;EACd,EAAC;AACD;EACA,gBAAgB,CAAC,WAAW,GAAG,KAAI;EACnC,iBAAiB,CAAC,aAAa,CAAC,GAAG,iBAAgB;AACnD;EACA,iBAAiB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK;EAClC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;EAClD,EAAC;AACD;EACA,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;EACnC;EACA,CAAC,IAAI,CAAC,YAAY;EAClB,EAAE,YAAY,GAAG,IAAI,GAAG,GAAE;EAC1B,CAAC,IAAI,KAAK,GAAG,GAAG,CAACC,UAAQ,EAAC;EAC1B,CAAC,IAAI,OAAM;EACX;EACA;EACA,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;EACtB,EAAE,MAAM,GAAG,GAAE;EACb;EACA,EAAE,MAAM,GAAG,GAAE;AACb;EACA,CAAC,IAAI,QAAQ,GAAG,EAAE,MAAM,GAAE;EAC1B,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAC;EAC/B,CAAC,IAAI,gBAAgB,GAAG,IAAI,GAAE;EAC9B,CAAC,IAAI,QAAQ,CAAC,IAAI;EAClB,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;EAChD,CAAC,QAAQ,CAAC,MAAM,GAAG,iBAAgB;EACnC,CAAC,OAAO,gBAAgB;EACxB,EAAC;AACD;EACA,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;EACnC;EACA,CAAC,IAAI,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAC;EACpC,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAI;EACrB,CAAC,OAAO,QAAQ,CAAC,MAAM;EACvB,EAAC;AACD;EACA,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;EACnD,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK;EACpC;EACA;EACA,CAAC,IAAI,cAAc,CAAC,aAAa,EAAE;EACnC,EAAE,cAAc,CAAC,aAAa,GAAG,MAAK;EACtC,EAAE,mBAAmB,GAAG,KAAI;EAC5B,EAAE;EACF,CAAC,OAAO,IAAI,EAAE;EACd,CAAC,EAAE,WAAW,GAAG,KAAI;AACrB;AACA;EACO,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,OAAO,EAAC;EAC5K,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAC;EACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC7C,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAC;EACtD,CAAC;EACD,SAAS,kBAAkB,CAAC,cAAc,EAAE,GAAG,EAAE;EACjD,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK;EACtC,EAAE,IAAI,CAAC,cAAc;EACrB,GAAG,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,QAAQ,CAAC;EACrE;EACA,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;EACpF,GAAE;EACF,CAAC;AACD;EACA,SAAS,SAAS,CAAC,QAAQ,EAAE;EAC7B,CAAC,IAAI,WAAW,GAAG,OAAM;EACzB,CAAC,IAAI,aAAa,GAAGA,WAAQ;EAE7B,CAAC,IAAI,mBAAmB,GAAG,eAAc;EACzC,CAAC,IAAI,iBAAiB,GAAG,aAAY;EACrC,CAAC,IAAI,cAAc,GAAG,UAAS;EAE/B,CAAC,IAAI,iBAAiB,GAAG,aAAY;EACrC;EACA,CAAC,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAC;EACpD,CAAC,IAAI,eAAe,GAAG,kBAAiB;EACxC,CAAC,IAAI,YAAY,GAAG,eAAc;EAClC,CAAC,IAAI,mBAAmB,GAAG,eAAc;EACzC,CAAC,IAAI,KAAK,GAAG,QAAQ,GAAE;EACvB,CAAC,MAAM,GAAG,YAAW;EACrB,CAACA,UAAQ,GAAG,cAAa;EAEzB,CAAC,cAAc,GAAG,oBAAmB;EACrC,CAAC,YAAY,GAAG,kBAAiB;EACjC,CAAC,SAAS,GAAG,eAAc;EAE3B,CAAC,YAAY,GAAG,kBAAiB;EACjC,CAAC,GAAG,GAAG,SAAQ;EACf,CAAC,cAAc,GAAG,oBAAmB;EACrC,CAAC,iBAAiB,GAAG,gBAAe;EACpC,CAAC,cAAc,GAAG,aAAY;EAC9B,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAC;EACpE,CAAC,OAAO,KAAK;EACb,CAAC;EACM,SAAS,WAAW,GAAG;EAC9B,CAAC,GAAG,GAAG,KAAI;EACX,CAAC,YAAY,GAAG,KAAI;EACpB,CAAC,iBAAiB,GAAG,KAAI;EACzB,CAAC;AACD;EACO,SAASC,cAAY,CAAC,SAAS,EAAE;EACxC,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAM;EACpD,CAAC;AACD;EACO,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAC;EAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC9B,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,EAAC;EACtD,CAAC;EAGD,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAC;EACjC,cAAc,CAAC,OAAM;EACb,cAAc,CAAC;;EC50B7C,IAAI,YAAW;EACf,IAAI;EACJ,CAAC,WAAW,GAAG,IAAI,WAAW,GAAE;EAChC,CAAC,CAAC,OAAO,KAAK,EAAE,EAAE;EAClB,IAAI,UAAU,EAAE,iBAAgB;EAChC,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,YAAW;EACnD,MAAM,iBAAiB,GAAG,aAAa,GAAG,MAAM,CAAC,eAAe,GAAG,WAAU;EAC7E,MAAM,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,WAAU;EACrD,MAAM,yBAAyB,GAAG,KAAI;EACtC,MAAM,cAAc,GAAG,MAAK;EAC5B,MAAM,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,WAAU;EAChE,IAAI,OAAM;EACV,IAAI,WAAU;EACd,IAAI,QAAQ,GAAG,EAAC;EAChB,IAAI,QAAO;EACX,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,EAAC;EAClC,MAAM,OAAO,SAAS,OAAO,CAAC;EACrC,CAAC,WAAW,CAAC,OAAO,EAAE;EACtB,EAAE,KAAK,CAAC,OAAO,EAAC;EAChB,EAAE,IAAI,CAAC,MAAM,GAAG,EAAC;EAEjB,EAAE,IAAI,MAAK;EACX,EAAE,IAAI,iBAAgB;EACtB,EAAE,IAAI,gBAAe;EACrB,EAAE,IAAI,WAAU;EAChB,EAAE,IAAI,aAAY;EAClB,EAAE,IAAI,0BAA0B,GAAG,EAAC;EACpC,EAAE,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;EACxF,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;EACtD,GAAG,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU;EAC5C,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE;EAC9B,IAAI,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;EAC5E,IAAI,GAAG,MAAK;AACZ;EACA,EAAE,IAAI,OAAO,GAAG,KAAI;EACpB,EAAE,IAAI,mBAAmB,GAAG,GAAE;EAC9B,EAAE,IAAI,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,WAAU;EAClD,EAAE,IAAI,YAAY,EAAE;EACpB,GAAG,mBAAmB,GAAG,EAAC;EAC1B,GAAG,IAAI,CAAC,UAAU,GAAG,GAAE;EACvB,GAAG;EACH,EAAE,IAAI,iBAAiB,GAAG,GAAE;EAC5B,EAAE,IAAI,gBAAgB,GAAG,EAAC;EAC1B,EAAE,IAAI,oCAAoC,GAAG,EAAC;EAC9C,EAAE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,mBAAmB,EAAE;EACvE,GAAG,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;EAChD,GAAG;AACH;EACA,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE;EAChC,GAAG,IAAI,CAAC,MAAM,EAAE;EAChB,IAAI,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAC;EACxC,IAAI,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAC;EACrD,IAAI,QAAQ,GAAG,EAAC;EAChB,IAAI;EACJ,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,GAAE;EAC/B,GAAG,IAAI,OAAO,GAAG,QAAQ,GAAG,KAAK,EAAE;EACnC;EACA,IAAI,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAC;EACjD,IAAI,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAC;EAC9D,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,GAAE;EAChC,IAAI,QAAQ,GAAG,EAAC;EAChB,IAAI;EACJ,GAAG,KAAK,GAAG,SAAQ;EACnB,GAAG,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,GAAG,KAAI;EAC5D,GAAG,gBAAgB,GAAG,OAAO,CAAC,WAAU;EACxC,GAAG,IAAI,gBAAgB,EAAE;EACzB,IAAI,IAAI,gBAAgB,CAAC,aAAa;EACtC,KAAK,OAAO,CAAC,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,aAAa,GAAE;EACpE,IAAI,IAAI,sBAAsB,GAAG,gBAAgB,CAAC,OAAM;EACxD,IAAI,IAAI,sBAAsB,IAAI,mBAAmB,IAAI,CAAC,YAAY;EACtE,KAAK,sBAAsB,GAAG,oBAAmB;EACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;EACvC;EACA,KAAK,gBAAgB,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC;EACvD,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE;EACtD,MAAM,IAAI,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAC;EACpC,MAAM,IAAI,CAAC,IAAI;EACf,OAAO,QAAQ;EACf,MAAM,IAAI,cAAc,EAAE,UAAU,GAAG,gBAAgB,CAAC,YAAW;EACnE,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAClD,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACxB,OAAO,cAAc,GAAG,UAAU,CAAC,GAAG,EAAC;EACvC,OAAO,IAAI,CAAC,cAAc,EAAE;EAC5B,QAAQ,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC;EAC9D,QAAQ;EACR,OAAO,UAAU,GAAG,eAAc;EAClC,OAAO;EACP,MAAM,UAAU,CAAC,aAAa,CAAC,GAAG,EAAC;EACnC,MAAM;EACN,KAAK,0BAA0B,GAAG,gBAAgB,CAAC,OAAM;EACzD,KAAK;EACL,IAAI,IAAI,CAAC,YAAY;EACrB,KAAK,gBAAgB,CAAC,MAAM,GAAG,uBAAsB;EACrD,IAAI;EACJ,GAAG,IAAI,eAAe;EACtB,IAAI,eAAe,GAAG,MAAK;EAC3B,GAAG,UAAU,GAAG,gBAAgB,IAAI,GAAE;EACtC,GAAG,IAAI;EACP,IAAI,MAAM,CAAC,KAAK,EAAC;EACjB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAQ;EAC7B,IAAI,IAAI,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE;EAClD,KAAK,QAAQ,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,EAAC;EACpD,KAAK,IAAI,QAAQ,GAAG,OAAO;EAC3B,MAAM,QAAQ,CAAC,QAAQ,EAAC;EACxB,KAAK,OAAO,CAAC,MAAM,GAAG,SAAQ;EAC9B,KAAK,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,EAAC;EAC3F,KAAK,YAAY,GAAG,KAAI;EACxB,KAAK,OAAO,UAAU;EACtB,KAAK;EACL,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;EAC3C,IAAI,SAAS;EACb,IAAI,IAAI,gBAAgB,EAAE;EAC1B,KAAK,IAAI,oCAAoC,GAAG,EAAE;EAClD,MAAM,oCAAoC,GAAE;EAC5C,KAAK,IAAI,gBAAgB,GAAG,KAAK,EAAE;EACnC;EACA,MAAM,gBAAgB,CAAC,WAAW,GAAG,KAAI;EACzC,MAAM,oCAAoC,GAAG,EAAC;EAC9C,MAAM,gBAAgB,GAAG,EAAC;EAC1B,MAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC;EACtC,OAAO,iBAAiB,GAAG,GAAE;EAC7B,MAAM,MAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE;EAC/D,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EAChE,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,UAAS;EACtD,OAAO;EACP,MAAM,iBAAiB,GAAG,GAAE;EAC5B,MAAM;EACN,KAAK,IAAI,eAAe,IAAI,OAAO,CAAC,cAAc,EAAE;EACpD,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,mBAAmB,EAAE;EAC3D,OAAO,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,EAAC;EAC5E,OAAO;AACP;EACA,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,0BAA0B,CAAC,KAAK,KAAK,EAAE;EAC5F;EACA,OAAO,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,GAAE;EACzD,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;EACnC,OAAO;EACP,MAAM,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,OAAM;EAC5D,MAAM;EACN,KAAK;EACL,IAAI;EACJ,IAAG;EACH,EAAE,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK;EAC5B,GAAG,IAAI,QAAQ,GAAG,OAAO;EACzB,IAAI,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAC;AAC/B;EACA,GAAG,IAAI,IAAI,GAAG,OAAO,MAAK;EAC1B,GAAG,IAAI,OAAM;EACb,GAAG,IAAI,IAAI,KAAK,QAAQ,EAAE;EAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,OAAM;EAChC,IAAI,IAAI,WAAU;EAClB;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,EAAE;EAC1B,KAAK,UAAU,GAAG,EAAC;EACnB,KAAK,MAAM,IAAI,SAAS,GAAG,KAAK,EAAE;EAClC,KAAK,UAAU,GAAG,EAAC;EACnB,KAAK,MAAM,IAAI,SAAS,GAAG,OAAO,EAAE;EACpC,KAAK,UAAU,GAAG,EAAC;EACnB,KAAK,MAAM;EACX,KAAK,UAAU,GAAG,EAAC;EACnB,KAAK;EACL,IAAI,IAAI,QAAQ,GAAG,SAAS,GAAG,EAAC;EAChC,IAAI,IAAI,QAAQ,GAAG,QAAQ,GAAG,OAAO;EACrC,KAAK,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAC;AAC3C;EACA,IAAI,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;EACzC,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAU;EACvD,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;EACrC,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,EAAC;EAC9B,MAAM,IAAI,EAAE,GAAG,IAAI,EAAE;EACrB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,GAAE;EACjC,OAAO,MAAM,IAAI,EAAE,GAAG,KAAK,EAAE;EAC7B,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,KAAI;EAC7C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAI;EAC/C,OAAO,MAAM;EACb,OAAO,CAAC,EAAE,GAAG,MAAM,MAAM,MAAM;EAC/B,OAAO,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,MAAM,MAAM;EAC3D,QAAQ;EACR,OAAO,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,EAAC;EAC3D,OAAO,CAAC,GAAE;EACV,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,KAAI;EAC9C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,KAAI;EACrD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAI;EACpD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAI;EAC/C,OAAO,MAAM;EACb,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,KAAI;EAC9C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAI;EACpD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,KAAI;EAC/C,OAAO;EACP,MAAM;EACN,KAAK,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAU;EACjD,KAAK,MAAM;EACX,KAAK,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,EAAE,QAAQ,EAAC;EAChE,KAAK;AACL;EACA,IAAI,IAAI,MAAM,GAAG,IAAI,EAAE;EACvB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACvC,KAAK,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE;EAC/B,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE;EACzB,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAC;EAC1E,MAAM;EACN,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAM;EAChC,KAAK,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EACjC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE;EACzB,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAC;EAC1E,MAAM;EACN,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,EAAC;EACrC,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI;EACvC,KAAK,MAAM;EACX,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE;EACzB,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,MAAM,EAAC;EAC1E,MAAM;EACN,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAC;EAC3C,KAAK,QAAQ,IAAI,EAAC;EAClB,KAAK;EACL,IAAI,QAAQ,IAAI,OAAM;EACtB,IAAI,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EACjC,IAAI,IAAI,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE;EAC/B;EACA,KAAK,IAAI,KAAK,GAAG,IAAI,EAAE;EACvB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAK;EAChC,MAAM,MAAM,IAAI,KAAK,GAAG,KAAK,EAAE;EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAK;EAChC,MAAM,MAAM,IAAI,KAAK,GAAG,OAAO,EAAE;EACjC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI,EAAC;EACrC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,KAAI;EACvC,MAAM,MAAM;EACZ,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAC;EAC3C,MAAM,QAAQ,IAAI,EAAC;EACnB,MAAM;EACN,KAAK,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE;EACrC,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;EACzB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,MAAK;EACvC,MAAM,MAAM,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;EACjC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAK;EACjC,MAAM,MAAM,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE;EACnC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAC;EAC5C,MAAM,QAAQ,IAAI,EAAC;EACnB,MAAM,MAAM;EACZ,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAC;EAC5C,MAAM,QAAQ,IAAI,EAAC;EACnB,MAAM;EACN,KAAK,MAAM;EACX,KAAK,IAAI,WAAU;EACnB,KAAK,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,GAAG,WAAW,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;EAC5F,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAC;EAC5C,MAAM,IAAI,SAAQ;EAClB,MAAM,IAAI,UAAU,GAAG,CAAC;EACxB;EACA,QAAQ,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ,EAAE;EACzH,OAAO,QAAQ,IAAI,EAAC;EACpB,OAAO,MAAM;EACb,OAAO;EACP,OAAO,QAAQ,GAAE;EACjB,MAAM;EACN,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAC;EAC3C,KAAK,QAAQ,IAAI,EAAC;EAClB,KAAK;EACL,IAAI,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EACjC,IAAI,IAAI,CAAC,KAAK;EACd,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,SAAS;EACT,KAAK,IAAI,YAAY,EAAE;EACvB,MAAM,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAC;EAC3C,MAAM,IAAI,OAAO,EAAE;EACnB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;EACxB,QAAQ,IAAI,WAAW,GAAG,YAAY,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,GAAG,EAAE,EAAC;EACrF,QAAQ,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAC;EAC9C,QAAQ;EACR,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI,EAAC;EACtC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,KAAI;EACxC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAC;EACjD,OAAO,QAAQ,IAAI,EAAC;EACpB,OAAO,MAAM;EACb,OAAO;EACP,OAAO,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,EAAC;EAC5D,MAAM;EACN,KAAK,IAAI,WAAW,GAAG,KAAK,CAAC,YAAW;EACxC,KAAK,IAAI,WAAW,KAAK,MAAM,EAAE;EACjC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAC;EAC9B,MAAM,MAAM,IAAI,WAAW,KAAK,KAAK,EAAE;EACvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAM;EAC3B,MAAM,IAAI,MAAM,GAAG,IAAI,EAAE;EACzB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACzC,OAAO,MAAM;EACb,OAAO,gBAAgB,CAAC,MAAM,EAAC;EAC/B,OAAO;EACP,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACvC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC;EACvB,OAAO;EACP,MAAM,MAAM,IAAI,WAAW,KAAK,GAAG,EAAE;EACrC,MAAM,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,KAAK,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;EACxF;EACA,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAC;EAC7B,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAC;EAC7B,OAAO;EACP,MAAM,MAAM,GAAG,KAAK,CAAC,KAAI;EACzB,MAAM,IAAI,MAAM,GAAG,IAAI,EAAE;EACzB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACzC,OAAO,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE;EACjC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAM;EAClC,OAAO,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EACnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,EAAC;EACvC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI;EACzC,OAAO,MAAM;EACb,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAC;EAC7C,OAAO,QAAQ,IAAI,EAAC;EACpB,OAAO;EACP,MAAM,KAAK,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,KAAK,EAAE;EAC7C,OAAO,MAAM,CAAC,GAAG,EAAC;EAClB,OAAO,MAAM,CAAC,UAAU,EAAC;EACzB,OAAO;EACP,MAAM,MAAM;EACZ,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;EACzD,OAAO,IAAI,cAAc,GAAG,gBAAgB,CAAC,CAAC,EAAC;EAC/C,OAAO,IAAI,KAAK,YAAY,cAAc,EAAE;EAC5C,QAAQ,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,EAAC;EACrC,QAAQ,IAAI,GAAG,GAAG,SAAS,CAAC,IAAG;EAC/B,QAAQ,IAAI,GAAG,GAAG,IAAI,EAAE;EACxB,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,IAAG;EACxC,SAAS,MAAM,IAAI,GAAG,GAAG,KAAK,EAAE;EAChC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAClC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAG;EACjC,SAAS,MAAM,IAAI,GAAG,GAAG,OAAO,EAAE;EAClC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAClC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,IAAI,EAAC;EACtC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG,KAAI;EACxC,SAAS,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;EAC7B,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAClC,SAAS,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAC;EAC5C,SAAS,QAAQ,IAAI,EAAC;EACtB,SAAS;EACT,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC;EAC5D,QAAQ,MAAM;EACd,QAAQ;EACR,OAAO;EACP,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;EAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;EAChC,QAAQ,MAAM,CAAC,KAAK,EAAC;EACrB,QAAQ;EACR,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAChC,OAAO,MAAM;EACb,OAAO;EACP;EACA,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,EAAC;EAC/C,MAAM;EACN,KAAK;EACL,IAAI,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;EAClC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAI;EAC5C,IAAI,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;EACjC,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;EACvD;EACA,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAC;EAC7C,KAAK,MAAM,IAAI,KAAK,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;EAC9D;EACA,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAC;EAC1D,KAAK,MAAM;EACX;EACA,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;EAClC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAC;EACpD,MAAM,MAAM;EACZ,MAAM,MAAM,IAAI,UAAU,CAAC,KAAK,GAAG,oGAAoG,CAAC;EACxI,MAAM;EACN,KAAK;EACL,IAAI,QAAQ,IAAI,EAAC;EACjB,IAAI,MAAM,IAAI,IAAI,KAAK,WAAW,EAAE;EACpC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC7B,IAAI,MAAM;EACV,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;EAC3C,IAAI;EACJ,IAAG;AACH;EACA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,KAAK;EACrF;EACA,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAC;EACjC,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAM;EAC3B,GAAG,IAAI,MAAM,GAAG,IAAI,EAAE;EACtB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACtC,IAAI,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE;EAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAM;EAC/B,IAAI,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAChC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,EAAC;EACpC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI;EACtC,IAAI,MAAM;EACV,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC7B,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAC;EAC1C,IAAI,QAAQ,IAAI,EAAC;EACjB,IAAI;EACJ,GAAG,IAAI,IAAG;EACV,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACpC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC;EACzB,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;EACvB,IAAI;EACJ,GAAG;EACH,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK;EAC7B,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC5B,GAAG,IAAI,YAAY,GAAG,QAAQ,GAAG,MAAK;EACtC,GAAG,QAAQ,IAAI,EAAC;EAChB,GAAG,IAAI,IAAI,GAAG,EAAC;EACf,GAAG,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;EAC3B,IAAI,IAAI,aAAa,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;EACrD,KAAK,MAAM,CAAC,GAAG,EAAC;EAChB,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;EACxB,KAAK,IAAI,GAAE;EACX,KAAK;EACL,IAAI;EACJ,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,EAAC;EAC7C,GAAG,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,KAAI;EAC7C,GAAG;AACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,EAAE,CAAC,MAAM,KAAK;EACd,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAC;EACjC,GAAG,IAAI,cAAc,EAAE,UAAU,GAAG,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC;EAC5G,GAAG,IAAI,cAAc,GAAG,EAAC;EACzB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,OAAM;EAC3B,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,EAAC;EACrB,IAAI,cAAc,GAAG,UAAU,CAAC,GAAG,EAAC;EACpC,IAAI,IAAI,CAAC,cAAc,EAAE;EACzB,KAAK,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC;EAC3D,KAAK,cAAc,GAAE;EACrB,KAAK;EACL,IAAI,UAAU,GAAG,eAAc;EAC/B,IAAI;EACJ,GAAG,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAC;EAC3C,GAAG,IAAI,QAAQ,KAAK,SAAS,EAAE;EAC/B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC7B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAAyB;EAClD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAQ;EACjC,IAAI,MAAM;EACV,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAE;EAClC,IAAI,IAAI,CAAC,QAAQ,EAAE;EACnB,KAAK,QAAQ,GAAG,EAAC;EACjB,KAAK,UAAU,CAAC,MAAM,GAAG,EAAC;EAC1B,KAAK;EACL,IAAI,IAAI,QAAQ,IAAI,cAAc,EAAE;EACpC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,QAAQ,GAAG,mBAAmB,IAAI,EAAC;EAC7D,KAAK;EACL,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,SAAQ;EACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,KAAI;EAC/B,IAAI,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,IAAI,mBAAmB,EAAE;EAC5E,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAAyB;EACnD,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAQ;EAClC,KAAK,eAAe,GAAG,KAAI;EAC3B,KAAK,MAAM;EACX,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAAyB;EACnD,KAAK,IAAI,cAAc;EACvB,MAAM,gBAAgB,IAAI,oCAAoC,GAAG,eAAc;EAC/E;EACA,KAAK,IAAI,iBAAiB,CAAC,MAAM,IAAI,cAAc,GAAG,mBAAmB;EACzE,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,UAAS;EAC1D,KAAK,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAC;EACvC,KAAK,IAAI,MAAM,GAAG,IAAI;EACtB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACxC;EACA,MAAM,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAC;EAClC,KAAK,MAAM,CAAC,IAAI,EAAC;EACjB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC9B,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAAyB;EACnD,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAQ;EAClC;EACA,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;EACnC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC;EAC7B,KAAK,MAAM;EACX,KAAK;EACL,IAAI;EACJ,GAAG,IAAI,MAAM,GAAG,IAAI,EAAE;EACtB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACtC,IAAI,MAAM;EACV,IAAI,gBAAgB,CAAC,MAAM,EAAC;EAC5B,IAAI;EACJ,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;EACjC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC;EAC3B,IAAG;EACH,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;EAC5B,GAAG,IAAI,QAAO;EACd,GAAG,IAAI,GAAG,GAAG,SAAS,EAAE;EACxB;EACA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,eAAe;EACvC,KAAK,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC;EAC/E,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe;EACtC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,EAAC;EACrG,IAAI;EACJ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAE;EACjF,GAAG,IAAI,SAAS,GAAG,IAAI,iBAAiB,CAAC,OAAO,EAAC;EACjD,GAAG,UAAU,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAC;EAC1D,GAAG,IAAI,MAAM,CAAC,IAAI;EAClB,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAC;EACzC;EACA,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAC;EAC3C,GAAG,QAAQ,IAAI,MAAK;EACpB,GAAG,KAAK,GAAG,EAAC;EACZ,GAAG,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,GAAE;EAClC,GAAG,OAAO,MAAM,GAAG,SAAS;EAC5B,IAAG;EACH,EAAE;EACF,CAAC,SAAS,CAAC,MAAM,EAAE;EACnB;EACA,EAAE,MAAM,GAAG,OAAM;EACjB,EAAE,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAC;EAChF,EAAE,QAAQ,GAAG,EAAC;EACd,EAAE;EACF,CAAC;AAOD;EACA,SAAS,gBAAgB,CAAC,MAAM,EAAE;EAClC,CAAC,IAAI,MAAM,GAAG,KAAK,EAAE;EACrB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAM;EAC7B,EAAE,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAC9B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,EAAC;EAClC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI;EACpC,EAAE,MAAM;EACR,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAC;EACxC,EAAE,QAAQ,IAAI,EAAC;EACf,EAAE;EACF,CAAC;AACD;EACA,gBAAgB,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS;EACrE,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa;EAC1H,CAAC,YAAY,EAAE,YAAY,EAAC;AAC5B;EACA;EACA,UAAU,GAAG,CAAC;EACd,CAAC,GAAG,EAAE,CAAC;EACP,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EACtB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAI;EACrC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE;EACtG;EACA,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC5B,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAC;EAC1C,GAAG,QAAQ,IAAI,EAAC;EAChB,GAAG,MAAM;EACT;EACA,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC5B,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAC;EAC3C,GAAG,QAAQ,IAAI,EAAC;EAChB,GAAG;EACH,EAAE;EACF,CAAC,EAAE;EACH,CAAC,GAAG,EAAE,GAAG;EACT,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE;EACrB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAC;EAC7B,EAAE,MAAM,CAAC,KAAK,EAAC;EACf,EAAE;EACF,CAAC,EAAE;EACH,CAAC,GAAG,EAAE,EAAE;EACR,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;EACvB,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAC;EACvC,EAAE;EACF,CAAC,EAAE;EACH,CAAC,GAAG,EAAE,EAAE;EACR,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;EACvB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,EAAC;EACjD,EAAE;EACF,CAAC,EAAE;EACH,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvC,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAC;EACpC,EAAE;EACF,CAAC,EAAE;EACH,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvC,EAAE,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAC;EACpC,EAAE;EACF,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC;EACxB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC;EACtB,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAC;AACvB;EACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAChC,CAAC,OAAO;EACR,EAAE,GAAG,EAAE,GAAG;EACV,EAAE,MAAM,EAAE,SAAS,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE;EACtD,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC,WAAU;EACrC,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC,UAAU,IAAI,EAAC;EAC1C,GAAG,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,WAAU;EAC/C,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;EAC7D,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAC;EAC3C,GAAG;EACH,EAAE;EACF,CAAC;EACD,SAAS,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE;EACvC,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,WAAU;EAC/B,CAAC,IAAI,MAAM,GAAG,IAAI,EAAE;EACpB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAM;EACpC,EAAE,MAAM,IAAI,MAAM,GAAG,KAAK,EAAE;EAC5B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAM;EAC7B,EAAE,MAAM,IAAI,MAAM,GAAG,OAAO,EAAE;EAC9B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,EAAC;EAClC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI;EACpC,EAAE,MAAM;EACR,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC3B,EAAE,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAC;EACxC,EAAE,QAAQ,IAAI,EAAC;EACf,EAAE;EACF,CAAC,IAAI,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;EACzC,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAC;EAC7B,EAAE;EACF,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAC;EAC7B,CAAC,QAAQ,IAAI,OAAM;EACnB,CAAC;AACD;EACA,SAAS,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE;EAC5C;EACA,CAAC,IAAI,OAAM;EACX,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,EAAC;EAC5C,CAAC,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,eAAc;EACjD,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,EAAC;EACzD,CAAC,OAAO,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE;EACpC,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAM;EAC5B,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAE;EACpB,EAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,cAAc,EAAE,MAAM,EAAE,OAAO,EAAC;EACjE,EAAE,cAAc,IAAI,EAAC;EACrB,EAAE,IAAI,QAAQ,GAAG,MAAM,GAAG,eAAc;EACxC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI,EAAC;EACrC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,GAAG,KAAI;EACvC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAI;EAC/B,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,GAAE;EACnC,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,KAAI;EAC5C,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,KAAI;EAC3C,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAI;EACpC,EAAE,OAAO,GAAG,OAAM;EAClB,EAAE;EACF,CAAC,OAAO,UAAU;EAClB,CAAC;AACD;EACO,SAAS,YAAY,CAAC,SAAS,EAAE;EACxC,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE;EACtB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;EACvB,GAAG,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;EACtD,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAC;EAC3C,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAC;EAC/B,EAAE;EACF,CAACC,cAAkB,CAAC,SAAS,EAAC;EAC9B,CAAC;EACD,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAC;EACjC,cAAc,CAAC;;;;;;;;;;;;;ACnsBrC;EACA,MAAM,CAAC,cAAc,CAAC,QAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc,IAAI,GAAG,CAAC;EACtB,oBAAoB,UAAU,GAAG,CAAC;EAClC,oBAAoB,SAAS,GAAG,CAAC;EACjC,oBAAoB,SAAS,IAAI,CAAC,CAAC,IAAI,UAAU,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC;EACrE,oBAAoB,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;EAChE,oBAAoB,WAAW,GAAG,GAAG,CAAC;AACtC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;EAClC,IAAI,IAAI,IAAI,GAAG,CAAC;EAChB,QAAQ,GAAG,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,CAAC;EACf,QAAQ,OAAO,GAAG,CAAC;EACnB,QAAQ,QAAQ,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;EAClC,QAAQ,IAAI,GAAG,CAAC;EAChB,QAAQ,MAAM,GAAG,CAAC;EAClB,QAAQ,EAAE,GAAG,CAAC;EACd,QAAQ,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC;EAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC;AACd;EACA;EACA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;EACrC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;EAC/B,KAAK;AACL;EACA,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACzB;EACA,IAAI,OAAO,GAAG,GAAG,IAAI,EAAE;EACvB,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE;EAC7C,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,YAAY,OAAO,GAAG,GAAG,CAAC;EAC1B,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;EAC9B,SAAS;AACT;EACA,QAAQ,IAAI,GAAG,GAAG,IAAI,GAAG,SAAS,EAAE;EACpC,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1C,YAAY,SAAS;EACrB,SAAS;AACT;EACA,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;EAC/B,eAAe,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;EACpC,cAAc,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;EAC7B,aAAa,WAAW,GAAG,CAAC,CAAC,CAAC;AAC9B;EACA,QAAQ,MAAM,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC;EAClD,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;EACzB,QAAQ,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;AAC3B;EACA,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;EAClC,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;EACtC,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;EAC9C,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;EAChD,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;EACxC,YAAY,KAAK,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE;EAC3D,gBAAgB,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;EAC5D,oBAAoB,MAAM;EAC1B,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,MAAM,IAAI,GAAG,UAAU,CAAC;EACtE,iBAAiB,MAAM,IAAI,IAAI,CAAC,CAAC;EACjC,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;EACnC,YAAY,GAAG,IAAI,IAAI,CAAC;EACxB,SAAS,MAAM;EACf,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;EAC1C,SAAS;EACT,KAAK;AACL;EACA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AACzC;EACA,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EAC1C,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AACpB;EACA,IAAI,IAAI,GAAG,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,CAAC;EACf,QAAQ,GAAG,GAAG,CAAC;EACf,QAAQ,OAAO,GAAG,CAAC;EACnB,QAAQ,QAAQ,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,QAAQ,IAAI,GAAG,CAAC;EAChB,QAAQ,MAAM,GAAG,CAAC,CAAC;AACnB;EACA;AACA;EACA,IAAI,OAAO,GAAG,GAAG,IAAI,EAAE;EACvB,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE;EAC9C,YAAY,QAAQ,GAAG,CAAC,CAAC;EACzB,YAAY,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAClC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EAC9B,SAAS;AACT;EACA,QAAQ,IAAI,OAAO,GAAG,QAAQ,EAAE;EAChC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;EAC5E,YAAY,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC;EACjF,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B;EACA,YAAY,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;EACnC;EACA,YAAY;EACZ;EACA;AACA;EACA;EACA;EACA;AACA;EACA;EACA,gBAAgB,OAAO,IAAI,GAAG,CAAC,EAAE;EACjC,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9C,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC;EACA,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9C,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC;EACA,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9C,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC;EACA,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9C,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC;EACA,oBAAoB,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACxC,iBAAiB;AACjB;EACA,gBAAgB,OAAO,IAAI,GAAG,CAAC,EAAE;EACjC,oBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EAC9C,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EACtC,oBAAoB,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACxC,iBAAiB;EACjB,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,MAAM;EACf,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;EACtC,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EAC9B,YAAY,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;EAC9B,SAAS;EACT,KAAK;AACL;EACA;AACA;EACA;EACA;AACA;EACA,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACD;AACA;EACA,SAASC,cAAY,GAAG;EACxB,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;EAC7C,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;EACxC,CAAC;AACD;EACA,MAAM,YAAY,GAAG,OAAO,CAAC;EAC7B,MAAM,KAAK,GAAGA,cAAY,EAAE,CAAC;AAC7B;EACA,SAASC,mBAAiB,CAAC,GAAG,IAAI,EAAE;EACpC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;EACzB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;EACnE,QAAQ,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;EAC3C,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC;EACvB,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI;EAC7B,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;EACrC,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;EAClC,SAAS,CAAC,CAAC;EACX,QAAQ,OAAO,MAAM,CAAC;EACtB,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;EAC5B,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;EACvB,KAAK;EACL,CAAC;AACD;EACA,SAAS,eAAe,CAAC,MAAM,EAAE;EACjC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;EACjD,IAAI,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC1C;EACA,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG;EAC7D,QAAQ,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;EACnC,QAAQ,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;EAChC,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC;EACvC,KAAK;AACL;EACA,IAAI,OAAO,SAAS,CAAC;EACrB,CAAC;AACD;EACA,SAAS,eAAe,CAAC,SAAS,EAAE;EACpC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;EACnB,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EACpD,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;EAC/C,KAAK;AACL;EACA,IAAI,OAAO,MAAM,CAAC;EAClB,CAAC;AACD;EACA,SAAS,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;EAC5C,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;EAC5E,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACrC,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;EACpD,IAAI,MAAM,OAAO,GAAG;EACpB,QAAQ,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;EACvC,QAAQ,SAAS;EACjB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;EACzB,KAAK,CAAC;EACN,IAAI,IAAI,KAAK,EAAE;EACf,QAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;EAC/B,KAAK;EACL,IAAI,OAAOA,mBAAiB,CAAC,GAAG,OAAO,CAAC,CAAC;EACzC,CAAC;AACD;EACA,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;EAC9C,IAAI,IAAI,KAAK,EAAE;EACf,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;EACjD,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EAC1E,QAAQ,IAAI,YAAY,KAAK,YAAY,EAAE;EAC3C,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;EACnD,SAAS;EACT,KAAK;EACL,IAAI,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;EAClD,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;EACrC,IAAI,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;EACnC,IAAI,MAAM,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC;EACxC,IAAI,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;EACzD,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;EAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;EACpC,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;EACzC,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACD;EACA,0BAAY,GAAG,IAAI,CAAC;EACpB,8BAAc,GAAG,MAAM;;ECpSR,gBAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;;ECAx4B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;;;;;;;;;;;;EAOA,IAAMC,IAAI,GAAG,OAAON,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyCO,IAAtD;;EAMA,IAAI,CAACD,IAAI,CAACE,KAAV,EAAiB;EACbF,EAAAA,IAAI,CAACE,KAAL,GAAaC,OAAb;EACH;;EAED,IAAIC,EAAJ,EAAQC,MAAR,EAAcC,WAAd;EAEA,IAAMC,EAAE,GAAGP,IAAI,CAACO,EAAhB;EAEA;;EACA;;EACA,SAASC,aAAT,CAAuBC,GAAvB,EAA4BC,EAA5B,EAAgC;EAC5B,MAAIC,IAAI,GAAG,KAAX;EAAA,MAAkBC,GAAG,GAAG,IAAxB;EAAA,MAEIC,GAAG,GAAGJ,GAAG,CAACK,QAFd;EAAA,MAGId,IAAI,GAAGa,GAAG,CAACE,eAHf;EAAA,MAIIC,MAAM,GAAGH,GAAG,CAACI,gBAJjB;EAAA,MAMIC,GAAG,GAAGF,MAAM,GAAG,kBAAH,GAAwB,aANxC;EAAA,MAOIG,GAAG,GAAGH,MAAM,GAAG,qBAAH,GAA2B,aAP3C;EAAA,MAQII,GAAG,GAAGJ,MAAM,GAAG,EAAH,GAAQ,IARxB;EAAA,MAUIzB,IAAI,GAAG,SAAPA,IAAO,CAAS8B,CAAT,EAAY;EACf,QAAIA,CAAC,CAACC,IAAF,IAAU,kBAAV,IAAgCT,GAAG,CAACU,UAAJ,IAAkB,UAAtD,EAAkE;EAClE,KAACF,CAAC,CAACC,IAAF,IAAU,MAAV,GAAmBb,GAAnB,GAAyBI,GAA1B,EAA+BM,GAA/B,EAAoCC,GAAG,GAAGC,CAAC,CAACC,IAA5C,EAAkD/B,IAAlD,EAAwD,KAAxD;EACA,QAAI,CAACoB,IAAD,KAAUA,IAAI,GAAG,IAAjB,CAAJ,EAA4BD,EAAE,CAACc,IAAH,CAAQf,GAAR,EAAaY,CAAC,CAACC,IAAF,IAAUD,CAAvB;EAC/B,GAdL;EAAA,MAgBII,IAAI,GAAG,SAAPA,IAAO,GAAW;EACd,QAAI;EAAEzB,MAAAA,IAAI,CAAC0B,QAAL,CAAc,MAAd;EAAwB,KAA9B,CAA+B,OAAML,CAAN,EAAS;EAAEM,MAAAA,UAAU,CAACF,IAAD,EAAO,EAAP,CAAV;EAAsB;EAAS;;EACzElC,IAAAA,IAAI,CAAC,MAAD,CAAJ;EACH,GAnBL;;EAqBA,MAAIsB,GAAG,CAACU,UAAJ,IAAkB,UAAtB,EAAkCb,EAAE,CAACc,IAAH,CAAQf,GAAR,EAAa,MAAb,EAAlC,KACK;EACD,QAAI,CAACO,MAAD,IAAWhB,IAAI,CAAC0B,QAApB,EAA8B;EAC1B,UAAI;EAAEd,QAAAA,GAAG,GAAG,CAACH,GAAG,CAACmB,YAAX;EAA0B,OAAhC,CAAiC,OAAMP,CAAN,EAAS;;EAC1C,UAAIT,GAAJ,EAASa,IAAI;EAChB;;EACDZ,IAAAA,GAAG,CAACK,GAAD,CAAH,CAASE,GAAG,GAAG,kBAAf,EAAmC7B,IAAnC,EAAyC,KAAzC;EACAsB,IAAAA,GAAG,CAACK,GAAD,CAAH,CAASE,GAAG,GAAG,kBAAf,EAAmC7B,IAAnC,EAAyC,KAAzC;EACAkB,IAAAA,GAAG,CAACS,GAAD,CAAH,CAASE,GAAG,GAAG,MAAf,EAAuB7B,IAAvB,EAA6B,KAA7B;EACH;EACJ;;EAED;;EACA;;;EACA,SAASsC,GAAT,CAAaC,CAAb,EAA8B;EAAA,MAAdC,KAAc,uEAAN,IAAM;EAC1B,MAAIC,OAAO,GAAGC,SAAS,CAAC,CAAD,CAAT,KAAiB,IAA/B;;EACA,WAASC,GAAT,CAAaJ,CAAb,EAAgB;EACZ,QAAI,CAACK,QAAQ,EAAb,EAAiB;EACb;EACH;;EACD,QAAIC,KAAK,GAAGC,UAAU,CAACC,GAAX,CAAe,MAAf,EAAuBR,CAAvB,CAAZ;;EACA,QAAIC,KAAK,KAAK,IAAV,IAAkBA,KAAK,YAAYQ,MAAjB,IAA2BR,KAAK,CAACS,IAAN,CAAWJ,KAAX,CAAjD,EAAoE;EAChEK,MAAAA,OAAO,CAACZ,GAAR,CAAYQ,UAAU,CAACC,GAAX,CAAe,MAAf,EAAuBR,CAAvB,IAA4B,IAA5B,GAAmCM,KAA/C;EACH;;EACD,QAAIJ,OAAJ,EAAa;EACTS,MAAAA,OAAO,CAACZ,GAAR,CAAYC,CAAZ;EACH;EACJ;;EACD,MAAIY,UAAU,CAACZ,CAAD,CAAd,EAAmB;EACfA,IAAAA,CAAC,CAACa,IAAF,CAAOT,GAAP;EACH,GAFD,MAEO;EACHA,IAAAA,GAAG,CAACJ,CAAD,CAAH;EACH;;EACD,SAAOA,CAAP;EACH;;EAED;;;EACA,SAASK,QAAT,GAAoB;EAChB,SAAOS,QAAQ,IAAIA,QAAQ,CAACN,GAAT,CAAa,OAAb,EAAsB;EAAEO,IAAAA,UAAU,EAAE;EAAd,GAAtB,CAAnB;EACH;EACD;;EACA;EACA;;;EACA,SAASC,eAAT,CAAyBC,QAAzB,EAAmC;EAC/B,SAAOA,QAAQ,iBAAUA,QAAV,8BAAsCA,QAAtC,SAAoD,YAAnE;EACH;;EACD,SAASC,eAAT,CAAyBD,QAAzB,EAAmCE,KAAnC,EAA0C;EACtC,mBAAUH,eAAe,CAACC,QAAD,CAAzB,kBAA2CE,KAA3C,eAAqDA,KAArD;EACH;;;EAED,SAASC,cAAT,CAAwBH,QAAxB,EAAkCE,KAAlC,EAAyC;EACrC;EACA,mBAAUH,eAAe,CAACC,QAAD,CAAzB,wBAAiDE,KAAjD,eAA2DA,KAA3D,2BAAiFA,KAAjF,kCAA8GA,KAA9G,eAAwHA,KAAxH,eAAkIA,KAAlI;EACH;;EACD,SAASE,cAAT,CAAwBJ,QAAxB,EAAkCE,KAAlC,EAAyC;EACrC,mBAAUH,eAAe,CAACC,QAAD,CAAzB,kBAA2CE,KAA3C;EACH;;EACD,IAAIG,KAAK,GAAG,uDAAZ;EACA,IAAIC,UAAU,GAAG,oGAAjB;;EAEA,IAAIC,kBAAkB,4DAAqDD,UAArD,+BAAoFA,UAApF,gDAAtB;EACA,IAAIE,QAAQ,GAAG,IAAIhB,MAAJ,oBAAuBc,UAAvB,QAAsC,GAAtC,CAAf;;EACA,SAASG,qBAAT,CAA+BT,QAA/B,EAAyCE,KAAzC,EAAgD;EAC5C;EACA,MAAIQ,GAAG,GAAGV,QAAQ,KAAK,GAAb,oBAA6BE,KAA7B,0BAAkDA,KAAlD,MAAV;EACA,MAAIS,EAAE,GAAG,EAAT;;EACA,MAAIX,QAAQ,KAAK,EAAjB,EAAqB;EACjBW,IAAAA,EAAE,GAAG,mGAAL;EACH;;EACD,SAAO,IAAInB,MAAJ,mBAAsBmB,EAAtB,yCAAuDT,KAAvD,eAAiEA,KAAjE,iBAA6EA,KAA7E,oBAA4FA,KAA5F,eAAsGQ,GAAtG,iBAAgHC,EAAhH,yCAAiJT,KAAjJ,eAA2JA,KAA3J,oBAA0KA,KAA1K,gBAA4L,GAA5L,CAAP;EACH;;EACD,IAAIU,eAAe,GAAI,YAAW;EAC9B,MAAIC,MAAM,GAAG,EAAb;EACA,GACI,CAAC,EAAD,EAAK,EAAL,EAAS,OAAT,CADJ,EAEI,CAAC,EAAD,EAAK,GAAL,EAAU,aAAV,CAFJ,EAGI,CAAC,CAAD,EAAI,GAAJ,EAAS,OAAT,CAHJ,EAII,CAAC,CAAD,EAAI,GAAJ,EAAS,MAAT,CAJJ,EAKEC,OALF,CAKU,gBAA8B;EAAA;EAAA,QAA5BC,KAA4B;EAAA,QAArBf,QAAqB;EAAA,QAAXE,KAAW;;EACpCW,IAAAA,MAAM,CAACE,KAAD,CAAN,GAAgBN,qBAAqB,CAACT,QAAD,EAAWE,KAAX,CAArC;EACH,GAPD;EAQA,SAAOW,MAAP;EACH,CAXqB,EAAtB;;EAYA,IAAMG,UAAU,GAAG;EACf,WAAS,MADM;EAEf,eAAa,MAFE;EAGf,YAAU,MAHK;EAIf,YAAU,MAJK;EAKf,aAAW,IALI;EAMf,UAAQ,MANO;EAOf,YAAU,IAPK;EAQf,WAAS,GARM;EASf,SAAO,IATQ;EAUf;EACA,SAAO,MAXQ;EAYf,SAAO,MAZQ;EAaf,SAAO,MAbQ;EAcf,SAAO,MAdQ;EAef,SAAO,MAfQ;EAgBf,SAAO,MAhBQ;EAiBf,SAAO,MAjBQ;EAkBf,SAAO,MAlBQ;EAmBf,SAAO,MAnBQ;EAoBf,SAAO,MApBQ;EAqBf,SAAO,MArBQ;EAsBf,SAAO,MAtBQ;EAuBf,SAAO,MAvBQ;EAwBf,SAAO,MAxBQ;EAyBf,SAAO,MAzBQ;EA0Bf,QAAM,MA1BS;EA2Bf,SAAO,MA3BQ;EA4Bf,QAAM,MA5BS;EA6Bf,QAAM,MA7BS;EA8Bf,QAAM,MA9BS;EA+Bf,SAAO,MA/BQ;EAgCf,QAAM,MAhCS;EAiCf,SAAO,MAjCQ;EAkCf,QAAM,MAlCS;EAmCf,QAAM,MAnCS;EAoCf,QAAM,MApCS;EAqCf,QAAM,MArCS;EAsCf,QAAM,MAtCS;EAuCf,QAAM,MAvCS;EAwCf,QAAM,MAxCS;EAyCf,QAAM,MAzCS;EA0Cf,SAAO;EA1CQ,CAAnB;EA6CA;EACA;;EACA,SAASC,UAAT,CAAoBC,MAApB,EAA4B;EACxB,MAAMC,MAAM,GAAG,EAAf;EACA,MAAIC,OAAO,GAAG,CAAd;EACA,MAAMC,MAAM,GAAGH,MAAM,CAACG,MAAtB;;EACA,SAAOD,OAAO,GAAGC,MAAjB,EAAyB;EACrB,QAAMhC,KAAK,GAAG6B,MAAM,CAACI,UAAP,CAAkBF,OAAO,EAAzB,CAAd;;EACA,QAAI/B,KAAK,IAAI,MAAT,IAAmBA,KAAK,IAAI,MAA5B,IAAsC+B,OAAO,GAAGC,MAApD,EAA4D;EACxD;EACA,UAAME,KAAK,GAAGL,MAAM,CAACI,UAAP,CAAkBF,OAAO,EAAzB,CAAd;;EACA,UAAI,CAACG,KAAK,GAAG,MAAT,MAAqB,MAAzB,EAAiC;EAAE;EAC/BJ,QAAAA,MAAM,CAACK,IAAP,CAAY,CAAC,CAACnC,KAAK,GAAG,KAAT,KAAmB,EAApB,KAA2BkC,KAAK,GAAG,KAAnC,IAA4C,OAAxD;EACH,OAFD,MAEO;EACH;EACA;EACAJ,QAAAA,MAAM,CAACK,IAAP,CAAYnC,KAAZ;EACA+B,QAAAA,OAAO;EACV;EACJ,KAXD,MAWO;EACHD,MAAAA,MAAM,CAACK,IAAP,CAAYnC,KAAZ;EACH;EACJ;;EACD,SAAO8B,MAAP;EACH;;;EAED,IAAMM,iBAAiB,GAAGC,MAAM,CAACC,IAAP,CAAYX,UAAZ,EAAwBY,IAAxB,CAA6B,GAA7B,CAA1B;EACA,IAAMC,WAAW,gCAAyBJ,iBAAzB,eAAjB;EACA,IAAMK,OAAO,GAAG,IAAItC,MAAJ,YAAeqC,WAAf,QAA+B,GAA/B,CAAhB;;EAEA,SAASE,aAAT,CAAuBpE,EAAvB,EAA2B;EACvB,MAAMqE,MAAM,GAAG,CACX,CAAC,GAAD,EAAM,OAAN,CADW,EAEX,CAAC,GAAD,EAAM,aAAN,CAFW,EAGX,CAAC,GAAD,EAAM,MAAN,CAHW,EAIX,CAAC,GAAD,EAAM,OAAN,CAJW,EAKX,CAAC,EAAD,EAAK,OAAL,CALW,CAAf,CADuB;;EASvB,MAAInB,MAAM,GAAGmB,MAAM,CAACC,GAAP,CAAW;EAAA;EAAA,QAAEC,CAAF;EAAA,QAAKhC,KAAL;;EAAA,WAAgBvC,EAAE,CAACuE,CAAD,EAAIhC,KAAJ,CAAlB;EAAA,GAAX,EAAyC0B,IAAzC,CAA8C,GAA9C,CAAb;;EACA,MAAIjE,EAAE,KAAKwC,cAAX,EAA2B;EACvBU,IAAAA,MAAM,GAAGN,kBAAkB,GAAG,GAArB,GAA2BM,MAApC;EACH;;EACD,SAAOA,MAAP;EACH;;EACD,SAASsB,YAAT,CAAsBxE,EAAtB,EAA0B;EACtB,SAAO,IAAI6B,MAAJ,CAAW,SAASuC,aAAa,CAACpE,EAAD,CAAtB,GAA6B,IAAxC,EAA8C,GAA9C,CAAP;EACH;;EACD,IAAMyE,UAAU,GAAGD,YAAY,CAAChC,cAAD,CAA/B;EACA,IAAMkC,WAAW,GAAGF,YAAY,CAAClC,eAAD,CAAhC;EACA,IAAMqC,MAAM,GAAGH,YAAY,CAAC/B,cAAD,CAA3B;;EAGA,IAAMmC,WAAW,GAAG,IAAI/C,MAAJ,CAAW,SAASY,cAAc,CAAC,EAAD,EAAK,UAAL,CAAvB,GAA0C,IAArD,EAA2D,GAA3D,CAApB;EACA,IAAMoC,gBAAgB,GAAG,IAAIhD,MAAJ,CAAW,SAASS,eAAe,CAAC,EAAD,EAAK,UAAL,CAAxB,GAA2C,IAAtD,EAA4D,GAA5D,CAAzB;EACA,IAAMwC,eAAe,GAAG,IAAIjD,MAAJ,CAAW,SAASW,cAAc,CAAC,EAAD,EAAK,UAAL,CAAvB,GAA0C,IAArD,EAA2D,GAA3D,CAAxB;EAEA,IAAMuC,qBAAqB,GAAGjC,qBAAqB,CAAC,EAAD,EAAK,aAAL,CAAnD;EAEA,IAAMkC,gBAAgB,GAAG,2BAAzB;EACA;;EACA,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;EACxB,MAAIC,KAAK,GAAGD,GAAG,CAACE,KAAJ,CAAUJ,gBAAV,CAAZ;EACA,MAAIK,OAAO,GAAG,EAAd;;EACA,MAAIF,KAAK,CAAC,CAAD,CAAT,EAAc;EACV,QAAIvE,IAAI,GAAGuE,KAAK,CAAC,CAAD,CAAL,CAASG,OAAT,CAAiB,IAAjB,EAAuB,EAAvB,EAA2BC,WAA3B,GAAyCC,KAAzC,CAA+C,EAA/C,CAAX;;EACA,QAAI5E,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EACpBJ,MAAAA,OAAO,CAACjC,KAAR,GAAgB,EAAhB;EACH,KAFD,MAEO,IAAIxC,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EAC3BJ,MAAAA,OAAO,CAACjC,KAAR,GAAgB,CAAhB;EACH,KAFM,MAEA,IAAIxC,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EAC3BJ,MAAAA,OAAO,CAACjC,KAAR,GAAgB,CAAhB;EACH,KAFM,MAEA,IAAIxC,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EAC3BJ,MAAAA,OAAO,CAACjC,KAAR,GAAgB,EAAhB;EACH;;EACD,QAAIxC,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EACpBJ,MAAAA,OAAO,CAACK,OAAR,GAAkB,IAAlB;EACH;;EACD,QAAI9E,IAAI,CAAC6E,QAAL,CAAc,GAAd,CAAJ,EAAwB;EACpBJ,MAAAA,OAAO,CAACM,KAAR,GAAgB,IAAhB;EACH;EACJ;;EACDN,EAAAA,OAAO,CAACO,MAAR,GAAiBT,KAAK,CAAC,CAAD,CAAtB;EACA,SAAOE,OAAP;EACH;;;EAED,SAASQ,cAAT,CAAwBX,GAAxB,EAAyC;EAAA,MAAZ9B,KAAY,uEAAJ,EAAI;EACrC,MAAI0C,KAAK,GAAGb,aAAa,CAACC,GAAD,CAAzB;EACA,MAAIC,KAAK,GAAGW,KAAK,CAACF,MAAN,CAAaJ,KAAb,CAAmB,GAAnB,CAAZ;EACA,MAAIO,GAAG,GAAGC,SAAS,CAAC;EAChBD,IAAAA,GAAG,EAAEE,OAAO,CAAC,CAACd,KAAK,CAAC,CAAD,CAAN,EAAWW,KAAK,CAAC1C,KAAN,IAAeA,KAA1B,CAAD,CADI;EAEhB8C,IAAAA,KAAK,EAAED,OAAO,CAAC,CAACd,KAAK,CAAC,CAAD,CAAN,EAAWW,KAAK,CAAC1C,KAAN,IAAeA,KAA1B,CAAD;EAFE,GAAD,CAAnB;;EAIA,MAAI0C,KAAK,CAACJ,OAAV,EAAmB;EACf,WAAOK,GAAG,CAACI,OAAJ,EAAP;EACH,GAFD,MAEO;EACH,WAAOJ,GAAP;EACH;EACJ;;;EAED,SAASK,aAAT,CAAuBlB,GAAvB,EAAwC;EAAA,MAAZ9B,KAAY,uEAAJ,EAAI;EACpC,MAAI0C,KAAK,GAAGb,aAAa,CAACC,GAAD,CAAzB;;EACA,MAAIY,KAAK,CAACJ,OAAV,EAAmB;EACf,WAAOW,MAAM,CAACC,QAAQ,CAACR,KAAK,CAACF,MAAP,EAAeE,KAAK,CAAC1C,KAAN,IAAeA,KAA9B,CAAT,CAAb;EACH;;EACD,SAAO6C,OAAO,CAAC,CAACH,KAAK,CAACF,MAAP,EAAeE,KAAK,CAAC1C,KAAN,IAAeA,KAA9B,CAAD,CAAd;EACH;;;EAED,SAASmD,eAAT,CAAyBrB,GAAzB,EAA8B;EAC1B,MAAIX,CAAC,GAAGW,GAAG,CAACE,KAAJ,CAAU,mBAAV,CAAR;;EACA,MAAIoB,KAAJ;;EACA,MAAIjC,CAAJ,EAAO;EACH,QAAIkC,GAAG,GAAGH,QAAQ,CAAC/B,CAAC,CAAC,CAAD,CAAF,EAAO,EAAP,CAAlB;EACAiC,IAAAA,KAAI,GAAGE,MAAM,CAACC,aAAP,CAAqBF,GAArB,CAAP;EACH,GAHD,MAGO;EACHlC,IAAAA,CAAC,GAAGW,GAAG,CAACE,KAAJ,CAAU,UAAV,CAAJ;;EACA,QAAIb,CAAJ,EAAO;EACHiC,MAAAA,KAAI,GAAGjC,CAAC,CAAC,CAAD,CAAR;EACH;EACJ;;EACD,MAAIiC,KAAJ,EAAU;EACN,WAAOI,UAAU,CAACJ,KAAD,CAAjB;EACH;;EACD,QAAM,IAAIK,KAAJ,CAAU,0BAAV,CAAN;EACH;;;EAED,SAASC,aAAT,CAAuB5B,GAAvB,EAAwC;EAAA,MAAZ9B,KAAY,uEAAJ,EAAI;;EACpC,WAAS2D,SAAT,CAAmBC,CAAnB,EAAsB;EAClB,QAAItF,KAAJ;;EACA,QAAIsF,CAAC,KAAK,GAAV,EAAe;EACXtF,MAAAA,KAAK,GAAGuE,OAAO,CAAC,CAAD,CAAf;EACH,KAFD,MAEO,IAAIe,CAAC,KAAK,GAAV,EAAe;EAClBtF,MAAAA,KAAK,GAAGuE,OAAO,CAAC,CAAC,CAAF,CAAf;EACH,KAFM,MAEA,IAAIe,CAAC,CAAC5B,KAAF,CAAQR,WAAR,CAAJ,EAA0B;EAC7BlD,MAAAA,KAAK,GAAGuE,OAAO,CAAC,CAACe,CAAD,EAAI5D,KAAJ,CAAD,CAAf;EACH,KAFM,MAEA,IAAI4D,CAAC,CAAC5B,KAAF,CAAQP,gBAAR,CAAJ,EAA+B;EAClC,UAAIM,KAAK,GAAG6B,CAAC,CAACxB,KAAF,CAAQ,GAAR,CAAZ;EACA9D,MAAAA,KAAK,GAAGsE,SAAS,CAAC;EACdD,QAAAA,GAAG,EAAEE,OAAO,CAAC,CAACd,KAAK,CAAC,CAAD,CAAN,EAAW/B,KAAX,CAAD,CADE;EAEd8C,QAAAA,KAAK,EAAED,OAAO,CAAC,CAACd,KAAK,CAAC,CAAD,CAAN,EAAW/B,KAAX,CAAD;EAFA,OAAD,CAAjB;EAIH,KANM,MAMA,IAAI4D,CAAC,CAAC5B,KAAF,CAAQvC,QAAR,CAAJ,EAAuB;EAC1B,UAAIoE,MAAK,GAAGC,WAAW,CAACF,CAAD,CAAvB;;EACA,UAAIlB,KAAK,CAACH,KAAV,EAAiB;EACb,eAAOsB,MAAK,CAACE,UAAN,EAAP;EACH;;EACD,aAAOF,MAAP;EACH,KANM,MAMA,IAAID,CAAC,CAAC5B,KAAF,CAAQ,QAAR,CAAJ,EAAuB;EAC1B,aAAOa,OAAO,CAACmB,GAAD,CAAd;EACH,KAFM,MAEA,IAAIJ,CAAC,CAAC5B,KAAF,CAAQ,QAAR,CAAJ,EAAuB;EAC1B,UAAI4B,CAAC,CAAC,CAAD,CAAD,KAAS,GAAb,EAAkB;EACd,eAAOf,OAAO,CAACoB,MAAM,CAACC,iBAAR,CAAd;EACH;;EACD,aAAOrB,OAAO,CAACoB,MAAM,CAACE,iBAAR,CAAd;EACH,KALM,MAKA;EACH,YAAM,IAAIV,KAAJ,CAAU,uBAAV,CAAN;EACH;;EACD,QAAIf,KAAK,CAACJ,OAAV,EAAmB;EACf,aAAOW,MAAM,CAAC3E,KAAK,CAACyE,OAAN,EAAD,CAAb;EACH;;EACD,WAAOzE,KAAP;EACH;;EACD,MAAIoE,KAAK,GAAGb,aAAa,CAACC,GAAD,CAAzB;EACA9B,EAAAA,KAAK,GAAG0C,KAAK,CAAC1C,KAAN,IAAeA,KAAvB;EACA,MAAI+B,KAAJ;EACA,MAAIqC,UAAU,GAAG1B,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmBL,qBAAnB,CAAjB;;EACA,MAAI3B,KAAK,KAAK,EAAV,IAAgBoE,UAApB,EAAgC;EAC5BrC,IAAAA,KAAK,GAAGqC,UAAR;EACH,GAFD,MAEO;EACHrC,IAAAA,KAAK,GAAGW,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmBnC,eAAe,CAACG,KAAD,CAAlC,CAAR;EACH;;EACD,MAAIqE,EAAJ,EAAQC,EAAR;EACAA,EAAAA,EAAE,GAAGX,SAAS,CAAC5B,KAAK,CAAC,CAAD,CAAN,CAAd;;EACA,MAAIA,KAAK,CAAC,CAAD,CAAT,EAAc;EACVsC,IAAAA,EAAE,GAAGV,SAAS,CAAC5B,KAAK,CAAC,CAAD,CAAN,CAAd;EACH,GAFD,MAEO;EACHsC,IAAAA,EAAE,GAAGxB,OAAO,CAAC,CAAD,CAAZ;EACH;;EACD,MAAIyB,EAAE,CAACC,GAAH,CAAO,CAAP,MAAc,CAAd,IAAmBD,EAAE,CAACE,QAAH,KAAgB,QAAvC,EAAiD;EAC7C,WAAOH,EAAP;EACH;;EACD,SAAOI,QAAQ,CAAC;EAAEH,IAAAA,EAAE,EAAFA,EAAF;EAAMD,IAAAA,EAAE,EAAFA;EAAN,GAAD,CAAf;EACH;;;EAED,SAASK,MAAT,CAAgBpG,KAAhB,EAAuB;EACnB,SAAO4E,QAAQ,CAAC5E,KAAK,CAAC3C,QAAN,EAAD,EAAmB,EAAnB,CAAR,KAAmC2C,KAA1C;EACH;;;EAED,SAASqG,aAAT,CAAuBC,GAAvB,EAA4B;EACxB,MAAIC,SAAS,GAAGD,GAAG,CAAC5C,KAAJ,CAAU,gDAAV,CAAhB;;EACA,MAAI6C,SAAJ,EAAe;EACX,QAAIC,QAAQ,GAAG5B,QAAQ,CAAC2B,SAAS,CAAC,CAAD,CAAV,EAAe,EAAf,CAAvB;EACA,QAAIE,OAAJ,CAFW;;EAGX,QAAIC,MAAM,GAAGH,SAAS,CAAC,CAAD,CAAT,CAAa3C,OAAb,CAAqB,oBAArB,EAA2C,IAA3C,EAAiD5B,MAA9D;EACA,QAAI2E,cAAc,GAAGJ,SAAS,CAAC,CAAD,CAAT,IAAgBA,SAAS,CAAC,CAAD,CAAT,CAAavE,MAAlD;;EACA,QAAI0E,MAAM,GAAGE,IAAI,CAACC,GAAL,CAASL,QAAT,CAAb,EAAiC;EAC7BC,MAAAA,OAAO,GAAGlC,OAAO,CAAC,CAACgC,SAAS,CAAC,CAAD,CAAT,CAAa3C,OAAb,CAAqB,IAArB,EAA2B,EAA3B,CAAD,EAAiC,EAAjC,CAAD,CAAjB;;EACA,UAAI+C,cAAJ,EAAoB;EAChBH,QAAAA,QAAQ,IAAIG,cAAZ;EACH;EACJ;EACJ;;EACD,SAAO;EAAEH,IAAAA,QAAQ,EAARA,QAAF;EAAYC,IAAAA,OAAO,EAAPA;EAAZ,GAAP;EACH;;;EAED,SAASjB,WAAT,CAAqBhC,GAArB,EAA0B;EACtB,MAAIY,KAAK,GAAGb,aAAa,CAACC,GAAD,CAAzB;EACA,MAAIxD,KAAK,GAAG8G,UAAU,CAAC1C,KAAK,CAACF,MAAP,CAAtB;EACA,MAAI6C,aAAa,GAAG,CAAC3C,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmB,MAAnB,KACA,CAACU,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmB,IAAnB,CADF,KAC+B,CAACU,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmB,IAAnB,CADpD;;EAEA,MAAI,CAACU,KAAK,CAACJ,OAAX,EAAoB;EAChB,QAAII,KAAK,CAACH,KAAN,IAAe8C,aAAnB,EAAkC;EAC9B,aAAOxC,OAAO,CAACvE,KAAD,CAAd;EACH,KAHe;;;EAKhB,QAAIoG,MAAM,CAACpG,KAAD,CAAN,IAAiBoE,KAAK,CAACF,MAAN,CAAaR,KAAb,CAAmB,YAAnB,CAArB,EAAuD;EACnD,aAAOa,OAAO,CAACvE,KAAD,CAAd;EACH,KAPe;;;EAShB,yBAA4BqG,aAAa,CAACjC,KAAK,CAACF,MAAP,CAAzC;EAAA,QAAMuC,OAAN,kBAAMA,OAAN;EAAA,QAAeD,QAAf,kBAAeA,QAAf;;EACA,QAAIC,OAAO,KAAKxJ,SAAZ,IAAyBuJ,QAAQ,KAAKvJ,SAA1C,EAAqD;EACjD,UAAI+J,MAAM,GAAGzC,OAAO,CAAC,EAAD,CAAP,CAAY0C,GAAZ,CAAgB1C,OAAO,CAACqC,IAAI,CAACC,GAAL,CAASL,QAAT,CAAD,CAAvB,CAAb;;EACA,UAAIpC,KAAK,CAACH,KAAN,IAAeuC,QAAQ,GAAG,CAA9B,EAAiC;EAC7B,eAAOlC,SAAS,CAAC;EAAED,UAAAA,GAAG,EAAEoC,OAAP;EAAgBjC,UAAAA,KAAK,EAAEwC;EAAvB,SAAD,CAAhB;EACH,OAFD,MAEO,IAAIR,QAAQ,GAAG,CAAf,EAAkB;EACrB,eAAOjC,OAAO,CAACkC,OAAD,CAAP,CAAiBS,GAAjB,CAAqBF,MAArB,CAAP;EACH;EACJ;EACJ;;EACDhH,EAAAA,KAAK,GAAG2E,MAAM,CAAC3E,KAAD,CAAd;;EACA,MAAIoE,KAAK,CAACH,KAAV,EAAiB;EACb,WAAOjE,KAAK,CAACyF,UAAN,EAAP;EACH;;EACD,SAAOzF,KAAP;EACH;;;EAED,SAASmH,YAAT,CAAsBtF,MAAtB,EAA8B;EAC1B;EACAA,EAAAA,MAAM,GAAGA,MAAM,CAAC+B,OAAP,CAAe,mBAAf,EAAoC,UAASwD,CAAT,EAAYC,GAAZ,EAAiB;EAC1D,WAAO,QAAQA,GAAG,CAACC,QAAJ,CAAa,CAAb,EAAgB,GAAhB,CAAf;EACH,GAFQ,EAEN1D,OAFM,CAEE,KAFF,EAES,KAFT,CAAT,CAF0B;;EAK1B,MAAIf,CAAC,GAAGhB,MAAM,CAAC6B,KAAP,CAAa,qBAAb,CAAR;;EACA,MAAIb,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,CAAKb,MAAL,GAAc,CAAd,KAAoB,CAA7B,EAAgC;EAC5B,UAAM,IAAImD,KAAJ,4CAA8CtC,CAAC,CAAC,CAAD,CAA/C,EAAN;EACH;;EACD,MAAI;EACA,WAAO0E,OAAO,CAACC,IAAI,CAACpD,KAAL,CAAWvC,MAAX,CAAD,CAAd;EACH,GAFD,CAEE,OAAO5C,CAAP,EAAU;EACR,UAAM,IAAIkG,KAAJ,CAAU,wBAAV,CAAN;EACH;EACJ;;;EAED,SAASsC,YAAT,CAAsBjE,GAAtB,EAA2B;EACvB,MAAIA,GAAG,CAACE,KAAJ,CAAU,UAAV,CAAJ,EAA2B;EACvBF,IAAAA,GAAG,GAAGA,GAAG,CAACI,OAAJ,CAAY,cAAZ,EAA4B,EAA5B,CAAN;EACA,QAAI8D,KAAK,GAAG;EACRC,MAAAA,CAAC,EAAE,IADK;EAERC,MAAAA,CAAC,EAAE,IAFK;EAGRtC,MAAAA,CAAC,EAAE;EAHK,KAAZ;EAKA9B,IAAAA,GAAG,GAAGA,GAAG,CAACI,OAAJ,CAAY,cAAZ,EAA4B,UAASwD,CAAT,EAAYS,GAAZ,EAAiB;EAC/C,aAAO7C,MAAM,CAAC8C,YAAP,CAAoBlD,QAAQ,CAAC,MAAMiD,GAAP,EAAY,EAAZ,CAA5B,CAAP;EACH,KAFK,EAEHjE,OAFG,CAEK,QAFL,EAEe,UAASwD,CAAT,EAAYS,GAAZ,EAAiB;EAClC,aAAOH,KAAK,CAACG,GAAD,CAAL,IAAcA,GAArB;EACH,KAJK,CAAN;EAKH;;EACD,SAAO,IAAIE,OAAJ,CAAYvE,GAAZ,CAAP;EACH;;;EAED,SAASwE,cAAT,CAAwBxE,GAAxB,EAA6B;EACzB,MAAIyE,SAAS,CAACC,cAAV,CAAyB1E,GAAzB,CAAJ,EAAmC;EAC/B,WAAOyE,SAAS,CAACzE,GAAD,CAAhB;EACH;;EACD,MAAIA,GAAG,CAACE,KAAJ,CAAU,aAAV,CAAJ,EAA8B;EAC1B,WAAOyD,YAAY,CAAC3D,GAAD,CAAnB;EACH,GAFD,MAEO,IAAIA,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;EACvB,QAAI7D,KAAK,GAAG6D,GAAG,CAACE,KAAJ,CAAU1C,KAAV,CAAZ;;EACA,QAAIrB,KAAJ,EAAW;EACP,aAAO,IAAIQ,MAAJ,CAAWR,KAAK,CAAC,CAAD,CAAhB,EAAqBA,KAAK,CAAC,CAAD,CAA1B,CAAP;EACH,KAFD,MAEO,IAAI6D,GAAG,CAACE,KAAJ,CAAUjB,OAAV,CAAJ,EAAwB;EAC3B,aAAOoC,eAAe,CAACrB,GAAD,CAAtB;EACH,KANsB;;;EAQvB,QAAIX,CAAC,GAAGW,GAAG,CAACE,KAAJ,CAAU,SAAV,CAAR;;EACA,QAAIb,CAAC,IAAIjB,UAAU,CAACiB,CAAC,CAAC,CAAD,CAAF,CAAV,CAAiBb,MAAjB,KAA4B,CAArC,EAAwC;EACpC,aAAO6C,eAAe,CAACrB,GAAD,CAAtB;EACH;EACJ;;EACD,MAAIA,GAAG,CAACE,KAAJ,CAAU,iBAAV,CAAJ,EAAkC;EAC9B,QAAIF,GAAG,CAACE,KAAJ,CAAUT,MAAV,CAAJ,EAAuB;EACnB,aAAOyB,aAAa,CAAClB,GAAD,CAApB;EACH,KAFD,MAEO,IAAIA,GAAG,CAACE,KAAJ,CAAUvC,QAAV,CAAJ,EAAyB;EAC5B,aAAOqE,WAAW,CAAChC,GAAD,CAAlB;EACH,KAFM,MAEA,IAAIA,GAAG,CAACE,KAAJ,CAAUV,WAAV,CAAJ,EAA4B;EAC/B,aAAOmB,cAAc,CAACX,GAAD,CAArB;EACH,KAFM,MAEA,IAAIA,GAAG,CAACE,KAAJ,CAAUX,UAAV,CAAJ,EAA2B;EAC9B,aAAOqC,aAAa,CAAC5B,GAAD,CAApB;EACH;EACJ;;EACD,MAAIA,GAAG,CAACE,KAAJ,CAAU,YAAV,CAAJ,EAA6B;EACzB,UAAM,IAAIyB,KAAJ,CAAU,+BAA+B3B,GAAzC,CAAN;EACH;;EACD,SAAOiE,YAAY,CAACjE,GAAD,CAAnB;EACH;;;EAED,SAAS2E,cAAT,CAAwB7B,GAAxB,EAA6B;EACzB,SAAO,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqBvC,QAArB,CAA8BuC,GAA9B,KACA8B,QAAQ,CAACC,KAAT,GAAiBtE,QAAjB,CAA0BuC,GAA1B,CADF,CAAP;EAEH;;;EAED,SAASgC,gBAAT,CAA0BhC,GAA1B,EAA+B;EAC3B,SAAO6B,cAAc,CAAC7B,GAAD,CAAd,IACH,EAAEA,GAAG,CAAC5C,KAAJ,CAAU1C,KAAV,KACAsF,GAAG,CAAC5C,KAAJ,CAAU,aAAV,CADA,IAC4B4C,GAAG,CAAC5C,KAAJ,CAAUT,MAAV,CAD5B,IAEAqD,GAAG,CAAC5C,KAAJ,CAAUvC,QAAV,CAFA,IAEuBmF,GAAG,CAAC5C,KAAJ,CAAUX,UAAV,CAFvB,IAGAuD,GAAG,CAAC5C,KAAJ,CAAUV,WAAV,CAHA,IAG0BsD,GAAG,CAAC5C,KAAJ,CAAUjB,OAAV,CAH1B,IAIA,CAAC,IAAD,EAAO,IAAP,EAAa,KAAb,EAAoB,MAApB,EAA4B,OAA5B,EAAqCsB,QAArC,CAA8CuC,GAA9C,CAJF,CADJ;EAMH;;;EAED,IAAIiC,SAAS,GAAG,wBAAhB;;EAEA,SAASC,YAAT,CAAsBlC,GAAtB,EAA2B;EACvB,MAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;EACzB,QAAImC,OAAO,GAAG,wBAAd;EACA,WAAOnC,GAAG,CAAC1C,OAAJ,CAAY6E,OAAZ,EAAqB,MAArB,CAAP;EACH;;EACD,SAAOnC,GAAP;EACH;EAED;EACA;EACA;;;EACA,SAASoC,KAAT,GAAiB;EACb,OAAKC,IAAL,GAAY,EAAZ;EACH;;EACDD,KAAK,CAACE,SAAN,CAAgBzG,IAAhB,GAAuB,UAAS0G,IAAT,EAAe;EAClC,OAAKF,IAAL,CAAUxG,IAAV,CAAe0G,IAAf;EACH,CAFD;;EAGAH,KAAK,CAACE,SAAN,CAAgBpK,GAAhB,GAAsB,YAAW;EAC7B,SAAO,KAAKmK,IAAL,CAAU,KAAKA,IAAL,CAAU3G,MAAV,GAAmB,CAA7B,CAAP;EACH,CAFD;;EAGA0G,KAAK,CAACE,SAAN,CAAgBE,GAAhB,GAAsB,YAAW;EAC7B,SAAO,KAAKH,IAAL,CAAUG,GAAV,EAAP;EACH,CAFD;;EAGAJ,KAAK,CAACE,SAAN,CAAgBG,QAAhB,GAA2B,YAAW;EAClC,SAAO,CAAC,KAAKJ,IAAL,CAAU3G,MAAlB;EACH,CAFD;;;EAIA,SAASgH,MAAT,CAAgB1C,GAAhB,EAAqB;EACjB,MAAIA,GAAG,YAAYiB,OAAnB,EAA4B;EACxBjB,IAAAA,GAAG,GAAGA,GAAG,CAAC7B,OAAJ,EAAN;EACH;;EACD,MAAIwE,KAAK,GAAG,IAAIC,KAAJ,CAAU5C,GAAV,EAAe;EAAE6C,IAAAA,UAAU,EAAE;EAAd,GAAf,CAAZ;EACA,MAAI3H,MAAM,GAAG,EAAb;;EACA,SAAO,IAAP,EAAa;EACT,QAAM4H,KAAK,GAAGH,KAAK,CAACI,IAAN,CAAW,IAAX,CAAd;;EACA,QAAID,KAAK,KAAKE,GAAd,EAAmB;EACf;EACH;;EACD9H,IAAAA,MAAM,CAACW,IAAP,CAAYiH,KAAZ;EACAH,IAAAA,KAAK,CAACM,IAAN;EACH;;EACD,SAAO/H,MAAP;EACH;;;EAED,SAASgI,mBAAT,CAA6BC,IAA7B,EAAmC;EAC/B,MAAML,KAAN,GAAyBK,IAAzB,CAAML,KAAN;EAAA,MAAgBM,IAAhB,4BAAyBD,IAAzB;;EACA,MAAIL,KAAK,CAAC1F,KAAN,CAAY,aAAZ,KAA8B0F,KAAK,CAAC1F,KAAN,CAAY,IAAZ,CAAlC,EAAqD;EACjD,QAAIqC,EAAE,GAAG,IAAI5F,MAAJ,CAAW,WAAWsJ,IAAI,CAACE,GAAL,GAAW,CAAtB,IAA2B,GAAtC,EAA2C,IAA3C,CAAT;EACAP,IAAAA,KAAK,GAAGA,KAAK,CAACxF,OAAN,CAAcmC,EAAd,EAAkB,EAAlB,CAAR;EACH;;EACD;EACIqD,IAAAA,KAAK,EAALA;EADJ,KAEOM,IAFP;EAIH;;;EAED,SAASE,KAAT,CAAetL,EAAf,EAAoC;EAAA,MAAjBuL,IAAiB,uEAAV,YAAM,EAAI;EAChC,OAAKvL,EAAL,GAAUA,EAAV;EACA,OAAKuL,IAAL,GAAYA,IAAZ;EACH;;;EAEDD,KAAK,CAAChB,SAAN,CAAgBvL,QAAhB,GAA2B,YAAW;EAClC,SAAO,UAAP;EACH,CAFD;;;EAIA,SAASyM,UAAT,CAAoBxL,EAApB,EAAwB;EACpB,SAAO,YAAkB;EAAA,sCAANyL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACrB,WAAOC,MAAM,CAAC1L,EAAE,CAAC2L,KAAH,CAAS,IAAT,EAAeF,IAAf,CAAD,CAAb;EACH,GAFD;EAGH;;;EAED,SAASC,MAAT,CAAgBxI,MAAhB,EAAwB;EACpB,SAAOA,MAAM,YAAYoI,KAAzB,EAAgC;EAC5B,QAAMM,KAAK,GAAG1I,MAAd;EACAA,IAAAA,MAAM,GAAGA,MAAM,CAAClD,EAAP,EAAT;;EACA,QAAI,EAAEkD,MAAM,YAAYoI,KAApB,CAAJ,EAAgC;EAC5BM,MAAAA,KAAK,CAACL,IAAN;EACH;EACJ;;EACD,SAAOrI,MAAP;EACH;;;EAED,SAAS2I,QAAT,CAAkB7D,GAAlB,EAAqC;EAAA,MAAdmD,IAAc,uEAAP,KAAO;;EACjC,MAAInD,GAAG,YAAYiB,OAAnB,EAA4B;EACxBjB,IAAAA,GAAG,GAAGA,GAAG,CAACjJ,QAAJ,EAAN;EACH;;EACD,MAAIoM,IAAJ,EAAU;EACN,WAAOT,MAAM,CAAC1C,GAAD,CAAb;EACH,GAFD,MAEO;EACH,QAAI9E,MAAM,GAAGwH,MAAM,CAAC1C,GAAD,CAAN,CAAY1D,GAAZ,CAAgB,UAASwG,KAAT,EAAgB;EACzC;EACA,UAAIA,KAAK,CAACA,KAAN,KAAgB,MAApB,EAA4B;EACxB,eAAOA,KAAK,CAACA,KAAb;EACH;;EACD,aAAOA,KAAK,CAACA,KAAN,CAAYgB,IAAZ,EAAP;EACH,KANY,EAMVC,MANU,CAMH,UAASjB,KAAT,EAAgB;EACtB,aAAOA,KAAK,IAAI,CAACA,KAAK,CAAC1F,KAAN,CAAY,IAAZ,CAAV,IAA+B,CAAC0F,KAAK,CAAC1F,KAAN,CAAY,iBAAZ,CAAvC;EACH,KARY,CAAb;EASA,WAAO4G,gBAAgB,CAAC9I,MAAD,CAAvB;EACH;EACJ;;;EAED,SAAS8I,gBAAT,CAA0BtB,MAA1B,EAAkC;EAC9B,MAAIuB,OAAO,GAAG,CAAd;EACA,MAAIC,OAAO,GAAG,IAAd;EACA,MAAIC,WAAW,GAAG,EAAlB;;EACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1B,MAAM,CAAChH,MAA3B,EAAmC,EAAE0I,CAArC,EAAwC;EACpC,QAAMtB,KAAK,GAAGJ,MAAM,CAAC0B,CAAD,CAApB;;EACA,QAAItB,KAAK,KAAK,IAAd,EAAoB;EAChB,UAAI,CAAC,GAAD,EAAM,GAAN,EAAWrF,QAAX,CAAoBiF,MAAM,CAAC0B,CAAC,GAAG,CAAL,CAA1B,CAAJ,EAAwC;EACpCH,QAAAA,OAAO,GAAG,CAAV;EACAC,QAAAA,OAAO,GAAGE,CAAV;EACH,OAHD,MAGO;EACHD,QAAAA,WAAW,CAACtI,IAAZ,CAAiB,CAACuI,CAAD,EAAIA,CAAC,GAAG,CAAR,CAAjB;EACH;;EACDA,MAAAA,CAAC,IAAI,CAAL;EACA;EACH;;EACD,QAAIF,OAAO,KAAK,IAAhB,EAAsB;EAClB,UAAI,CAAC,GAAD,EAAM,GAAN,EAAWzG,QAAX,CAAoBqF,KAApB,CAAJ,EAAgC;EAC5BmB,QAAAA,OAAO;EACV,OAFD,MAEO,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWxG,QAAX,CAAoBqF,KAApB,CAAJ,EAAgC;EACnCmB,QAAAA,OAAO;EACV;;EACD,UAAIA,OAAO,KAAK,CAAhB,EAAmB;EACfE,QAAAA,WAAW,CAACtI,IAAZ,CAAiB,CAACqI,OAAD,EAAUE,CAAC,GAAG,CAAd,CAAjB;EACAF,QAAAA,OAAO,GAAG,IAAV;EACH;EACJ;EACJ;;EACDxB,EAAAA,MAAM,GAAGA,MAAM,CAAC2B,KAAP,EAAT;EACAF,EAAAA,WAAW,CAACG,OAAZ;;EACA,kCAA2BH,WAA3B,kCAAwC;EAAnC;EAAA,QAAOI,KAAP;EAAA,QAAcC,GAAd;;EACD9B,IAAAA,MAAM,CAAC+B,MAAP,CAAcF,KAAd,EAAqBC,GAAG,GAAGD,KAA3B;EACH;;EACD,SAAO7B,MAAP;EACH;EAED;EACA;;;EACA,SAASgC,QAAT,CAAkBtL,CAAlB,EAAqB;EACjB,SAAO,QAAOA,CAAP,MAAa,QAAb,IACH,QAAOA,CAAP,MAAa,QAAb,IACA2C,MAAM,CAACuG,SAAP,CAAiBvL,QAAjB,CAA0B+B,IAA1B,CAA+BM,CAA/B,MAAsC,iBAF1C;EAGH;EAED;EACA;;;EACA,SAASqI,OAAT,CAAiBkD,IAAjB,EAAuB;EACnB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,KAAKC,WAAL,KAAqBnD,OAApD,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,OAAJ,CAAYkD,IAAZ,CAAP;EACH;;EACD,MAAIA,IAAI,YAAY1D,OAApB,EAA6B;EACzB0D,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,MAAIsD,OAAO,CAACoD,IAAR,CAAaF,IAAb,aAA8BlD,OAAlC,EAA2C;EACvC,WAAOA,OAAO,CAACoD,IAAR,CAAaF,IAAb,CAAP;EACH;;EACD,OAAKG,QAAL,GAAgBH,IAAhB;;EACA,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;EAC1BlD,IAAAA,OAAO,CAACoD,IAAR,CAAaF,IAAb,IAAqB,IAArB;EACH;EACJ;;EACDlD,OAAO,CAACoD,IAAR,GAAe,EAAf;EACApD,OAAO,CAACnI,OAAR,GAAkByL,MAAM,OAAN,CAAW,aAAX,CAAlB;EACAtD,OAAO,CAACuD,MAAR,GAAiBD,MAAM,OAAN,CAAW,YAAX,CAAjB;;EAEAtD,OAAO,CAACwD,EAAR,GAAa,UAASC,MAAT,EAAiBP,IAAjB,EAAuB;EAChC,SAAOO,MAAM,YAAYzD,OAAlB,KACDkD,IAAI,YAAYlD,OAAhB,IAA2ByD,MAAM,CAACJ,QAAP,KAAoBH,IAAI,CAACG,QAArD,IACC,OAAOH,IAAP,KAAgB,QAAhB,IAA4BO,MAAM,CAACJ,QAAP,KAAoBH,IADjD,IAECA,IAAI,YAAY9K,MAAhB,IAA0B8K,IAAI,CAAC7K,IAAL,CAAUoL,MAAM,CAACJ,QAAjB,CAHzB,CAAP;EAIH,CALD;;;EAOArD,OAAO,CAACa,SAAR,CAAkBvL,QAAlB,GAA6B,UAASoO,KAAT,EAAgB;EACzC;EACA,MAAIT,QAAQ,CAAC,KAAKI,QAAN,CAAZ,EAA6B;EACzB,WAAOM,gBAAgB,CAAC,KAAKN,QAAN,CAAvB;EACH;;EACD,MAAI9E,GAAG,GAAG,KAAK7B,OAAL,EAAV,CALyC;;EAOzC,MAAIgH,KAAK,IAAInF,GAAG,CAAC5C,KAAJ,CAAU,iBAAV,CAAb,EAA2C;EACvC,sBAAW4C,GAAX;EACH;;EACD,SAAOA,GAAP;EACH,CAXD;;EAYAyB,OAAO,CAACa,SAAR,CAAkBhJ,OAAlB,GAA4B,YAAW;EACnC,MAAI,KAAK+L,SAAL,EAAJ,EAAsB;EAClB,WAAO,KAAK5D,OAAO,CAACnI,OAAb,CAAP;EACH;;EACD,SAAO,KAAK6E,OAAL,EAAP;EACH,CALD;;EAMAsD,OAAO,CAACa,SAAR,CAAkBgD,SAAlB,GAA8B,YAAW;EACrC,MAAIrE,OAAO,CAACsE,QAAR,CAAiB,KAAKT,QAAtB,CAAJ,EAAqC;EACjC,WAAO,KAAKA,QAAZ;EACH;;EACD,SAAO,CAACM,gBAAgB,CAAC,KAAKN,QAAN,CAAjB,CAAP;EACH,CALD;;EAMArD,OAAO,CAACa,SAAR,CAAkBnE,OAAlB,GAA4B,YAAW;EACnC,SAAO,KAAK2G,QAAL,CAAc3G,OAAd,EAAP;EACH,CAFD;;;EAIAsD,OAAO,CAACa,SAAR,CAAkB+C,SAAlB,GAA8B,YAAW;EACrC,SAAOA,SAAS,CAAC,KAAKP,QAAN,CAAhB;EACH,CAFD;;;EAIA,SAASM,gBAAT,CAA0BI,GAA1B,EAA+B;EAC3B,SAAOA,GAAG,CAACzO,QAAJ,GAAeuG,OAAf,CAAuB,oBAAvB,EAA6C,IAA7C,CAAP;EACH;;;EAED,SAAS+H,SAAT,CAAmBH,MAAnB,EAA2B;EACvB,MAAI,QAAOA,MAAP,MAAkB,QAAtB,EAAgC;EAC5B,WAAO,CAAC,CAACA,MAAM,CAACnO,QAAP,GAAkBqG,KAAlB,CAAwB,aAAxB,CAAT;EACH;;EACD,SAAO,KAAP;EACH;;;EAED,IAAIqI,MAAM,GAAI,YAAW;EACrB,MAAIC,KAAK,GAAG,CAAZ;;EACA,WAASC,UAAT,CAAoBhB,IAApB,EAA0BiB,GAA1B,EAA+B;EAC3B,QAAIV,MAAM,GAAG,IAAIzD,OAAJ,CAAYmE,GAAZ,CAAb;EACAC,IAAAA,WAAW,CAACX,MAAD,EAAS,aAAT,EAAwBP,IAAxB,CAAX;EACA,WAAOO,MAAP;EACH;;EACD,SAAO,YAAsB;EAAA,QAAbP,IAAa,uEAAN,IAAM;;EACzB,QAAIA,IAAI,YAAYlD,OAApB,EAA6B;EACzB,UAAIkD,IAAI,CAACU,SAAL,EAAJ,EAAsB;EAClB,eAAOV,IAAP;EACH;;EACDA,MAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,QAAIkH,SAAS,CAACV,IAAD,CAAb,EAAqB;EACjB;EACA,aAAOlD,OAAO,CAACkD,IAAD,CAAd;EACH,KAVwB;;;EAYzB,QAAIA,IAAI,KAAK,IAAb,EAAmB;EACf,aAAOgB,UAAU,CAAChB,IAAD,EAAOI,MAAM,aAAMJ,IAAN,EAAb,CAAjB;EACH;;EACDe,IAAAA,KAAK;EACL,WAAOC,UAAU,CAACD,KAAD,EAAQX,MAAM,cAAOW,KAAP,EAAd,CAAjB;EACH,GAjBD;EAkBH,CAzBY,EAAb;EA2BA;EACA;;;EACA,SAASI,aAAT,CAAuBC,OAAvB,EAAgC;EAAA;;EAC5B,MAAIC,QAAQ,GAAG;EACXC,IAAAA,OAAO,EAAE,IADE;EAEXC,IAAAA,QAAQ,EAAE,KAFC;EAGXC,IAAAA,SAAS,EAAE,KAHA;EAIXC,IAAAA,MAAM,EAAEzP,SAJG;EAKXiC,IAAAA,IAAI,EAAEjC;EALK,GAAf,CAD4B;EAS5B;;EACAoP,EAAAA,OAAO,GAAGA,OAAO,CAAC9L,IAAR,CAAa,UAAAoM,CAAC,EAAI;EACxBL,IAAAA,QAAQ,CAACpN,IAAT,GAAgBA,IAAI,CAACyN,CAAD,CAApB;EACAL,IAAAA,QAAQ,CAACG,SAAT,GAAqB,IAArB;EACAH,IAAAA,QAAQ,CAACC,OAAT,GAAmB,KAAnB;EACA,WAAOI,CAAP;EACH,GALS,CAAV,CAV4B;EAiB5B;;EACAC,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmBP,OAAnB,EAA4B;EAAEQ,IAAAA,MAAM,EAAE;EAAV,GAA5B,CAAT;;EACA,MAAIC,WAAW,CAACT,OAAO,SAAR,CAAf,EAAgC;EAC5B;EACA;EACAA,IAAAA,OAAO,GAAGA,OAAO,SAAP,CAAc,UAACU,GAAD,EAAS;EAC7BT,MAAAA,QAAQ,CAACE,QAAT,GAAoB,IAApB;EACAF,MAAAA,QAAQ,CAACC,OAAT,GAAmB,KAAnB;EACAD,MAAAA,QAAQ,CAACI,MAAT,GAAkBK,GAAlB;EACH,KAJS,CAAV;EAKH;;EACD1K,EAAAA,MAAM,CAACC,IAAP,CAAYgK,QAAZ,EAAsB7K,OAAtB,CAA8B,UAAAwJ,IAAI,EAAI;EAClC5I,IAAAA,MAAM,CAAC2K,cAAP,CAAsB,KAAtB,cAAiC/B,IAAjC,SAA2C;EACvCgC,MAAAA,UAAU,EAAE,IAD2B;EAEvC/M,MAAAA,GAAG,EAAE;EAAA,eAAMoM,QAAQ,CAACrB,IAAD,CAAd;EAAA;EAFkC,KAA3C;EAIH,GALD;EAMA2B,EAAAA,SAAS,CAAC,IAAD,EAAO,aAAP,EAAsBP,OAAtB,CAAT,CAlC4B;;EAoC5B,OAAK9L,IAAL,GAAY,KAAZ;EACH;;;EAED6L,aAAa,CAACxD,SAAd,CAAwBrI,IAAxB,GAA+B,UAASjC,EAAT,EAAa;EACxC,SAAO,IAAI8N,aAAJ,CAAkB,KAAK3H,OAAL,GAAelE,IAAf,CAAoBjC,EAApB,CAAlB,CAAP;EACH,CAFD;;;EAIA8N,aAAa,CAACxD,SAAd,YAAgC,UAAStK,EAAT,EAAa;EACzC,SAAO,IAAI8N,aAAJ,CAAkB,KAAK3H,OAAL,YAAqBnG,EAArB,CAAlB,CAAP;EACH,CAFD;;;EAIA8N,aAAa,CAACxD,SAAd,CAAwBnE,OAAxB,GAAkC,YAAW;EACzC,MAAI,CAAC,KAAKyI,QAAV,EAAoB;EAChB,UAAM,IAAI/H,KAAJ,CAAU,wCAAV,CAAN;EACH;;EACD,SAAO,KAAK+H,QAAZ;EACH,CALD;;;EAOAd,aAAa,CAACxD,SAAd,CAAwBvL,QAAxB,GAAmC,YAAW;EAC1C,MAAI,KAAK8P,WAAT,EAAsB;EAClB,WAAOf,aAAa,CAACgB,WAArB;EACH;;EACD,MAAI,KAAKC,YAAT,EAAuB;EACnB,WAAOjB,aAAa,CAACkB,YAArB;EACH;;EACD,0CAAiC,KAAKpH,QAAtC;EACH,CARD;;EASAkG,aAAa,CAACgB,WAAd,GAA4B,yBAA5B;EACAhB,aAAa,CAACkB,YAAd,GAA6B,0BAA7B;EAEA;EACA;;EACA,SAASC,WAAT,CAAqB/J,GAArB,EAA0B;EACtB,MAAIgK,KAAK,CAACC,OAAN,CAAcjK,GAAd,CAAJ,EAAwB;EACpB,WAAOkK,OAAO,CAACC,GAAR,CAAYC,sBAAsB,CAACpK,GAAD,CAAlC,EACFjD,IADE,CACGsN,wBADH,CAAP;EAEH;;EACD,SAAOrK,GAAP;EACH;;;EAED,SAASoK,sBAAT,CAAgCE,KAAhC,EAAuC;EACnC;EACA,MAAIC,OAAO,GAAG,IAAIP,KAAJ,CAAUM,KAAK,CAAC9L,MAAhB,CAAd;EAAA,MAAuC0I,CAAC,GAAGoD,KAAK,CAAC9L,MAAjD;;EACA,SAAO0I,CAAC,EAAR,EAAY;EACR,QAAM1K,KAAK,GAAG8N,KAAK,CAACpD,CAAD,CAAnB;;EACA,QAAI1K,KAAK,YAAYoM,aAArB,EAAoC;EAChC2B,MAAAA,OAAO,CAACrD,CAAD,CAAP,GAAa,IAAIsD,KAAJ,CAAUhO,KAAV,CAAb;EACH,KAFD,MAEO;EACH+N,MAAAA,OAAO,CAACrD,CAAD,CAAP,GAAa1K,KAAb;EACH;EACJ;;EACD,SAAO+N,OAAP;EACH;;;EAED,SAASF,wBAAT,CAAkCC,KAAlC,EAAyC;EACrC,MAAIG,SAAS,GAAG,IAAIT,KAAJ,CAAUM,KAAK,CAAC9L,MAAhB,CAAhB;EAAA,MAAyC0I,CAAC,GAAGoD,KAAK,CAAC9L,MAAnD;;EACA,SAAO0I,CAAC,EAAR,EAAY;EACR,QAAI1K,KAAK,GAAG8N,KAAK,CAACpD,CAAD,CAAjB;;EACA,QAAI1K,KAAK,YAAYgO,KAArB,EAA4B;EACxBC,MAAAA,SAAS,CAACvD,CAAD,CAAT,GAAe1K,KAAK,CAACyE,OAAN,EAAf;EACH,KAFD,MAEO;EACHwJ,MAAAA,SAAS,CAACvD,CAAD,CAAT,GAAe1K,KAAf;EACH;EACJ;;EACD,SAAOiO,SAAP;EACH;EAED;EACA;;;EACA,IAAI7F,QAAQ,GAAG;EACX8F,EAAAA,OAAO,EAAE7C,MAAM,OAAN,CAAW,SAAX,CADE;EAEX8C,EAAAA,MAAM,EAAE9C,MAAM,OAAN,CAAW,QAAX,CAFG;EAGX+C,EAAAA,MAAM,EAAE/C,MAAM,OAAN,CAAW,QAAX,CAHG;EAIXhD,EAAAA,KAAK,EAAE,iBAAW;EACd,WAAOhG,MAAM,CAACC,IAAP,CAAY,KAAK+L,SAAjB,CAAP;EACH,GANU;EAOXnP,EAAAA,IAAI,EAAE,cAAS+L,IAAT,EAAe;EACjB,WAAO,KAAK/K,GAAL,CAAS+K,IAAT,EAAe/L,IAAtB;EACH,GATU;EAUXgB,EAAAA,GAAG,EAAE,aAAS+K,IAAT,EAAe;EAChB,WAAO,KAAKoD,SAAL,CAAepD,IAAf,CAAP;EACH,GAZU;EAaX;EACAqD,EAAAA,GAAG,EAAE,aAASrD,IAAT,EAA0B;EAAA;;EAAA,QAAX3M,EAAW,uEAAN,IAAM;;EAC3B,QAAIkP,KAAK,CAACC,OAAN,CAAcxC,IAAd,CAAJ,EAAyB;EACrBA,MAAAA,IAAI,CAACxJ,OAAL,CAAa,UAAAwJ,IAAI;EAAA,eAAI,MAAI,CAACqD,GAAL,CAASrD,IAAT,EAAe3M,EAAf,CAAJ;EAAA,OAAjB;EACH,KAFD,MAEO,IAAIA,EAAE,KAAK,IAAX,EAAiB;EACpB,aAAO,KAAKiQ,OAAL,CAAatD,IAAb,CAAP;EACH,KAFM,MAEA;EACH,WAAKsD,OAAL,GAAe,KAAKA,OAAL,CAAalE,MAAb,CAAoB,UAAAjK,IAAI;EAAA,eAAIA,IAAI,KAAK9B,EAAb;EAAA,OAAxB,CAAf;EACH;EACJ,GAtBU;EAuBXkQ,EAAAA,EAAE,EAAE,YAASvD,IAAT,EAAe3M,EAAf,EAAmB;EAAA;;EACnB,QAAIkP,KAAK,CAACC,OAAN,CAAcxC,IAAd,CAAJ,EAAyB;EACrBA,MAAAA,IAAI,CAACxJ,OAAL,CAAa,UAAAwJ,IAAI;EAAA,eAAI,MAAI,CAACuD,EAAL,CAAQvD,IAAR,EAAc3M,EAAd,CAAJ;EAAA,OAAjB;EACH,KAFD,MAEO,IAAI,CAAC,KAAKiQ,OAAL,CAAatD,IAAb,CAAL,EAAyB;EAC5B,WAAKsD,OAAL,CAAatD,IAAb,IAAqB,CAAC3M,EAAD,CAArB;EACH,KAFM,MAEA;EACH,WAAKiQ,OAAL,CAAatD,IAAb,EAAmB9I,IAAnB,CAAwB7D,EAAxB;EACH;EACJ,GA/BU;EAgCXmQ,EAAAA,OAAO,EAAE,iBAASxD,IAAT,EAAwB;EAAA,uCAANlB,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC7B,QAAI,KAAKwE,OAAL,CAAatD,IAAb,CAAJ,EAAwB;EACpB,WAAKsD,OAAL,CAAatD,IAAb,EAAmBxJ,OAAnB,CAA2B,UAAAnD,EAAE;EAAA,eAAIA,EAAE,MAAF,SAAMyL,IAAN,CAAJ;EAAA,OAA7B;EACH;EACJ,GApCU;EAqCX2E,EAAAA,MAAM,EAAE,gBAASzD,IAAT,EAAe;EACnB,SAAKwD,OAAL,CAAa,QAAb;EACA,WAAO,KAAKJ,SAAL,CAAepD,IAAf,CAAP;EACH,GAxCU;EAyCX0D,EAAAA,MAAM,EAAE,gBAAS1D,IAAT,EAAejL,KAAf,EAAsBd,IAAtB,EAA4B;EAChC,SAAKuP,OAAL,CAAa,QAAb;EACA,SAAKJ,SAAL,CAAepD,IAAf,IAAuB;EACnB2D,MAAAA,GAAG,EAAE3D,IADc;EAEnBO,MAAAA,MAAM,EAAExL,KAFW;EAGnBd,MAAAA,IAAI,EAAJA;EAHmB,KAAvB;EAKH,GAhDU;EAiDXqP,EAAAA,OAAO,EAAE,EAjDE;EAkDXF,EAAAA,SAAS,EAAE;EAlDA,CAAf;;EAoDA,SAASQ,UAAT,CAAoBzF,KAApB,EAA2B;EACvB,SAAOhB,QAAQ,CAACC,KAAT,GAAiBtE,QAAjB,CAA0BqF,KAA1B,CAAP;EACH;;EACD,SAAS0F,UAAT,CAAoB1F,KAApB,EAA2B;EACvB,SAAOhB,QAAQ,CAAC2G,OAAT,CAAiBhL,QAAjB,CAA0BqF,KAA1B,CAAP;EACH;;EACD,SAAS4F,UAAT,CAAoBvG,OAApB,EAA6B;EACzB,SAAOL,QAAQ,CAAClJ,IAAT,CAAcuJ,OAAd,MAA2BL,QAAQ,CAAC8F,OAA3C;EACH;;;EAED,IAAIe,gBAAgB,GAAG,CACnB,CAAC,GAAD,EAAM,IAAIlH,OAAJ,CAAY,OAAZ,CAAN,EAA4BK,QAAQ,CAAC8F,OAArC,CADmB,EAEnB,CAAC,GAAD,EAAM,IAAInG,OAAJ,CAAY,YAAZ,CAAN,EAAiCK,QAAQ,CAAC8F,OAA1C,CAFmB,EAGnB,CAAC,IAAD,EAAO,IAAInG,OAAJ,CAAY,kBAAZ,CAAP,EAAwCK,QAAQ,CAAC8F,OAAjD,CAHmB,EAInB,CAAC,GAAD,EAAM,IAAInG,OAAJ,CAAY,SAAZ,CAAN,EAA8BK,QAAQ,CAAC8F,OAAvC,CAJmB,EAKnB,CAAC,IAAD,EAAO,IAAInG,OAAJ,CAAY,eAAZ,CAAP,EAAqCK,QAAQ,CAAC8F,OAA9C,CALmB,CAAvB;EAOA7L,MAAM,CAAC2K,cAAP,CAAsB5E,QAAtB,EAAgC,SAAhC,EAA2C;EACvC8G,EAAAA,QAAQ,EAAE,KAD6B;EAEvClP,EAAAA,KAAK,EAAEiP,gBAAgB,CAACrM,GAAjB,CAAqB,UAAAuM,GAAG;EAAA,WAAIA,GAAG,CAAC,CAAD,CAAP;EAAA,GAAxB;EAFgC,CAA3C;EAIAF,gBAAgB,CAACxN,OAAjB,CAAyB,iBAAyB;EAAA;EAAA,MAAvBmN,GAAuB;EAAA,MAAlBpD,MAAkB;EAAA,MAAVtM,IAAU;;EAC9CkJ,EAAAA,QAAQ,CAACuG,MAAT,CAAgBC,GAAhB,EAAqBpD,MAArB,EAA6BtM,IAA7B;EACH,CAFD;EAIA;EACA;;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;MACMgK;EACF,iBAAYkG,KAAZ,EAAgD;EAAA;;EAAA,oFAAJ,EAAI;EAAA,iCAA3BjG,UAA2B;EAAA,QAA3BA,UAA2B,iCAAd,KAAc;;EAAA;;EAC5CyD,IAAAA,SAAS,CAAC,IAAD,EAAO,WAAP,EAAoBwC,KAAK,CAACxL,OAAN,CAAc,KAAd,EAAqB,EAArB,CAApB,CAAT;EACA,QAAIyL,SAAS,GAAG,EAAhB,CAF4C;;EAI5C,KACI,IADJ,EACU,aADV,EACyB,MADzB,EACiC,UADjC,EAC6C,OAD7C,EAEI,QAFJ,EAEc,OAFd,EAEuB,QAFvB,EAEiC,YAFjC,EAGE5N,OAHF,CAGU,UAAAwJ,IAAI,EAAI;EACd5I,MAAAA,MAAM,CAAC2K,cAAP,CAAsB,MAAtB,EAA4B/B,IAA5B,EAAkC;EAC9BqE,QAAAA,YAAY,EAAE,KADgB;EAE9BrC,QAAAA,UAAU,EAAE,KAFkB;EAG9B/M,QAAAA,GAH8B,iBAGxB;EACF,iBAAOmP,SAAS,CAACpE,IAAD,CAAhB;EACH,SAL6B;EAM9BsE,QAAAA,GAN8B,eAM1BvP,KAN0B,EAMnB;EACPqP,UAAAA,SAAS,CAACpE,IAAD,CAAT,GAAkBjL,KAAlB;EACH;EAR6B,OAAlC;EAUH,KAdD;EAeA,SAAKwP,WAAL,GAAmBrG,UAAnB;EACA,SAAKsG,EAAL,GAAU,KAAKC,KAAL,GAAa,KAAKC,IAAL,GAAY,KAAKC,QAAL,GAAgB,CAAnD;EACA,SAAKC,MAAL,GAAc,KAAKC,KAAL,GAAa,KAAKC,MAAL,GAAc,IAAzC;EACA,SAAKC,UAAL,GAAkB,EAAlB;EACH;;;;aACD,aAAI/E,IAAJ,EAAU;EACN,aAAO,KAAKgF,UAAL,CAAgBhF,IAAhB,CAAP;EACH;;;aACD,aAAIA,IAAJ,EAAUjL,KAAV,EAAiB;EACb,WAAKiQ,UAAL,CAAgBhF,IAAhB,IAAwBjL,KAAxB;EACH;;;aACD,iBAAoB;EAAA,UAAdyJ,IAAc,uEAAP,KAAO;;EAChB,UAAIA,IAAJ,EAAU;EACN,YAAIyG,IAAI,GAAG,KAAKR,KAAhB;;EACA,YAAI,KAAKF,WAAL,IAAoB,KAAKO,MAAL,KAAgB,IAAxC,EAA8C;EAC1C,YAAEG,IAAF;EACH;;EACD,eAAO;EACH9G,UAAAA,KAAK,EAAE,KAAK2G,MADT;EAEHpG,UAAAA,GAAG,EAAE,KAAKgG,IAFP;EAGHQ,UAAAA,MAAM,EAAE,KAAKV,EAHV;EAIHS,UAAAA,IAAI,EAAJA;EAJG,SAAP;EAMH;;EACD,aAAO,KAAKH,MAAZ;EACH;;;aACD,gBAAmB;EAAA,UAAdtG,IAAc,uEAAP,KAAO;;EACf,UAAI,KAAKgG,EAAL,IAAW,KAAKW,SAAL,CAAepO,MAA9B,EAAsC;EAClC,eAAOsH,GAAP;EACH;;EACD,UAAI,KAAKyG,MAAT,EAAiB;EACb,eAAO,KAAK3G,KAAL,CAAWK,IAAX,CAAP;EACH;;EACD,UAAI4G,KAAK,GAAG,KAAKC,UAAL,EAAZ;;EACA,UAAID,KAAJ,EAAW;EACP,aAAKN,MAAL,GAAc,KAAKK,SAAL,CAAeG,SAAf,CAAyB,KAAKd,EAA9B,EAAkC,KAAKK,KAAvC,CAAd;EACA,eAAO,KAAK1G,KAAL,CAAWK,IAAX,CAAP;EACH;;EACD,aAAOH,GAAP;EACH;;;aACD,gBAAO;EACH,UAAI,KAAKwG,KAAL,KAAe,IAAnB,EAAyB;EACrB,aAAKC,MAAL,GAAc,IAAd;EACA,aAAKN,EAAL,GAAU,KAAKK,KAAf;EACH;EACJ;;;aACD,qBAAY;EACR,UAAIU,GAAG,GAAG,KAAKJ,SAAL,CAAepO,MAAzB;;EACA,UAAI,KAAKyN,EAAL,IAAWe,GAAf,EAAoB;EAChB,eAAOlH,GAAP;EACH;;EACD,WAAK,IAAIoB,CAAC,GAAG,KAAK+E,EAAlB,EAAsB/E,CAAC,GAAG8F,GAA1B,EAA+B,EAAE9F,CAAjC,EAAoC;EAChC,YAAI5F,MAAI,GAAG,KAAKsL,SAAL,CAAe1F,CAAf,CAAX;;EACA,YAAI5F,MAAI,KAAK,IAAb,EAAmB;EACf,cAAMoL,IAAI,GAAG,KAAKE,SAAL,CAAeG,SAAf,CAAyB,KAAKd,EAA9B,EAAkC/E,CAAlC,CAAb;;EACA,eAAK+E,EAAL,GAAU/E,CAAC,GAAG,CAAd;EACA,YAAE,KAAKgF,KAAP;EACA,iBAAOQ,IAAP;EACH;EACJ;;EACD,aAAO,KAAKO,SAAL,EAAP;EACH;;;aACD,qBAAY;EACR,UAAM/F,CAAC,GAAG,KAAK+E,EAAf;EACA,WAAKA,EAAL,GAAU,KAAKW,SAAL,CAAepO,MAAzB;EACA,aAAO,KAAKoO,SAAL,CAAeG,SAAf,CAAyB7F,CAAzB,CAAP;EACH;;;aACD,qBAAYrG,GAAZ,EAAiB;EACb,UAAMmM,GAAG,GAAG,KAAKJ,SAAL,CAAepO,MAA3B;;EACA,UAAI,KAAKyN,EAAL,IAAWe,GAAf,EAAoB;EAChB,eAAOlH,GAAP;EACH;;EACD,UAAIjF,GAAG,GAAG,KAAKoL,EAAX,IAAiBe,GAArB,EAA0B;EACtB,eAAO,KAAKC,SAAL,EAAP;EACH;;EACD,UAAM3F,GAAG,GAAG,KAAK2E,EAAL,GAAUpL,GAAtB;;EACA,UAAM7C,MAAM,GAAG,KAAK4O,SAAL,CAAeG,SAAf,CAAyB,KAAKd,EAA9B,EAAkC3E,GAAlC,CAAf;;EACA,UAAMuF,KAAK,GAAG7O,MAAM,CAACkC,KAAP,CAAa,KAAb,CAAd;;EACA,UAAI2M,KAAJ,EAAW;EACP,aAAKX,KAAL,IAAcW,KAAK,CAACrO,MAApB;EACH;;EACD,WAAKyN,EAAL,GAAU3E,GAAV;EACA,aAAOtJ,MAAP;EACH;;;aACD,qBAAY;EACR,UAAI,KAAKiO,EAAL,IAAW,KAAKW,SAAL,CAAepO,MAA9B,EAAsC;EAClC,eAAOsH,GAAP;EACH;;EACD,aAAOpE,UAAU,CAAC,KAAKkL,SAAL,CAAe,KAAKX,EAApB,CAAD,CAAjB;EACH;;;aACD,qBAAY;EACR,UAAM3K,MAAI,GAAG,KAAK4L,SAAL,EAAb;;EACA,WAAKC,SAAL;EACA,aAAO7L,MAAP;EACH;;;aACD,qBAAY;EACR,UAAI,KAAK2K,EAAL,GAAU,KAAKW,SAAL,CAAepO,MAA7B,EAAqC;EACjC,UAAE,KAAKyN,EAAP;EACA,aAAKM,MAAL,GAAc,IAAd;EACH;EACJ;;;aACD,oBAAWa,IAAX,EAAsD;EAAA,sFAAJ,EAAI;EAAA,UAAnCC,SAAmC,SAAnCA,SAAmC;EAAA,UAAxB/L,MAAwB;EAAA,UAAlBgM,SAAkB,SAAlBA,SAAkB;;EAClD,iCAAsCF,IAAtC;EAAA,UAAM7K,EAAN;EAAA,UAAUgL,OAAV;EAAA,UAAmBC,OAAnB;EAAA,UAA4BC,KAA5B;;EACA,UAAIL,IAAI,CAAC5O,MAAL,KAAgB,CAApB,EAAuB;EACnB,cAAM,IAAImD,KAAJ,wCAA0CyL,IAAI,CAAC5O,MAA/C,EAAN;EACH;;EACD,UAAI,CAAC8C,MAAI,CAACpB,KAAL,CAAWqC,EAAX,CAAL,EAAqB;EACjB,eAAO,KAAP;EACH;;EACD,UAAI,CAACmL,aAAa,CAACH,OAAD,EAAUF,SAAV,CAAlB,EAAwC;EACpC,eAAO,KAAP;EACH;;EACD,UAAI,CAACK,aAAa,CAACF,OAAD,EAAUF,SAAV,CAAlB,EAAwC;EACpC,eAAO,KAAP;EACH;;EACD,UAAIG,KAAK,KAAK,KAAKpB,MAAnB,EAA2B;EACvB,eAAO,KAAP;EACH;;EACD,aAAO,IAAP;EACH;;;aACD,sBAAa;EACT,UAAI,KAAKJ,EAAL,IAAW,KAAKW,SAAL,CAAepO,MAA9B,EAAsC;EAClC,eAAO,KAAP;EACH;;EACD,UAAImP,KAAK,GAAG,IAAZ;;EACAC,MAAAA,IAAI,EACJ,KAAK,IAAI1G,CAAC,GAAG,KAAK+E,EAAb,EAAiBe,GAAG,GAAG,KAAKJ,SAAL,CAAepO,MAA3C,EAAmD0I,CAAC,GAAG8F,GAAvD,EAA4D,EAAE9F,CAA9D,EAAiE;EAC7D,YAAI5F,MAAI,GAAG,KAAKsL,SAAL,CAAe1F,CAAf,CAAX;EACA,YAAImG,SAAS,GAAG,KAAKT,SAAL,CAAe1F,CAAC,GAAG,CAAnB,KAAyB,EAAzC;EACA,YAAIoG,SAAS,GAAG,KAAKV,SAAL,CAAe1F,CAAC,GAAG,CAAnB,KAAyB,EAAzC;;EACA,YAAI5F,MAAI,KAAK,IAAb,EAAmB;EACf,YAAE,KAAK4K,KAAP;EACA,cAAM2B,OAAO,GAAG,KAAKzB,QAArB;;EACA,cAAI,KAAKC,MAAL,KAAgB,IAApB,EAA0B;EACtB;EACA;EACA,iBAAKD,QAAL,GAAgBlF,CAAC,GAAG,CAApB;EACH;;EACD,cAAI,KAAK8E,WAAL,IAAoB,KAAKK,MAAL,KAAgB,IAAxC,EAA8C;EAC1C,iBAAKC,KAAL,GAAapF,CAAC,GAAG,CAAjB;EACA,iBAAKiF,IAAL,GAAY,KAAKF,EAAL,GAAU4B,OAAtB;EACA,mBAAO,IAAP;EACH;EACJ,SAjB4D;;;EAmB7D,YAAIF,KAAK,IAAI,KAAKtB,MAAL,KAAgB,IAAzB,IAAiC/K,MAAI,CAACpB,KAAL,CAAW,IAAX,CAArC,EAAuD;EACnD,cAAI,KAAK8L,WAAT,EAAsB;EAClB,gBAAI,CAACsB,SAAS,CAACpN,KAAV,CAAgB,IAAhB,CAAL,EAA4B;EACxB,mBAAKoM,KAAL,GAAapF,CAAC,GAAG,CAAjB;EACA,mBAAKiF,IAAL,GAAY,KAAKF,EAAL,GAAU,KAAKG,QAA3B;EACA,qBAAO,IAAP;EACH,aAJD,MAIO;EACH;EACH;EACJ,WARD,MAQO;EACH,iBAAKH,EAAL,GAAU/E,CAAC,GAAG,CAAd;EACA;EACH;EACJ;;EACDyG,QAAAA,KAAK,GAAG,KAAR;;EAjC6D,oDAkC5CjI,KAAK,CAACoI,KAlCsC;EAAA;;EAAA;EAkC7D,iEAA8B;EAAA,gBAArBV,IAAqB;;EAC1B,gBAAI,KAAKW,UAAL,CAAgBX,IAAhB,EAAsB;EAAEC,cAAAA,SAAS,EAATA,SAAF;EAAa,sBAAA/L,MAAb;EAAmBgM,cAAAA,SAAS,EAATA;EAAnB,aAAtB,CAAJ,EAA2D;EACvD;EACA,kBAAIU,UAAU,GAAGZ,IAAI,CAACA,IAAI,CAAC5O,MAAL,GAAc,CAAf,CAArB;EACA,mBAAK6N,MAAL,GAAc2B,UAAd;;EACA,kBAAI,KAAK3B,MAAL,KAAgB,IAApB,EAA0B;EACtB,qBAAKC,KAAL,GAAapF,CAAC,GAAG,CAAjB;EACA,qBAAKiF,IAAL,GAAY,KAAKF,EAAL,GAAU,KAAKG,QAA3B;EACA,uBAAO,IAAP;EACH,eARsD;;;EAUvD,uBAASwB,IAAT;EACH;EACJ;EA/C4D;EAAA;EAAA;EAAA;EAAA;;EAgD7D,YAAI,KAAKvB,MAAL,KAAgB,IAApB,EAA0B;EACtB;EACA,mBAASuB,IAAT;EACH,SAnD4D;;;EAqD7D,YAAIlB,IAAI,GAAG,KAAKE,SAAL,CAAetM,KAAf,CAAqB,IAArB,EAA2B,KAAK4L,KAAhC,CAAX;;EACA,cAAM,IAAIvK,KAAJ,kCAAoC,KAAKuK,KAAzC,eAAmDQ,IAAnD,EAAN;EACH;EACJ;;;;;EAGL;EACA;;;EACAhH,KAAK,CAACuI,WAAN,GAAoB,SAASA,WAAT,CAAqB5P,MAArB,EAA6B2J,MAA7B,EAAqC;EACrD,MAAI8F,KAAK,GAAGpI,KAAK,CAACwI,YAAN,CAAmB7P,MAAnB,EAA2B2J,MAA3B,EAAmCtC,KAAK,CAACyI,QAAzC,EAAmD,IAAnD,CAAZ;EAEA,SAAOL,KAAK,CAACM,MAAN,CAAa,CAChB,CAAC,IAAD,EAAO,IAAP,EAAa1I,KAAK,CAACyI,QAAnB,EAA6B,IAA7B,EAAmC,IAAnC,CADgB,EAEhB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyBzI,KAAK,CAACsC,MAA/B,CAFgB,EAGhB,CAAC,IAAD,EAAO,IAAP,EAAatC,KAAK,CAACyI,QAAnB,EAA6BzI,KAAK,CAACsC,MAAnC,EAA2C,IAA3C,CAHgB,CAAb,CAAP;EAKH,CARD;EAUA;EACA;;;EACAtC,KAAK,CAACwI,YAAN,GAAqB,SAASA,YAAT,CAAsB7P,MAAtB,EAA8B2J,MAA9B,EAAgE;EAAA,MAA1BqG,IAA0B,uEAAnB,IAAmB;EAAA,MAAbC,IAAa,uEAAN,IAAM;;EACjF,MAAIjQ,MAAM,CAACG,MAAP,KAAkB,CAAtB,EAAyB;EACrB,UAAM,IAAImD,KAAJ,CAAU,6BAAV,CAAN;EACH;;EACD,MAAItD,MAAM,CAACG,MAAP,KAAkB,CAAtB,EAAyB;EACrB,WAAO,CAAC,CAACH,MAAD,EAASgQ,IAAT,EAAeC,IAAf,EAAqB,IAArB,EAA2B,IAA3B,CAAD,CAAP;EACH;;EACD,MAAIR,KAAK,GAAG,EAAZ;;EACA,OAAK,IAAI5G,CAAC,GAAG,CAAR,EAAW8F,GAAG,GAAG3O,MAAM,CAACG,MAA7B,EAAqC0I,CAAC,GAAG8F,GAAzC,EAA8C,EAAE9F,CAAhD,EAAmD;EAC/C,QAAMkG,IAAI,GAAG,EAAb;EACAA,IAAAA,IAAI,CAACzO,IAAL,CAAUN,MAAM,CAAC6I,CAAD,CAAhB;EACAkG,IAAAA,IAAI,CAACzO,IAAL,CAAUN,MAAM,CAAC6I,CAAC,GAAG,CAAL,CAAN,IAAiBmH,IAA3B;EACAjB,IAAAA,IAAI,CAACzO,IAAL,CAAUN,MAAM,CAAC6I,CAAC,GAAG,CAAL,CAAN,IAAiBoH,IAA3B;;EACA,QAAIpH,CAAC,KAAK,CAAV,EAAa;EACTkG,MAAAA,IAAI,CAACzO,IAAL,CAAU,IAAV;EACAyO,MAAAA,IAAI,CAACzO,IAAL,CAAUqJ,MAAV;EACH,KAHD,MAGO,IAAId,CAAC,KAAK8F,GAAG,GAAG,CAAhB,EAAmB;EACtBI,MAAAA,IAAI,CAACzO,IAAL,CAAUqJ,MAAV;EACAoF,MAAAA,IAAI,CAACzO,IAAL,CAAU,IAAV;EACH,KAHM,MAGA;EACHyO,MAAAA,IAAI,CAACzO,IAAL,CAAUqJ,MAAV;EACAoF,MAAAA,IAAI,CAACzO,IAAL,CAAUqJ,MAAV;EACH;;EACD8F,IAAAA,KAAK,CAACnP,IAAN,CAAWyO,IAAX;EACH;;EACD,SAAOU,KAAP;EACH,CA1BD;;;EA4BApI,KAAK,CAACrH,MAAN,GAAewJ,MAAM,OAAN,CAAW,QAAX,CAAf;EACAnC,KAAK,CAACsC,MAAN,GAAeH,MAAM,OAAN,CAAW,QAAX,CAAf;EACAnC,KAAK,CAAC6I,OAAN,GAAgB1G,MAAM,OAAN,CAAW,SAAX,CAAhB;EACAnC,KAAK,CAACvJ,KAAN,GAAc0L,MAAM,OAAN,CAAW,OAAX,CAAd;EACAnC,KAAK,CAAC8I,WAAN,GAAoB3G,MAAM,OAAN,CAAW,aAAX,CAApB;EACAnC,KAAK,CAAC+I,SAAN,GAAkB5G,MAAM,OAAN,CAAW,WAAX,CAAlB;EACAnC,KAAK,CAACgJ,OAAN,GAAgB7G,MAAM,OAAN,CAAW,SAAX,CAAhB;EACAnC,KAAK,CAACiJ,QAAN,GAAiB9G,MAAM,OAAN,CAAW,UAAX,CAAjB;EACAnC,KAAK,CAACkJ,SAAN,GAAkB/G,MAAM,OAAN,CAAW,WAAX,CAAlB;EACAnC,KAAK,CAACmJ,SAAN,GAAkBhH,MAAM,OAAN,CAAW,WAAX,CAAlB;EACAnC,KAAK,CAACoJ,OAAN,GAAgBjH,MAAM,OAAN,CAAW,SAAX,CAAhB;EACAnC,KAAK,CAACqJ,GAAN,GAAYlH,MAAM,OAAN,CAAW,KAAX,CAAZ;;EAEAnC,KAAK,CAACyI,QAAN,GAAiB,eAAjB;;EAEAzI,KAAK,CAACsJ,MAAN,GAAe;EAEX;EACA;EACA,CAAC,GAAD,EAAM,UAAN,EAAkB,IAAlB,EAAwB,IAAxB,EAA8BtJ,KAAK,CAACrH,MAApC,CAJW,EAKX,CAAC,GAAD,EAAM,UAAN,EAAkB,IAAlB,EAAwBqH,KAAK,CAACrH,MAA9B,EAAsC,IAAtC,CALW;EAQX;EACA,CAAC,GAAD,EAAM,IAAN,EAAY,aAAZ,EAA2B,IAA3B,EAAiCqH,KAAK,CAACsC,MAAvC,CATW;EAYX,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,IAAlB,EAAwBtC,KAAK,CAAC+I,SAA9B,CAZW,EAaX,CAAC,IAAD,EAAO,GAAP,EAAY,IAAZ,EAAkB/I,KAAK,CAAC+I,SAAxB,EAAmC/I,KAAK,CAAC+I,SAAzC,CAbW,EAcX,CAAC,IAAD,EAAO,GAAP,EAAY,SAAZ,EAAuB/I,KAAK,CAAC+I,SAA7B,EAAwC/I,KAAK,CAAC+I,SAA9C,CAdW,EAeX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB/I,KAAK,CAAC+I,SAAzB,EAAoC,IAApC,CAfW,EAgBX,CAAC,IAAD,EAAO,IAAP,EAAa/I,KAAK,CAACyI,QAAnB,EAA6BzI,KAAK,CAAC+I,SAAnC,EAA8C,IAA9C,CAhBW;EAmBX,CAAC,GAAD,EAAM/I,KAAK,CAACyI,QAAZ,EAAsB,IAAtB,EAA4B,IAA5B,EAAkCzI,KAAK,CAACvJ,KAAxC,CAnBW,EAoBX,CAAC,OAAD,EAAU,IAAV,EAAgB,IAAhB,EAAsBuJ,KAAK,CAACvJ,KAA5B,EAAmCuJ,KAAK,CAACvJ,KAAzC,CApBW,EAqBX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBuJ,KAAK,CAACvJ,KAAzB,EAAgCuJ,KAAK,CAAC8I,WAAtC,CArBW,EAsBX,CAAC,IAAD,EAAO,OAAP,EAAgB,IAAhB,EAAsB9I,KAAK,CAAC8I,WAA5B,EAAyC9I,KAAK,CAACvJ,KAA/C,CAtBW,EAuBX,CAAC,SAAD,EAAY,IAAZ,EAAkB,IAAlB,EAAwBuJ,KAAK,CAACvJ,KAA9B,EAAqCuJ,KAAK,CAACvJ,KAA3C,CAvBW,EAwBX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBuJ,KAAK,CAACvJ,KAAzB,EAAgCuJ,KAAK,CAACvJ,KAAtC,CAxBW,EAyBX,CAAC,IAAD,EAAO,MAAP,EAAeuJ,KAAK,CAACyI,QAArB,EAA+BzI,KAAK,CAACvJ,KAArC,EAA4C,IAA5C,CAzBW,EA0BX,CAAC,UAAD,EAAa,IAAb,EAAmBuJ,KAAK,CAACyI,QAAzB,EAAmCzI,KAAK,CAACvJ,KAAzC,EAAgD,IAAhD,CA1BW,EA2BX,CAAC,UAAD,EAAa,IAAb,EAAmB,UAAnB,EAA+BuJ,KAAK,CAACvJ,KAArC,EAA4CuJ,KAAK,CAACvJ,KAAlD,CA3BW,EA4BX,CAAC,UAAD,EAAa,UAAb,EAAyBuJ,KAAK,CAACyI,QAA/B,EAAyCzI,KAAK,CAACvJ,KAA/C,EAAsD,IAAtD,CA5BW;EA+BX,CAAC,GAAD,EAAM,SAAN,EAAiB,IAAjB,EAAuB,IAAvB,EAA6BuJ,KAAK,CAAC6I,OAAnC,CA/BW,EAgCX,CAAC,QAAD,EAAW,IAAX,EAAiB,IAAjB,EAAuB7I,KAAK,CAAC6I,OAA7B,EAAsC,IAAtC,CAhCW,EAiCX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB7I,KAAK,CAAC6I,OAAzB,EAAkC7I,KAAK,CAAC6I,OAAxC,CAjCW;EAoCX,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkB,IAAlB,EAAwB7I,KAAK,CAACkJ,SAA9B,CApCW,EAqCX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBlJ,KAAK,CAACkJ,SAAzB,EAAoClJ,KAAK,CAACkJ,SAA1C,CArCW,EAsCX,CAAC,GAAD,EAAM,IAAN,EAAY,IAAZ,EAAkBlJ,KAAK,CAACkJ,SAAxB,EAAmC,IAAnC,CAtCW;EAyCX,CAAC,GAAD,EAAM,IAAN,EAAY,GAAZ,EAAiB,IAAjB,EAAuBlJ,KAAK,CAACmJ,SAA7B,CAzCW,EA0CX,CAAC,GAAD,EAAM,GAAN,EAAW,IAAX,EAAiBnJ,KAAK,CAACmJ,SAAvB,EAAkC,IAAlC,CA1CW;EA6CX,CAAC,GAAD,EAAM,IAAN,EAAY,OAAZ,EAAqB,IAArB,EAA2BnJ,KAAK,CAACoJ,OAAjC,CA7CW,EA8CX,CAAC,GAAD,EAAM,OAAN,EAAe,IAAf,EAAqBpJ,KAAK,CAACoJ,OAA3B,EAAoC,IAApC,CA9CW,EA+CX,CAAC,GAAD,EAAM,OAAN,EAAe,IAAf,EAAqBpJ,KAAK,CAACoJ,OAA3B,EAAoC,IAApC,CA/CW;EAkDX,CAAC,IAAD,EAAOpJ,KAAK,CAACyI,QAAb,EAAuB,GAAvB,EAA4B,IAA5B,EAAkC,IAAlC,CAlDW;EAqDX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyBzI,KAAK,CAACiJ,QAA/B,CArDW,EAsDX,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmBjJ,KAAK,CAACiJ,QAAzB,EAAmCjJ,KAAK,CAACiJ,QAAzC,CAtDW,EAuDX,CAAC,IAAD,EAAO,IAAP,EAAajJ,KAAK,CAACyI,QAAnB,EAA6BzI,KAAK,CAACiJ,QAAnC,EAA6C,IAA7C,CAvDW,CAAf;;EA0DAjJ,KAAK,CAACuJ,SAAN,GAAkB,CACd,CAAC,SAAD,EAAY,IAAZ,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B,IAA9B,CADc,CAAlB;EAIA;EACA;;EACAvJ,KAAK,CAACwJ,aAAN,GAAsB,CAClB,CAAC,IAAD,EAAOxJ,KAAK,CAACyI,QAAb,EAAuBzI,KAAK,CAACyI,QAA7B,EAAuC,IAAvC,EAA6C,IAA7C,CADkB,EAElB,CAAC,IAAD,EAAOzI,KAAK,CAACyI,QAAb,EAAuB,IAAvB,EAA6B,IAA7B,EAAmCzI,KAAK,CAACsC,MAAzC,CAFkB,EAGlB,CAAC,IAAD,EAAO,IAAP,EAAatC,KAAK,CAACyI,QAAnB,EAA6B,IAA7B,EAAmC,IAAnC,CAHkB,EAIlB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,EAAmB,IAAnB,EAAyBzI,KAAK,CAACsC,MAA/B,CAJkB,EAKlB,CAAC,IAAD,EAAO,IAAP,EAAatC,KAAK,CAACyI,QAAnB,EAA6BzI,KAAK,CAACsC,MAAnC,EAA2C,IAA3C,CALkB,CAAtB;EAQA;EACA;EACA;;EACAtC,KAAK,CAACyJ,MAAN,GAAe;EACXC,EAAAA,KAAK,EAAE,KADI;EAEXtB,EAAAA,KAAK,EAAE;EAFI,CAAf;;EAKAlJ,QAAQ,CAACoG,EAAT,CAAY,CAAC,QAAD,EAAW,QAAX,CAAZ,EAAkC,YAAW;EACzCtF,EAAAA,KAAK,CAACyJ,MAAN,CAAaC,KAAb,GAAqB,KAArB;EACA1J,EAAAA,KAAK,CAACyJ,MAAN,CAAarB,KAAb,GAAqB,IAArB;EACH,CAHD;;EAKAjP,MAAM,CAAC2K,cAAP,CAAsB9D,KAAtB,EAA6B,OAA7B,EAAsC;EAClChJ,EAAAA,GADkC,iBAC5B;EACF,QAAIgJ,KAAK,CAACyJ,MAAN,CAAaC,KAAjB,EAAwB;EACpB,aAAO1J,KAAK,CAACyJ,MAAN,CAAarB,KAApB;EACH;;EACD,QAAItI,MAAM,GAAGZ,QAAQ,CAACC,KAAT,GAAiBwK,IAAjB,CAAsB,UAACC,CAAD,EAAIC,CAAJ,EAAU;EACzC,aAAOA,CAAC,CAAC/Q,MAAF,GAAW8Q,CAAC,CAAC9Q,MAAb,IAAuB8Q,CAAC,CAACE,aAAF,CAAgBD,CAAhB,CAA9B;EACH,KAFY,CAAb;EAIA,QAAIE,aAAa,GAAGjK,MAAM,CAACkK,MAAP,CAAc,UAACC,GAAD,EAAM/J,KAAN,EAAgB;EAC9C,0BAAyChB,QAAQ,CAAClI,GAAT,CAAakJ,KAAb,CAAzC;EAAA,UAAQlK,IAAR,iBAAQA,IAAR;EAAA,UAAsBkU,cAAtB,iBAAc5H,MAAd;;EACA,UAAI8F,KAAJ;EACA,UAAI9F,MAAJ,CAH8C;;EAK9C,UAAIpC,KAAK,CAAC,CAAD,CAAL,KAAa,GAAjB,EAAsB;EAClB,YAAIA,KAAK,CAACpH,MAAN,KAAiB,CAArB,EAAwB;EACpBwJ,UAAAA,MAAM,GAAGH,MAAM,OAAN,CAAWjC,KAAX,CAAT;EACH,SAFD,MAEO;EACHoC,UAAAA,MAAM,GAAGH,MAAM,OAAN,CAAWjC,KAAK,CAAC,CAAD,CAAhB,CAAT;EACH;EACJ,OAND,MAMO;EACHoC,QAAAA,MAAM,GAAG4H,cAAT;EACH;;EACD,UAAIlU,IAAI,KAAKkJ,QAAQ,CAACgG,MAAtB,EAA8B;EAC1BkD,QAAAA,KAAK,GAAGpI,KAAK,CAACuI,WAAN,CAAkBrI,KAAlB,EAAyBoC,MAAzB,CAAR;EACH,OAFD,MAEO;EACH8F,QAAAA,KAAK,GAAGpI,KAAK,CAACwI,YAAN,CAAmBtI,KAAnB,EAA0BoC,MAA1B,CAAR;EACH;;EACD,aAAO2H,GAAG,CAACvB,MAAJ,CAAWN,KAAX,CAAP;EACH,KApBmB,EAoBjB,EApBiB,CAApB;EAsBApI,IAAAA,KAAK,CAACyJ,MAAN,CAAarB,KAAb,GAAqBpI,KAAK,CAACsJ,MAAN,CAAaZ,MAAb,CACjB1I,KAAK,CAACuJ,SADW,EAEjBQ,aAFiB,EAGjB/J,KAAK,CAACwJ,aAHW,CAArB;EAMAxJ,IAAAA,KAAK,CAACyJ,MAAN,CAAaC,KAAb,GAAqB,IAArB;EACA,WAAO1J,KAAK,CAACyJ,MAAN,CAAarB,KAApB;EACH;EAvCiC,CAAtC;;EA0CA,SAASJ,aAAT,CAAuBnL,EAAvB,EAA2BjB,MAA3B,EAAiC;EAC7B,SAAOiB,EAAE,KAAK,IAAP,IAAejB,MAAI,CAACpB,KAAL,CAAWqC,EAAX,CAAtB;EACH;EAED;EACA;EACA;;;MACMsN;EACF,kBAAY7P,GAAZ,EAA8E;EAAA,oFAAJ,EAAI;EAAA,QAA3D8P,GAA2D,SAA3DA,GAA2D;EAAA,2BAAtD7J,IAAsD;EAAA,QAAtDA,IAAsD,2BAA/C,KAA+C;EAAA,gCAAxC8J,SAAwC;EAAA,QAAxCA,SAAwC,gCAA5B/J,mBAA4B;;EAAA;;EAC1E,QAAIhG,GAAG,YAAY+D,OAAnB,EAA4B;EACxB/D,MAAAA,GAAG,GAAGA,GAAG,CAACnG,QAAJ,EAAN;EACH;;EAEDuP,IAAAA,SAAS,CAAC,IAAD,EAAO,YAAP,EAAqB2G,SAArB,EAAgC;EAAE1G,MAAAA,MAAM,EAAE;EAAV,KAAhC,CAAT;EACAD,IAAAA,SAAS,CAAC,IAAD,EAAO,WAAP,EAAoB,IAAI1D,KAAJ,CAAU1F,GAAV,CAApB,CAAT;EACAoJ,IAAAA,SAAS,CAAC,IAAD,EAAO,SAAP,EAAkB0G,GAAlB,CAAT;EAEA1G,IAAAA,SAAS,CAAC,IAAD,EAAO,OAAP,EAAgBnD,IAAhB,EAAsB;EAAEoD,MAAAA,MAAM,EAAE;EAAV,KAAtB,CAAT,CAT0E;;EAW1ED,IAAAA,SAAS,CAAC,IAAD,EAAO,OAAP,EAAgB,EAAhB,EAAoB;EAAEC,MAAAA,MAAM,EAAE;EAAV,KAApB,CAAT;EACH;;;;aACD,iBAAQ5B,IAAR,EAAc;EACV,aAAO,KAAKuI,OAAL,IAAgB,KAAKA,OAAL,CAAatT,GAAb,CAAiB+K,IAAjB,EAAuB;EAAExK,QAAAA,UAAU,EAAE;EAAd,OAAvB,CAAvB;EACH;;;;qEACD;EAAA;EAAA;EAAA;EAAA;EAAA;;EAGQ2I,gBAAAA,KAAK,GAAG,KAAKqK,SAAL,CAAepK,IAAf,CAAoB,IAApB,CAAR;;EAHR,sBAIYD,KAAK,KAAKE,GAJtB;EAAA;EAAA;EAAA;;EAAA,kDAKmBA,GALnB;;EAAA;EAAA,qBAOY,KAAKoK,UAAL,CAAgBtK,KAAK,CAACA,KAAtB,CAPZ;EAAA;EAAA;EAAA;;EAQY,qBAAKG,IAAL;EARZ;;EAAA;EAAA,sBAWYH,KAAK,CAACA,KAAN,KAAgB,IAX5B;EAAA;EAAA;EAAA;;EAYY,qBAAKG,IAAL;;EAZZ,sBAagB,KAAKkK,SAAL,CAAepK,IAAf,OAA0BC,GAb1C;EAAA;EAAA;EAAA;;EAAA,sBAcsB,IAAInE,KAAJ,CAAU,6CAAV,CAdtB;;EAAA;EAAA;EAAA,uBAgBkB,KAAKwO,YAAL,EAhBlB;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAqBIvK,gBAAAA,KAAK,GAAG,KAAKwK,UAAL,CAAgBxK,KAAhB,CAAR;;EArBJ,qBAsBQ,KAAKyK,KAtBb;EAAA;EAAA;EAAA;;EAAA,kDAuBezK,KAvBf;;EAAA;EAAA,kDAyBWA,KAAK,CAACA,KAzBjB;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;aA2BA,iBAAQ;EACJ,WAAK0K,KAAL,CAAW9R,MAAX,GAAoB,CAApB;EACH;;;aACD,gBAAO;EACH,WAAKyR,SAAL,CAAelK,IAAf;EACH;;;;qEACD;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,uBACwB,KAAKF,IAAL,EADxB;;EAAA;EACUD,gBAAAA,KADV;EAEI,qBAAKG,IAAL;EAFJ,kDAGWH,KAHX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;aAKA,2BAAkBA,KAAlB,EAAyB;EACrB,UAAIvG,CAAC,GAAGuG,KAAK,CAAC1F,KAAN,CAAY,cAAZ,CAAR;EACA,aAAOb,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAb;EACH;;;aACD,yBAAgBuG,KAAhB,EAAuB;EACnB,UAAIvG,CAAC,GAAGuG,KAAK,CAAC1F,KAAN,CAAY,cAAZ,CAAR;EACA,aAAOb,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAb;EACH;;;aACD,iBAAQuG,KAAR,EAAe;EACX,aAAO,CAAC,GAAD,EAAM,GAAN,EAAWrF,QAAX,CAAoBqF,KAApB,CAAP;EACH;;;aACD,kBAASA,KAAT,EAAgB;EACZ,aAAO,CAAC,GAAD,EAAM,GAAN,EAAWrF,QAAX,CAAoBqF,KAApB,CAAP;EACH;;;;0EACD;EAAA;EAAA;EAAA;EAAA;EAAA;EACQ2K,gBAAAA,IADR,GACeC,IADf,EACoBC,IADpB,GAC2BF,IAD3B;;EAAA;;EAAA;EAAA,uBAG4B,KAAK1K,IAAL,EAH5B;;EAAA;EAGcD,gBAAAA,KAHd;;EAAA,sBAIYA,KAAK,KAAKE,GAJtB;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA,qBAOY,KAAK4K,QAAL,CAAc9K,KAAd,CAPZ;EAAA;EAAA;EAAA;;EAQY,qBAAKG,IAAL;EARZ;;EAAA;EAAA,sBAWYH,KAAK,KAAK,GAAV,IAAiB2K,IAAI,KAAKC,IAXtC;EAAA;EAAA;EAAA;;EAYY,qBAAKzK,IAAL;EAZZ;EAAA,uBAa6B,KAAKoK,YAAL,EAb7B;;EAAA;EAaYM,gBAAAA,IAAI,CAACE,GAbjB;EAAA;EAAA;;EAAA;EAAA,+BAe4BC,IAf5B;EAAA;EAAA,uBAeuC,KAAKT,YAAL,EAfvC;;EAAA;EAAA;EAAA,+BAe4DK,IAf5D;EAekBK,gBAAAA,GAflB;;EAgBY,oBAAIN,IAAI,KAAKC,IAAb,EAAkB;EACdD,kBAAAA,IAAI,GAAGM,GAAP;EACH,iBAFD,MAEO;EACHJ,kBAAAA,IAAI,CAACE,GAAL,GAAWE,GAAX;EACH;;EACDJ,gBAAAA,IAAI,GAAGI,GAAP;;EArBZ;EAAA;EAAA;;EAAA;EAAA,kDAwBWN,IAxBX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;;2EA0BA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,uBACsB,KAAK3W,IAAL,EADtB;;EAAA;EACQgM,gBAAAA,KADR;;EAAA,sBAEQA,KAAK,KAAKE,GAFlB;EAAA;EAAA;EAAA;;EAAA,sBAGc,IAAInE,KAAJ,CAAU,kCAAV,CAHd;;EAAA;EAAA,kDAKW6C,cAAc,CAACoB,KAAD,CALzB;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;aAOA,oBAAWA,KAAX,EAAkB;EACd,aAAOA,KAAK,CAAC1F,KAAN,CAAY,IAAZ,KAAsB0F,KAAK,CAAC1F,KAAN,CAAY,MAAZ,KAAuB0F,KAAK,CAAC1F,KAAN,CAAY,MAAZ,CAApD;EACH;;;aACD,kBAAS4Q,IAAT,EAAe;EACX,aAAOC,SAAQ,CAACD,IAAD,EAAO;EAAEhB,QAAAA,GAAG,EAAE,KAAKE,OAAZ;EAAqBgB,QAAAA,KAAK,EAAE,eAACvV,CAAD,EAAO;EACrD,gBAAMA,CAAN;EACH;EAFqB,OAAP,CAAf;EAGH;;;;;6EAED;EAAA;EAAA;EAAA;EAAA;EAAA;EACI,qBAAKwV,KAAL;EADJ;EAAA,uBAEuB,KAAKd,YAAL,EAFvB;;EAAA;EAEQrI,gBAAAA,MAFR;;EAGI,oBAAIA,MAAM,YAAYoJ,cAAtB,EAAsC;EAClCpJ,kBAAAA,MAAM,GAAGA,MAAM,CAAC7G,OAAP,EAAT;EACH;;EALL,qBAMQ,KAAKqP,KAAL,CAAW9R,MANnB;EAAA;EAAA;EAAA;;EAAA,kDAOe,KAAK2S,eAAL,CAAqBrJ,MAArB,CAPf;;EAAA;EAAA,kDASWA,MATX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;;gFAWA,kBAAsBA,MAAtB;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,qBACQkC,KAAK,CAACC,OAAN,CAAcnC,MAAd,CADR;EAAA;EAAA;EAAA;;EAAA,kDAEeA,MAAM,CAAC1I,GAAP,CAAW,UAAAiG,IAAI;EAAA,yBAAI,MAAI,CAAC8L,eAAL,CAAqB9L,IAArB,CAAJ;EAAA,iBAAf,CAFf;;EAAA;EAAA,qBAIQ+L,eAAe,CAACtJ,MAAD,CAJvB;EAAA;EAAA;EAAA;;EAKY9J,gBAAAA,MALZ,GAKqB,EALrB;EAMQa,gBAAAA,MAAM,CAACC,IAAP,CAAYgJ,MAAZ,EAAoB7J,OAApB,CAA4B,UAAAoT,GAAG,EAAI;EAC/BrT,kBAAAA,MAAM,CAACqT,GAAD,CAAN,GAAc,MAAI,CAACF,eAAL,CAAqBrJ,MAAM,CAACuJ,GAAD,CAA3B,CAAd;EACH,iBAFD;EANR,kDASerT,MATf;;EAAA;EAAA,sBAWQ8J,MAAM,YAAY8I,IAX1B;EAAA;EAAA;EAAA;;EAAA,kDAYe,KAAKU,aAAL,CAAmBxJ,MAAnB,CAZf;;EAAA;EAAA,kDAcWA,MAdX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;;8EAgBA,kBAAoByJ,IAApB;EAAA;EAAA;EAAA;EAAA;EAAA,sBACQA,IAAI,YAAYX,IADxB;EAAA;EAAA;EAAA;;EAAA,sBAEYW,IAAI,CAACC,GAAL,YAAoBN,cAFhC;EAAA;EAAA;EAAA;;EAAA;EAAA,uBAG6BK,IAAI,CAACC,GAAL,CAASvQ,OAAT,EAH7B;;EAAA;EAGYsQ,gBAAAA,IAAI,CAACC,GAHjB;EAAA;EAAA;;EAAA;EAKY,qBAAKF,aAAL,CAAmBC,IAAI,CAACC,GAAxB;;EALZ;EAAA,sBAOYD,IAAI,CAACZ,GAAL,YAAoBO,cAPhC;EAAA;EAAA;EAAA;;EAAA;EAAA,uBAQ6BK,IAAI,CAACZ,GAAL,CAAS1P,OAAT,EAR7B;;EAAA;EAQYsQ,gBAAAA,IAAI,CAACZ,GARjB;EAAA;EAAA;;EAAA;EAUY,qBAAKW,aAAL,CAAmBC,IAAI,CAACZ,GAAxB;;EAVZ;EAAA,kDAaWY,IAbX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;;6EAeA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,uBACwB,KAAK1L,IAAL,EADxB;;EAAA;EACUD,gBAAAA,KADV;;EAAA,sBAEQA,KAAK,KAAKE,GAFlB;EAAA;EAAA;EAAA;;EAAA,kDAGeF,KAHf;;EAAA;EAAA,qBAKQyF,UAAU,CAACzF,KAAD,CALlB;EAAA;EAAA;EAAA;;EAMQ;EACA;EACA;EACA;EACA;EACA;EACA;EACMX,gBAAAA,OAbd,GAawBL,QAAQ,CAAClI,GAAT,CAAakJ,KAAb,CAbxB;EAcc6L,gBAAAA,MAdd,GAcuBnG,UAAU,CAAC1F,KAAD,CAdjC;EAeQ,qBAAKG,IAAL;EAfR;EAAA,uBAiB6B,KAAKoK,YAAL,EAjB7B;;EAAA;EAiBcrI,gBAAAA,MAjBd;;EAAA,oBAkBa2J,MAlBb;EAAA;EAAA;EAAA;;EAmBgBC,gBAAAA,SAnBhB,GAmB4B,KAAK1B,OAAL,CAAatT,GAAb,CAAiBuI,OAAO,CAAC+C,MAAzB,CAnB5B;;EAAA,sBAoBgB,OAAO0J,SAAP,KAAqB,UApBrC;EAAA;EAAA;EAAA;;EAAA,qBAqBoBlG,UAAU,CAAC5F,KAAD,CArB9B;EAAA;EAAA;EAAA;;EAAA,kDAsB2B8L,SAAS,CAAC9V,IAAV,CAAe,KAAKoU,OAApB,EAA6BlI,MAA7B,CAtB3B;;EAAA;EAAA,sBAuB2BA,MAAM,YAAY8I,IAvB7C;EAAA;EAAA;EAAA;;EAAA,kDAwB2Bc,SAAS,CAACjL,KAAV,CAAgB,KAAKuJ,OAArB,EAA8BlI,MAAM,CAAC6J,QAAP,CAAgB,KAAhB,CAA9B,CAxB3B;;EAAA;EAAA,sBA0BsB,IAAIhQ,KAAJ,CAAU,gEACcsD,OAAO,CAAC+C,MADtB,CAAV,CA1BtB;;EAAA;EA8BQ,oBAAIwD,UAAU,CAAC5F,KAAD,CAAd,EAAuB;EACnBgM,kBAAAA,IAAI,GAAG,IAAIhB,IAAJ,CACH3L,OAAO,CAAC+C,MADL,EAEH,IAAI4I,IAAJ,CACI9I,MADJ,EAEI0I,IAFJ,CAFG,CAAP;EAOH,iBARD,MAQO;EACHoB,kBAAAA,IAAI,GAAG,IAAIhB,IAAJ,CACH3L,OAAO,CAAC+C,MADL,EAEHF,MAFG,CAAP;EAIH,iBA3CT;;;EAAA,qBA6CY2J,MA7CZ;EAAA;EAAA;EAAA;;EAAA,kDA8CmBG,IA9CnB;;EAAA;EAAA,sBAiDYF,SAAS,YAAYG,KAjDjC;EAAA;EAAA;EAAA;;EAAA;EAAA,uBAkD+B,KAAKd,QAAL,CAAca,IAAd,CAlD/B;;EAAA;EAkDgB5T,gBAAAA,MAlDhB;;EAAA,sBAsDgBA,MAAM,YAAY4S,IAAlB,IAA0B5S,MAAM,YAAYuG,OAtD5D;EAAA;EAAA;EAAA;;EAAA,kDAuDuBqM,IAAI,CAACkB,SAAL,CAAe,CAACvN,OAAO,CAAC,OAAD,CAAR,EAAmBvG,MAAnB,CAAf,CAvDvB;;EAAA;EAAA,kDAyDmBA,MAzDnB;;EAAA;EAAA,sBA2DkB,IAAI2D,KAAJ,CAAU,2CACAsD,OAAO,CAAC+C,MADlB,CA3DlB;;EAAA;EA+DQ+J,gBAAAA,GA/DR,GA+Dc,KAAKC,eAAL,CAAqBpM,KAArB,CA/Dd;;EAAA,sBAgEQmM,GAAG,KAAK,IAhEhB;EAAA;EAAA;EAAA;;EAiEQ,qBAAKhM,IAAL;;EAjER,qBAkEY,KAAKuK,KAAL,CAAWyB,GAAX,CAlEZ;EAAA;EAAA;EAAA;;EAAA,kDAmEmB,IAAIb,cAAJ,CAAmBa,GAAnB,EAAwB,KAAKzB,KAAL,CAAWyB,GAAX,CAAxB,CAnEnB;;EAAA;EAAA,sBAqEc,IAAIpQ,KAAJ,6CAA+CoQ,GAA/C,OArEd;;EAAA;EAuEQE,gBAAAA,SAvER,GAuEoB,KAAKC,iBAAL,CAAuBtM,KAAvB,CAvEpB;;EAAA,sBAwEQqM,SAAS,KAAK,IAxEtB;EAAA;EAAA;EAAA;;EAyEQ,qBAAKlM,IAAL;EACA,qBAAKuK,KAAL,CAAW2B,SAAX,IAAwB,KAAK9B,YAAL,EAAxB;EA1ER,kDA2Ee,KAAKG,KAAL,CAAW2B,SAAX,CA3Ef;;EAAA;EAAA,qBA4Ee,KAAKE,OAAL,CAAavM,KAAb,CA5Ef;EAAA;EAAA;EAAA;;EA6EQ,qBAAKG,IAAL;EA7ER,kDA8Ee,KAAKqM,SAAL,EA9Ef;;EAAA;EAAA,kDAgFe,KAAKC,UAAL,EAhFf;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;;;;;EAqFJ;EACA;EACA;;;MACMnB;EACF,0BAAYzJ,IAAZ,EAAkBtC,IAAlB,EAAwB;EAAA;;EACpB,SAAKsC,IAAL,GAAYA,IAAZ;EACA,SAAKtC,IAAL,GAAYA,IAAZ;EACH;;;;aACD,mBAAU;EACN,aAAO,KAAKA,IAAZ;EACH;;;;;EAGL;EACA;EACA;EACA;EACA;EACA;;;WACgBvE;;;;;;gEAAhB,kBAAsBZ,GAAtB,EAA2B8P,GAA3B;EAAA;EAAA;EAAA;EAAA;EAAA;EACI,gBAAI,CAACA,GAAL,EAAU;EACN,kBAAIrT,UAAJ,EAAgB;EACZqT,gBAAAA,GAAG,GAAGrT,UAAU,CAACC,GAAX,CAAe,6BAAf,EAA8C;EAChDO,kBAAAA,UAAU,EAAE;EADoC,iBAA9C,CAAN;EAGH,eAJD,MAIO;EACH6S,gBAAAA,GAAG,GAAG9S,QAAN;EACH;EACJ;;EACKsV,YAAAA,MAVV,GAUmB,IAAIzC,MAAJ,CAAW7P,GAAX,EAAgB;EAAE8P,cAAAA,GAAG,EAAHA;EAAF,aAAhB,CAVnB;;EAAA;;EAAA;EAAA,wCAY2BwC,MAAM,CAACC,WAAP,EAZ3B;;EAAA;EAYcX,YAAAA,IAZd;;EAAA,kBAaYA,IAAI,KAAK9L,GAbrB;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;EAgBQ,mBAAM8L,IAAN;;EAhBR;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;EAoBA,SAASY,SAAT,CAAmBhW,KAAnB,EAAqD;EAAA,MAA3B1B,EAA2B,uEAAtB,UAAAoB,CAAC;EAAA,WAAIA,CAAJ;EAAA,GAAqB;EAAA,MAAd8U,KAAc,uEAAN,IAAM;;EACjD,MAAIlU,UAAU,CAACN,KAAD,CAAd,EAAuB;EACnB,QAAIiW,GAAG,GAAGjW,KAAK,CAACO,IAAN,CAAWjC,EAAX,CAAV;;EACA,QAAIkW,KAAK,KAAK,IAAd,EAAoB;EAChB,aAAOyB,GAAP;EACH,KAFD,MAEO;EACH,aAAOA,GAAG,SAAH,CAAUzB,KAAV,CAAP;EACH;EACJ;;EACD,MAAIxU,KAAK,YAAYwN,KAArB,EAA4B;EACxB,WAAO0I,eAAe,CAAClW,KAAD,EAAQ1B,EAAR,EAAYkW,KAAZ,CAAtB;EACH;;EACD,MAAII,eAAe,CAAC5U,KAAD,CAAnB,EAA4B;EACxB,WAAOmW,gBAAgB,CAACnW,KAAD,EAAQ1B,EAAR,EAAYkW,KAAZ,CAAvB;EACH;;EACD,SAAOlW,EAAE,CAAC0B,KAAD,CAAT;EACH;;;EAED,SAASkW,eAAT,CAAyBpI,KAAzB,EAAgCxP,EAAhC,EAAoCkW,KAApC,EAA2C;EACvC,MAAI1G,KAAK,CAACsI,IAAN,CAAW9V,UAAX,CAAJ,EAA4B;EACxB,WAAO0V,SAAS,CAACzI,WAAW,CAACO,KAAD,CAAZ,EAAqB,UAACqB,GAAD,EAAS;EAC1C,UAAI9M,MAAM,CAACgU,QAAP,CAAgBvI,KAAhB,CAAJ,EAA4B;EACxBzL,QAAAA,MAAM,CAACiU,MAAP,CAAcnH,GAAd;EACH;;EACD,aAAOA,GAAP;EACH,KALe,EAKbqF,KALa,CAAhB;EAMH;;EACD,SAAOlW,EAAE,CAACwP,KAAD,CAAT;EACH;;;EAED,SAASqI,gBAAT,CAA0B7K,MAA1B,EAAkChN,EAAlC,EAAsCkW,KAAtC,EAA6C;EACzC,MAAMlS,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYgJ,MAAZ,CAAb;EACA,MAAMiL,MAAM,GAAG,EAAf;EAAA,MAAmBC,UAAU,GAAG,EAAhC;EACA,MAAI9L,CAAC,GAAGpI,IAAI,CAACN,MAAb;;EACA,SAAO0I,CAAC,EAAR,EAAY;EACR,QAAMmK,GAAG,GAAGvS,IAAI,CAACoI,CAAD,CAAhB;EACA,QAAM1K,KAAK,GAAGsL,MAAM,CAACuJ,GAAD,CAApB;EACA0B,IAAAA,MAAM,CAAC7L,CAAD,CAAN,GAAY1K,KAAZ;;EACA,QAAIM,UAAU,CAACN,KAAD,CAAd,EAAuB;EACnBwW,MAAAA,UAAU,CAACrU,IAAX,CAAgBnC,KAAhB;EACH;EACJ;;EACD,MAAIwW,UAAU,CAACxU,MAAf,EAAuB;EACnB,WAAOgU,SAAS,CAACzI,WAAW,CAACgJ,MAAD,CAAZ,EAAsB,UAACA,MAAD,EAAY;EAC9C,UAAM/U,MAAM,GAAG,EAAf;EACA+U,MAAAA,MAAM,CAAC9U,OAAP,CAAe,UAACzB,KAAD,EAAQ0K,CAAR,EAAc;EACzB,YAAMmK,GAAG,GAAGvS,IAAI,CAACoI,CAAD,CAAhB;EACAlJ,QAAAA,MAAM,CAACqT,GAAD,CAAN,GAAc7U,KAAd;EACH,OAHD;;EAIA,UAAIqC,MAAM,CAACgU,QAAP,CAAgB/K,MAAhB,CAAJ,EAA6B;EACzBjJ,QAAAA,MAAM,CAACiU,MAAP,CAAc9U,MAAd;EACH;;EACD,aAAOA,MAAP;EACH,KAVe,EAUbgT,KAVa,CAAhB;EAWH;;EACD,SAAOlW,EAAE,CAACgN,MAAD,CAAT;EACH;;;EAED,SAASsB,SAAT,CAAmBtB,MAAnB,EAA2BmL,QAA3B,EAAqCzW,KAArC,EAAqE;EAAA,mFAAJ,EAAI;EAAA,6BAAvB6M,MAAuB;EAAA,MAAvBA,MAAuB,8BAAd,KAAc;;EACjExK,EAAAA,MAAM,CAAC2K,cAAP,CAAsB1B,MAAtB,EAA8BmL,QAA9B,EAAwC;EACpCzW,IAAAA,KAAK,EAALA,KADoC;EAEpCsP,IAAAA,YAAY,EAAE,IAFsB;EAGpCrC,IAAAA,UAAU,EAAE,CAACJ;EAHuB,GAAxC;EAKH;EAED;EACA;;;EACA,SAAe6J,eAAf,CAA+BpL,MAA/B;EAAA;;EAAA;EAAA;EAAA;EAAA;EACU9J,UAAAA,MADV,GACmB,EADnB;EAAA;EAAA;EAAA;EAAA,qCAE2B8J,MAF3B;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAEmBzC,UAAAA,IAFnB;EAGQrH,UAAAA,MAAM,CAACW,IAAP,CAAY0G,IAAZ;;EAHR;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,2CAKWrH,MALX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAQA;EACA;;;EACA,SAASmV,OAAT,CAAiB1L,IAAjB,EAAuBzH,GAAvB,EAA4B;EACxB,MAAIA,GAAG,YAAYrD,MAAnB,EAA2B;EACvB,WAAO,UAAAT,CAAC;EAAA,aAAIsF,MAAM,CAACtF,CAAD,CAAN,CAAUgE,KAAV,CAAgBF,GAAhB,CAAJ;EAAA,KAAR;EACH,GAFD,MAEO,IAAIsJ,WAAW,CAACtJ,GAAD,CAAf,EAAsB;EACzB;EACA,WAAOA,GAAP;EACH;;EACD,QAAM,IAAI2B,KAAJ,CAAU,iBAAV,CAAN;EACH;EAED;EACA;EACA;EACA;;;EACA,SAAS1G,GAAT,CAAawM,IAAb,EAAmB3M,EAAnB,EAAuBG,GAAvB,EAA4BmY,IAA5B,EAAkC;EAC9B,MAAI,OAAO3L,IAAP,KAAgB,QAApB,EAA8B;EAC1B3M,IAAAA,EAAE,GAAGuB,SAAS,CAAC,CAAD,CAAd;EACApB,IAAAA,GAAG,GAAGoB,SAAS,CAAC,CAAD,CAAf;EACA+W,IAAAA,IAAI,GAAG/W,SAAS,CAAC,CAAD,CAAhB;EACAoL,IAAAA,IAAI,GAAG,IAAP;EACH;;EACD,MAAIxM,GAAJ,EAAS;EACL,QAAImY,IAAJ,EAAU;EACNtY,MAAAA,EAAE,CAACuY,OAAH,GAAapY,GAAb;EACH,KAFD,MAEO;EACHH,MAAAA,EAAE,CAACuY,OAAH,GAAaC,UAAU,CAACrY,GAAD,CAAvB;EACH;EACJ;;EACD,MAAIwM,IAAJ,EAAU;EACN3M,IAAAA,EAAE,CAAC8M,QAAH,GAAcH,IAAd;EACH,GAFD,MAEO,IAAI3M,EAAE,CAAC2M,IAAH,IAAW,CAAC8L,SAAS,CAACzY,EAAD,CAAzB,EAA+B;EAClCA,IAAAA,EAAE,CAAC8M,QAAH,GAAc9M,EAAE,CAAC2M,IAAjB;EACH;;EACD,SAAO3M,EAAP;EACH;;;EAED,SAASwY,UAAT,CAAoBjV,MAApB,EAA4B;EACxB,SAAOA,MAAM,CAACiC,KAAP,CAAa,IAAb,EAAmBlB,GAAnB,CAAuB,UAAAsN,IAAI,EAAI;EAClC,WAAOA,IAAI,CAAC9F,IAAL,EAAP;EACH,GAFM,EAEJ7H,IAFI,CAEC,IAFD,CAAP;EAGH;EAED;EACA;EACA;EACA;;;EACA,SAASyU,YAAT,CAAsBhO,MAAtB,EAAwC;EAAA,MAAViO,IAAU,uEAAH,CAAG;EACpC,MAAIvM,CAAC,GAAG1B,MAAM,CAAChH,MAAf;;EACA,MAAIiV,IAAI,IAAI,CAAZ,EAAe;EACX,UAAM9R,KAAK,iDAA0C8R,IAA1C,EAAX;EACH;;EACDC,EAAAA,KAAK,EAAE,OAAOD,IAAI,MAAMvM,CAAC,IAAI,CAAtB,EAAyB;EAC5B,QAAIsB,KAAK,GAAG,CAAZ;;EACA,WAAOA,KAAK,GAAG,CAAf,EAAkB;EACd,UAAI5C,KAAK,GAAGJ,MAAM,CAAC,EAAE0B,CAAH,CAAlB;;EACA,UAAI,CAACtB,KAAL,EAAY;EACR,cAAM8N,KAAN;EACH;;EACD,UAAI9N,KAAK,KAAK,GAAV,IAAiBA,KAAK,CAACA,KAAN,KAAgB,GAArC,EAA0C;EACtC4C,QAAAA,KAAK;EACR,OAFD,MAEO,IAAI5C,KAAK,KAAK,GAAV,IAAiBA,KAAK,CAACA,KAAN,KAAgB,GAArC,EAA0C;EAC7C4C,QAAAA,KAAK;EACR;EACJ;;EACDtB,IAAAA,CAAC;EACJ;;EACD,SAAO1B,MAAM,CAAC2B,KAAP,CAAaD,CAAC,GAAG,CAAjB,CAAP;EACH;EAED;EACA;;;EACA,SAASyM,UAAT,CAAoBnO,MAApB,EAA4B;EACxB,MAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAAChH,MAAvB,EAA+B;EAC3B,WAAO,CAAP;EACH;;EACD,MAAI0I,CAAC,GAAG1B,MAAM,CAAChH,MAAf;;EACA,MAAIgH,MAAM,CAAC0B,CAAC,GAAG,CAAL,CAAN,CAActB,KAAd,KAAwB,IAA5B,EAAkC;EAC9B,WAAO,CAAP;EACH;;EACD,SAAO,EAAEsB,CAAT,EAAY;EACR,QAAI1B,MAAM,CAAC0B,CAAD,CAAN,CAAUtB,KAAV,KAAoB,IAAxB,EAA8B;EAC1B,UAAIA,KAAK,GAAG,CAACJ,MAAM,CAAC0B,CAAC,GAAG,CAAL,CAAN,IAAiB,EAAlB,EAAsBtB,KAAlC;;EACA,UAAIA,KAAJ,EAAW;EACP,eAAOA,KAAK,CAACpH,MAAb;EACH;EACJ;EACJ;;EACD,SAAO,CAAP;EACH;EAED;EACA;;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACA,SAAS0B,KAAT,CAAe0T,OAAf,EAAwBhI,KAAxB,EAA+B;EAC3B,SAAOiI,WAAW,CAACD,OAAD,EAAUhI,KAAV,CAAX,KAAgCA,KAAK,CAACpN,MAA7C;;EACA,WAASqV,WAAT,CAAqBD,OAArB,EAA8BhI,KAA9B,EAAqC;EACjC;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACQ,aAASkI,eAAT,CAAyBC,QAAzB,EAAmCnI,KAAnC,EAA0C;EAAA,kDACxBmI,QADwB;EAAA;;EAAA;EACtC,+DAAwB;EAAA,cAAfC,EAAe;;EACpB,cAAM3U,EAAC,GAAGwU,WAAW,CAACG,EAAD,EAAIpI,KAAJ,CAArB;;EACA,cAAIvM,EAAC,KAAK,CAAC,CAAX,EAAc;EACV,mBAAOA,EAAP;EACH;EACJ;EANqC;EAAA;EAAA;EAAA;EAAA;;EAOtC,aAAO,CAAC,CAAR;EACH;;EACD,aAAS4U,gBAAT,GAA4B;EACxB,aAAOL,OAAO,CAACI,CAAD,CAAP,KAAenM,MAAM,OAAN,CAAW,QAAX,CAAf,IAAuC,CAAC/C,gBAAgB,CAAC8G,KAAK,CAAC1E,CAAD,CAAN,CAA/D;EACH;;EACD,aAASgN,UAAT,GAAsB;EAClB,UAAIC,YAAY,GAAGP,OAAO,CAACI,CAAC,GAAG,CAAL,CAA1B;EACA,UAAII,UAAU,GAAGxI,KAAK,CAAC1E,CAAC,GAAG,CAAL,CAAtB;;EACA,UAAIiN,YAAY,KAAK1a,SAAjB,IAA8B2a,UAAU,KAAK3a,SAAjD,EAA4D;EACxD,eAAOoa,WAAW,CAAC,CAACM,YAAD,CAAD,EAAiB,CAACC,UAAD,CAAjB,CAAlB;EACH;EACJ;;EACD,QAAIJ,CAAC,GAAG,CAAR;EACA,QAAIK,IAAI,GAAG,EAAX;;EACA,SAAK,IAAInN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0E,KAAK,CAACpN,MAA1B,EAAkC,EAAE0I,CAApC,EAAuC;EACnC,UAAI,OAAO0M,OAAO,CAACI,CAAD,CAAd,KAAsB,WAA1B,EAAuC;EACnC,eAAO9M,CAAP;EACH;;EACD,UAAI0M,OAAO,CAACI,CAAD,CAAP,YAAsBM,OAA1B,EAAmC;EAC/B,YAAIjV,CAAJ;;EACA,YAAI,CAAC,GAAD,EAAM,GAAN,EAAWkB,QAAX,CAAoBqT,OAAO,CAACI,CAAD,CAAP,CAAWO,IAA/B,CAAJ,EAA0C;EACtC,iBAAOrN,CAAC,GAAG0E,KAAK,CAACpN,MAAjB,EAAyB;EACrBa,YAAAA,CAAC,GAAGyU,eAAe,CAACF,OAAO,CAACI,CAAD,CAAP,CAAWD,QAAZ,EAAsBnI,KAAK,CAACzE,KAAN,CAAYD,CAAZ,CAAtB,CAAnB;;EACA,gBAAI7H,CAAC,KAAK,CAAC,CAAX,EAAc;EACV;EACH;;EACD6H,YAAAA,CAAC,IAAI7H,CAAL;EACH;;EACD6H,UAAAA,CAAC,IAAI,CAAL;EACA8M,UAAAA,CAAC;EACD;EACH,SAXD,MAWO,IAAIJ,OAAO,CAACI,CAAD,CAAP,CAAWO,IAAX,KAAoB,GAAxB,EAA6B;EAChClV,UAAAA,CAAC,GAAGyU,eAAe,CAACF,OAAO,CAACI,CAAD,CAAP,CAAWD,QAAZ,EAAsBnI,KAAK,CAACzE,KAAN,CAAYD,CAAZ,CAAtB,CAAnB;;EACA,cAAI7H,CAAC,KAAK,CAAC,CAAX,EAAc;EACV6H,YAAAA,CAAC,IAAI,CAAL,CADU;EAEb,WAFD,MAEO;EACH8M,YAAAA,CAAC;EACJ;;EACD;EACH;EACJ,OAtBD,MAsBO,IAAIJ,OAAO,CAACI,CAAD,CAAP,YAAsBrX,MAA1B,EAAkC;EACrC,YAAI,CAACiP,KAAK,CAAC1E,CAAD,CAAL,CAAShH,KAAT,CAAe0T,OAAO,CAACI,CAAD,CAAtB,CAAL,EAAiC;EAC7B,iBAAO,CAAC,CAAR;EACH;EACJ,OAJM,MAIA,IAAIQ,IAAI,CAACzQ,OAAL,CAAasE,QAAb,CAAsBuL,OAAO,CAACI,CAAD,CAA7B,CAAJ,EAAuC;EAC1C,YAAIJ,OAAO,CAACI,CAAD,CAAP,CAAW/S,OAAX,OAAyB2K,KAAK,CAAC1E,CAAD,CAAlC,EAAuC;EACnC,iBAAO,CAAC,CAAR;EACH;EACJ,OAJM,MAIA,IAAI,QAAO0M,OAAO,CAACI,CAAD,CAAd,MAAsB,QAA1B,EAAoC;EACvC,YAAIJ,OAAO,CAACI,CAAD,CAAP,KAAenM,MAAM,OAAN,CAAW,GAAX,CAAnB,EAAoC;EAChC;EACAwM,UAAAA,IAAI,CAACL,CAAD,CAAJ,GAAUK,IAAI,CAACL,CAAD,CAAJ,IAAW,CAArB,CAFgC;;EAIhC,cAAI,CAAC,GAAD,EAAM,GAAN,EAAWzT,QAAX,CAAoBqL,KAAK,CAAC1E,CAAD,CAAzB,CAAJ,EAAmC;EAC/BmN,YAAAA,IAAI,CAACL,CAAD,CAAJ;EACH,WAFD,MAEO,IAAI,CAAC,GAAD,EAAM,GAAN,EAAWzT,QAAX,CAAoBqL,KAAK,CAAC1E,CAAD,CAAzB,CAAJ,EAAmC;EACtCmN,YAAAA,IAAI,CAACL,CAAD,CAAJ;EACH;;EACD,cAAK,OAAOJ,OAAO,CAACI,CAAC,GAAG,CAAL,CAAd,KAA0B,WAA1B,IACAK,IAAI,CAACL,CAAD,CAAJ,KAAY,CADZ,IACiBE,UAAU,OAAO,CAAC,CADpC,IAEAG,IAAI,CAACL,CAAD,CAAJ,GAAU,CAFd,EAEiB;EACb;EACH;EACJ,SAdD,MAcO,IAAIC,gBAAgB,EAApB,EAAwB;EAC3B,iBAAO,CAAC,CAAR;EACH;EACJ,OAlBM,MAkBA,IAAIL,OAAO,CAACI,CAAD,CAAP,YAAsBhK,KAA1B,EAAiC;EACpC,YAAIyK,GAAG,GAAGZ,WAAW,CAACD,OAAO,CAACI,CAAD,CAAR,EAAapI,KAAK,CAACzE,KAAN,CAAYD,CAAZ,CAAb,CAArB;;EACA,YAAIuN,GAAG,KAAK,CAAC,CAAT,IAAcA,GAAG,GAAGvN,CAAN,GAAU0E,KAAK,CAACpN,MAAlC,EAA0C;EACtC;EACA,iBAAO,CAAC,CAAR;EACH;;EACD0I,QAAAA,CAAC,IAAIuN,GAAG,GAAG,CAAX;EACAT,QAAAA,CAAC;EACD;EACH,OATM,MASA;EACH,eAAO,CAAC,CAAR;EACH;;EACDA,MAAAA,CAAC;EACJ;;EACD,QAAIJ,OAAO,CAACpV,MAAR,KAAmBwV,CAAvB,EAA0B;EACtB;EACA,aAAO,CAAC,CAAR;EACH;;EACD,WAAOpI,KAAK,CAACpN,MAAb;EACH;EACJ;EAED;EACA;EACA;EACA;EACA;;;EACA,SAASkW,SAAT,CAAmB5D,IAAnB,EAAyB;EACrB,OAAK6D,QAAL,GAAgB7D,IAAI,CAAC1Q,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAhB;EACH;;;EAEDsU,SAAS,CAACE,QAAV,GAAqB;EACjBjI,EAAAA,MAAM,EAAE,CADS;EAEjBkI,EAAAA,MAAM,EAAE,CAFS;EAGjBC,EAAAA,UAAU,EAAE;EACRlQ,IAAAA,QAAQ,EAAE;EACN;EACA;EACA;EAHM,KADF;EAMRmQ,IAAAA,KAAK,EAAE;EACH,SAAG,CAAC,GAAD,EAAM,GAAN;EADA;EANC;EAHK,CAArB;EAcAL,SAAS,CAACxU,KAAV,GAAkBA,KAAlB;EAEA;EACA;;EACAwU,SAAS,CAACtP,SAAV,CAAoB4P,QAApB,GAA+B,SAASA,QAAT,CAAkB7U,OAAlB,EAA2B;EACtD,MAAIyU,QAAQ,GAAGF,SAAS,CAACE,QAAzB;;EACA,MAAI,OAAOzU,OAAP,KAAmB,WAAvB,EAAoC;EAChC,WAAOtB,MAAM,CAACoW,MAAP,CAAc,EAAd,EAAkBL,QAAlB,CAAP;EACH;;EACD,MAAIM,SAAS,GAAG/U,OAAO,IAAIA,OAAO,CAAC2U,UAAnB,IAAiC,EAAjD;EACA,MAAIlQ,QAAQ,GAAGsQ,SAAS,CAACtQ,QAAV,IAAsB,EAArC;EACA,MAAImQ,KAAK,GAAGG,SAAS,CAACH,KAAV,IAAmB;EAAE,OAAG;EAAL,GAA/B;EACA,uDACOH,QADP,GAEOzU,OAFP;EAGI2U,IAAAA,UAAU,EAAE;EACRlQ,MAAAA,QAAQ,+BAAMgQ,QAAQ,CAACE,UAAT,CAAoBlQ,QAA1B,sBAAuCA,QAAvC,EADA;EAERmQ,MAAAA,KAAK,kCACEA,KADF;EAED,wCAAOH,QAAQ,CAACE,UAAT,CAAoBC,KAApB,CAA0B,CAA1B,CAAP,sBAAwCA,KAAK,CAAC,CAAD,CAA7C;EAFC;EAFG;EAHhB;EAWH,CAnBD;;;EAqBAL,SAAS,CAACtP,SAAV,CAAoByP,MAApB,GAA6B,SAASA,MAAT,CAAgB1U,OAAhB,EAAyB;EAClD,MAAIqF,MAAM,GAAGmB,QAAQ,CAAC,KAAKgO,QAAN,EAAgB,IAAhB,CAArB;EACA,SAAO,KAAKQ,OAAL,CAAa3P,MAAb,EAAqBrF,OAArB,CAAP;EACH,CAHD;;;EAKAuU,SAAS,CAACU,eAAV,GAA4B,UAASxP,KAAT,EAAgByP,QAAhB,EAA0B;EAClD,WAASnV,KAAT,CAAeyH,IAAf,EAAqB;EACjB,QAAI,CAACA,IAAI,CAACnJ,MAAV,EAAkB;EACd,aAAO,KAAP;EACH;;EACD,QAAImJ,IAAI,CAAC2N,OAAL,CAAa1P,KAAb,MAAwB,CAAC,CAA7B,EAAgC;EAC5B,aAAO,IAAP;EACH,KAFD,MAEO;EACH,UAAI2P,OAAO,GAAG5N,IAAI,CAACd,MAAL,CAAY,UAAA2O,CAAC;EAAA,eAAIA,CAAC,YAAY7Y,MAAjB;EAAA,OAAb,CAAd;;EACA,UAAI,CAAC4Y,OAAO,CAAC/W,MAAb,EAAqB;EACjB,eAAO,KAAP;EACH;;EAJE,kDAKY+W,OALZ;EAAA;;EAAA;EAKH,+DAAwB;EAAA,cAAfhT,EAAe;;EACpB,cAAIqD,KAAK,CAAC1F,KAAN,CAAYqC,EAAZ,CAAJ,EAAqB;EACjB,mBAAO,IAAP;EACH;EACJ;EATE;EAAA;EAAA;EAAA;EAAA;EAUN;;EACD,WAAO,KAAP;EACH;;EACD,MAAIrC,KAAK,CAACmV,QAAQ,CAACP,UAAT,CAAoBlQ,QAArB,CAAT,EAAyC;EACrC,WAAOyQ,QAAQ,CAACR,MAAhB;EACH;;EACD,MAAIE,KAAK,GAAGM,QAAQ,CAACP,UAAT,CAAoBC,KAAhC;;EACA,sCAA6BlW,MAAM,CAAC4W,OAAP,CAAeV,KAAf,CAA7B,uCAAoD;EAA/C;EAAA,QAAKF,MAAL;EAAA,QAAarP,MAAb;;EACD,QAAItF,KAAK,CAACsF,MAAD,CAAT,EAAmB;EACf,aAAO,CAACqP,MAAR;EACH;EACJ;;EACD,SAAO,CAAC,CAAR;EACH,CA9BD;;;EAgCAH,SAAS,CAACtP,SAAV,CAAoB+P,OAApB,GAA8B,SAASA,OAAT,CAAiB3P,MAAjB,EAAyBrF,OAAzB,EAAkC;EAC5D,MAAIkV,QAAQ,GAAG,KAAKL,QAAL,CAAc7U,OAAd,CAAf;;EACA,MAAIuV,MAAM,GAAG/B,UAAU,CAACnO,MAAD,CAAvB;EACA,MAAIiO,IAAI,GAAGD,YAAY,CAAChO,MAAD,CAAvB,CAH4D;;EAK5D,MAAImQ,YAAY,GAAGnQ,MAAM,CAACA,MAAM,CAAChH,MAAP,GAAgBiV,IAAI,CAACjV,MAArB,GAA8B,CAA/B,CAAzB;EACA,MAAIoX,IAAI,GAAGpQ,MAAM,CAACA,MAAM,CAAChH,MAAP,GAAgB,CAAjB,CAAjB;;EACA,MAAIoX,IAAI,CAAChQ,KAAL,CAAW1F,KAAX,CAAiB,gBAAjB,CAAJ,EAAwC;EACpC,WAAOwV,MAAM,GAAGL,QAAQ,CAACR,MAAzB;EACH;;EACD,MAAIpB,IAAI,IAAIA,IAAI,CAACjV,MAAjB,EAAyB;EACrB,QAAIiV,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAAR,GAAe,CAAnB,EAAsB;EAClB2I,MAAAA,QAAQ,CAAC1I,MAAT,GAAkB,CAAlB;EACH;;EACD,QAAI8G,IAAI,CAAC5Z,QAAL,OAAoB2L,MAAM,CAAC3L,QAAP,EAApB,IAAyCgc,QAAQ,CAACpC,IAAD,CAArD,EAA6D;EACzD,aAAO4B,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAAjC;EACH,KAFD,MAEO,IAAIsN,IAAI,CAACjV,MAAL,KAAgB,CAApB,EAAuB;EAC1B,aAAO6W,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAA1B,GAAgC,CAAvC;EACH,KAFM,MAEA;EACH;EACA,UAAI2P,QAAQ,GAAG,CAAC,CAAhB;;EACA,UAAIH,YAAJ,EAAkB;EACd,YAAIZ,KAAK,GAAGL,SAAS,CAACU,eAAV,CAA0BO,YAAY,CAAC/P,KAAvC,EAA8CyP,QAA9C,CAAZ;;EACA,YAAIN,KAAK,KAAK,CAAC,CAAf,EAAkB;EACde,UAAAA,QAAQ,GAAGf,KAAX;EACH;EACJ;;EACD,UAAIe,QAAQ,KAAK,CAAC,CAAlB,EAAqB;EACjBA,QAAAA,QAAQ,GAAGpB,SAAS,CAACU,eAAV,CAA0B3B,IAAI,CAAC,CAAD,CAAJ,CAAQ7N,KAAlC,EAAyCyP,QAAzC,CAAX;EACH;;EACD,UAAIS,QAAQ,KAAK,CAAC,CAAlB,EAAqB;EACjB,eAAOT,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAA1B,GAAgC2P,QAAvC;EACH,OAFD,MAEO,IAAIrC,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAAR,GAAe+G,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAA3B,EAAiC;EACpC,eAAO2I,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAA1B,GAAgC,CAAvC;EACH,OAFM,MAEA,IAAIsN,IAAI,CAACjV,MAAL,GAAc,CAAd,IAAmBiV,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAAR,KAAiB+G,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAAhD,EAAsD;EACzD,YAAI+G,IAAI,CAAC,CAAD,CAAJ,CAAQ7N,KAAR,KAAkB,GAAlB,IAAyB6N,IAAI,CAAC,CAAD,CAAJ,CAAQ7N,KAAR,KAAkB,GAA/C,EAAoD;EAChD,iBAAOyP,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAAjC;EACH;;EACD,eAAOkP,QAAQ,CAAC1I,MAAT,GAAkB8G,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAAjC;EACH,OALM,MAKA,IAAIsN,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAAR,KAAiB+G,IAAI,CAAC,CAAD,CAAJ,CAAQ/G,IAA7B,EAAmC;EACtC,eAAO2I,QAAQ,CAAC1I,MAAT,GAAkB0I,QAAQ,CAACR,MAA3B,GAAoCpB,IAAI,CAAC,CAAD,CAAJ,CAAQtN,GAAnD;EACH,OAFM,MAEA;EACH,YAAI4P,WAAW,GAAGtC,IAAI,CAACtM,KAAL,CAAW,CAAX,CAAlB;;EACA,aAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6O,WAAW,CAACvX,MAAhC,EAAwC,EAAE0I,CAA1C,EAA6C;EACzC,cAAItB,KAAK,GAAGmQ,WAAW,CAAC7O,CAAD,CAAvB;;EACA,cAAItB,KAAK,CAACA,KAAN,CAAYgB,IAAZ,EAAJ,EAAwB;EACpB,mBAAOhB,KAAK,CAACO,GAAb;EACH;EACJ;EACJ;EACJ;EACJ,GAzCD,MAyCO;EACH,WAAO,CAAP;EACH;;EACD,SAAOuP,MAAM,GAAGL,QAAQ,CAACR,MAAzB;EACH,CAvDD;;;EAyDA,SAASmB,KAAT,CAAepC,OAAf,EAAwB;EACpB,OAAKA,OAAL,GAAeA,OAAf;EACH;;;EAEDoC,KAAK,CAAC5Q,SAAN,CAAgBvL,QAAhB,GAA2B,YAAW;EAClC,6BAAoB,KAAK+Z,OAAzB;EACH,CAFD;;;EAIAoC,KAAK,CAAC5Q,SAAN,CAAgBlF,KAAhB,GAAwB,UAAS7B,MAAT,EAAiB;EACrC,SAAOA,MAAM,CAAC6B,KAAP,CAAa,KAAK0T,OAAlB,CAAP;EACH,CAFD;EAIA;EACA;EACA;;;EACA,SAASU,OAAT,GAA0B;EAAA,qCAAN/N,IAAM;EAANA,IAAAA,IAAM;EAAA;;EACtB,MAAIgO,IAAI,GAAGhO,IAAI,CAACjB,GAAL,EAAX;EACA,OAAKyO,QAAL,GAAgBxN,IAAhB;EACA,OAAKgO,IAAL,GAAYA,IAAZ;EACH;;EACDD,OAAO,CAAClP,SAAR,CAAkBvL,QAAlB,GAA6B,YAAW;EACpC,MAAIka,QAAQ,GAAG,KAAKA,QAAL,CAAc3U,GAAd,CAAkB,UAAAlD,CAAC;EAAA,WAAIrC,QAAQ,CAACqC,CAAD,CAAZ;EAAA,GAAnB,EAAoC6C,IAApC,CAAyC,GAAzC,CAAf;EACA,6BAAoBgV,QAApB,cAAgC,KAAKQ,IAArC;EACH,CAHD;;;EAKAG,SAAS,CAACJ,OAAV,GAAoBA,OAApB;EACAI,SAAS,CAACsB,KAAV,GAAkBA,KAAlB;EACA,IAAIC,GAAG,GAAG,QAAV;EACA,IAAIC,GAAG,GAAG,SAAV;EACA,IAAIC,KAAK,GAAG,UAAZ;EACA,IAAMC,SAAS,GAAG,IAAIJ,KAAJ,CAAU,QAAV,CAAlB;;EAEA,IAAM3B,IAAI,GAAGxM,MAAM,OAAN,CAAW,GAAX,CAAb;EACA,IAAMwO,YAAY,GAAG,IAAI/B,OAAJ,CAAY,CAAC2B,GAAD,EAAM5B,IAAN,EAAY6B,GAAZ,CAAZ,EAA8B,CAACC,KAAD,CAA9B,EAAuC,GAAvC,CAArB;EACA,IAAM1C,IAAI,GAAG,IAAIa,OAAJ,CAAY,CAAC2B,GAAD,EAAM5B,IAAN,EAAY6B,GAAZ,CAAZ,EAA8B,GAA9B,CAAb;EACA,IAAMlO,MAAM,GAAG,IAAIsM,OAAJ,CAAY,CAACzM,MAAM,OAAN,CAAW,QAAX,CAAD,CAAZ,EAAoC,GAApC,CAAf;EACA,IAAMyO,OAAO,GAAG,IAAIhC,OAAJ,CAAY,CAACzM,MAAM,OAAN,CAAW,QAAX,CAAD,CAAZ,EAAoC,GAApC,CAAhB;EACA,IAAM0O,WAAW,GAAG,CAACN,GAAD,EAAMK,OAAN,EAAeJ,GAAf,CAApB;EACA,IAAMM,SAAS,GAAG,IAAIlC,OAAJ,CAAY,CAAC2B,GAAD,EAAMpO,MAAM,OAAN,CAAW,QAAX,CAAN,EAA4BwM,IAA5B,EAAkC6B,GAAlC,CAAZ,EAAoD,GAApD,CAAlB;;EAEA,IAAIO,aAAa,GAAGC,WAAW,CAAC,QAAD,EAAW,QAAX,EAAqB,cAArB,EAAqC,cAArC,CAA/B;EACA;;EACA,IAAIC,OAAO,GAAG,8FAAd;EACA;;EACA,IAAIC,MAAM,GAAG,wCAAb;;EAEA,SAASF,WAAT,GAA8B;EAAA,qCAANnQ,IAAM;EAANA,IAAAA,IAAM;EAAA;;EAC1B,SAAO,IAAI5J,MAAJ,sBAAyB4J,IAAI,CAACxH,IAAL,CAAU,GAAV,CAAzB,QAAP;EACH;;;EAED2V,SAAS,CAAC5G,KAAV,GAAkB,CACd,CAAC,CAAC2F,IAAD,CAAD,EAAS,CAAT,EAAY2C,SAAZ,CADc,EAEd,CAAC,CAACH,GAAD,EAAMS,WAAW,CAAC,OAAD,EAAU,aAAV,CAAjB,CAAD,EAA6C,CAA7C,CAFc,EAGd,CAAC,CAACT,GAAD,EAAMW,MAAN,EAAc5O,MAAd,EAAsBiO,GAAtB,EAA2BO,SAA3B,EAAsCN,GAAtC,CAAD,EAA6C,CAA7C,CAHc,EAId,CAAC,CAACD,GAAD,EAAMW,MAAN,EAAc5O,MAAd,EAAsBqO,YAAtB,CAAD,EAAsC,CAAtC,EAAyCD,SAAzC,CAJc,EAKd,CAAC,CAACH,GAAD,EAAMW,MAAN,EAAcX,GAAd,EAAmBO,SAAnB,CAAD,EAAgC,CAAhC,EAAmCJ,SAAnC,CALc;EAOd,CAAC,CAACH,GAAD,EAAMU,OAAN,EAAe,IAAIrC,OAAJ,CAAY,CAAC,UAAD,CAAZ,EAA0B,GAA1B,CAAf,EAA+Cb,IAA/C,CAAD,EAAuD,CAAvD,EAA0D2C,SAA1D,CAPc,EAQd,CAAC,CAACH,GAAD,EAAMxC,IAAN,CAAD,EAAc,CAAd,EAAiB2C,SAAjB,CARc,EASd,CAAC,CAACH,GAAD,EAAME,KAAN,EAAa1C,IAAb,CAAD,EAAqB,CAArB,EAAwB2C,SAAxB,CATc,EAUd,CAAC,CAACH,GAAD,EAAMS,WAAW,CAAC,QAAD,EAAW,IAAX,CAAjB,EAAmCP,KAAnC,CAAD,EAA4C,CAA5C,EAA+CC,SAA/C,CAVc,EAWd,CAAC,CAACH,GAAD,EAAMS,WAAW,CAAC,OAAD,CAAjB,EAA4BP,KAA5B,EAAmC1C,IAAnC,CAAD,EAA2C,CAA3C,EAA8C2C,SAA9C,CAXc,EAYd,CAAC,CAACH,GAAD,EAAMS,WAAW,CAAC,IAAD,CAAjB,EAAyBP,KAAzB,EAAgC9B,IAAhC,CAAD,EAAwC,CAAxC,CAZc,EAad,CAAC,CAAC4B,GAAD,EAAMQ,aAAN,EAAqBF,WAArB,CAAD,EAAoC,CAApC,EAAuCH,SAAvC,CAbc,EAcd,CAAC,CAACH,GAAD,EAAMQ,aAAN,EAAqBF,WAArB,EAAkCxR,SAAlC,CAAD,EAA+C,CAA/C,EAAkDqR,SAAlD,CAdc,EAed,CAAC,CAACH,GAAD,EAAMQ,aAAN,EAAqBF,WAArB,EAAkCxR,SAAlC,EAA6C0O,IAA7C,CAAD,EAAqD,CAArD,EAAwD2C,SAAxD,CAfc,EAgBd,CAAC,CAACH,GAAD,EAAMQ,aAAN,EAAqBF,WAArB,EAAkC9C,IAAlC,CAAD,EAA0C,CAA1C,EAA6C2C,SAA7C,CAhBc,CAAlB;;EAmBA1B,SAAS,CAACtP,SAAV,YAA4B,YAAW;EACnC,MAAI0L,IAAI,GAAG,KAAK6D,QAAL,CAAcvU,OAAd,CAAsB,WAAtB,EAAmC,KAAnC,EAA0CA,OAA1C,CAAkD,MAAlD,EAA0D,EAA1D,CAAX,CADmC;;;EAGnC,MAAMwF,KAAK,GAAG,SAARA,KAAQ,CAAAzB,CAAC,EAAI;EACf,QAAIA,CAAC,CAACyB,KAAF,CAAQ1F,KAAR,CAAc6E,SAAd,KAA4BZ,CAAC,CAACyB,KAAF,CAAQ1F,KAAR,CAAc1C,KAAd,CAAhC,EAAsD;EAClD,aAAO2G,CAAC,CAACyB,KAAT;EACH,KAFD,MAEO;EACH,aAAOzB,CAAC,CAACyB,KAAF,CAAQxF,OAAR,CAAgB,KAAhB,EAAuB,GAAvB,CAAP;EACH;EACJ,GAND;;EAOA,MAAMyW,iBAAiB,GAAG,SAApBA,iBAAoB,CAAArR,MAAM,EAAI;EAChC,SAAK,IAAI0B,CAAC,GAAG1B,MAAM,CAAChH,MAApB,EAA4B0I,CAAC,EAA7B,GAAkC;EAC9B,UAAMtB,MAAK,GAAGJ,MAAM,CAAC0B,CAAD,CAApB;;EACA,UAAItB,MAAK,CAACgB,IAAN,MAAgB,CAACyE,UAAU,CAACzF,MAAD,CAA/B,EAAwC;EACpC,eAAOJ,MAAM,CAAChH,MAAP,GAAgB0I,CAAhB,GAAoB,CAA3B;EACH;EACJ;EACJ,GAPD,CAVmC;EAmBnC;;;EACA,MAAI1B,MAAM,GAAGmB,QAAQ,CAACmK,IAAD,EAAO,IAAP,CAAR,CAAqB1R,GAArB,CAAyBwG,KAAzB,EAAgCiB,MAAhC,CAAuC,UAAA1C,CAAC;EAAA,WAAIA,CAAC,KAAK,IAAV;EAAA,GAAxC,CAAb;EACA,MAAQ2J,KAAR,GAAkB4G,SAAlB,CAAQ5G,KAAR;;EACA4F,EAAAA,KAAK,EAAE,KAAK,IAAIxM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1B,MAAM,CAAChH,MAA3B,EAAmC,EAAE0I,CAArC,EAAwC;EAC3C,QAAI,CAAC1B,MAAM,CAAC0B,CAAD,CAAN,CAAUN,IAAV,EAAL,EAAuB;EACnB;EACH;;EACD,QAAIkQ,GAAG,GAAGtR,MAAM,CAAC2B,KAAP,CAAa,CAAb,EAAgBD,CAAhB,CAAV;EACA,QAAIuM,IAAI,GAAG,EAAX;EACA3F,IAAAA,KAAK,CAAC1O,GAAN,CAAU,UAAAmQ,CAAC;EAAA,aAAIA,CAAC,CAAC,CAAD,CAAL;EAAA,KAAX,EAAqBtR,OAArB,CAA6B,UAAAuK,KAAK,EAAI;EAClCA,MAAAA,KAAK,GAAGA,KAAK,CAACvH,OAAN,EAAR,CADkC;EAGlC;;EACA,UAAIuH,KAAK,GAAG,CAAR,IAAa,CAACiL,IAAI,CAACjL,KAAD,CAAtB,EAA+B;EAC3BiL,QAAAA,IAAI,CAACjL,KAAD,CAAJ,GAAcgL,YAAY,CAACsD,GAAD,EAAMtO,KAAN,CAA1B;EACH;EACJ,KAPD;;EAN2C,gDAcTsF,KAdS;EAAA;;EAAA;EAc3C,6DAAyC;EAAA;EAAA,YAA/B8F,OAA+B;EAAA,YAAtBpL,KAAsB;EAAA,YAAfuO,GAAe;;EACrCvO,QAAAA,KAAK,GAAGA,KAAK,CAACvH,OAAN,EAAR,CADqC;;EAGrC,YAAI+V,SAAS,GAAGxO,KAAK,GAAG,CAAR,GAAYiL,IAAI,CAACjL,KAAD,CAAhB,GAA0BsO,GAA1C;EACA,YAAMlL,KAAK,GAAGoL,SAAS,CAACnQ,MAAV,CAAiB,UAAA1C,CAAC;EAAA,iBAAIA,CAAC,CAACyC,IAAF,MAAY,CAACyE,UAAU,CAAClH,CAAD,CAA3B;EAAA,SAAlB,CAAd;EACA,YAAMsQ,GAAG,GAAGoC,iBAAiB,CAACG,SAAD,CAA7B;EACA,YAAI3X,CAAC,GAAGa,KAAK,CAAC0T,OAAD,EAAUhI,KAAV,CAAb;EACA,YAAIqL,IAAI,GAAGzR,MAAM,CAAC2B,KAAP,CAAaD,CAAb,EAAgB0L,IAAhB,CAAqB,UAAAzO,CAAC;EAAA,iBAAIA,CAAC,CAACyC,IAAF,MAAY,CAACyE,UAAU,CAAClH,CAAD,CAA3B;EAAA,SAAtB,CAAX;;EACA,YAAI9E,CAAC,KAAK0X,GAAG,YAAYf,KAAf,IAAwBe,GAAG,CAAC7W,KAAJ,CAAU+W,IAAV,CAAxB,IAA2C,CAACF,GAAjD,CAAL,EAA4D;EACxD,cAAMG,KAAK,GAAGhQ,CAAC,GAAGuN,GAAlB;;EACA,cAAIjP,MAAM,CAAC0R,KAAD,CAAN,KAAkB,IAAtB,EAA4B;EACxB,gBAAI,CAAC1R,MAAM,CAAC0R,KAAD,CAAN,CAActQ,IAAd,EAAL,EAA2B;EACvBpB,cAAAA,MAAM,CAAC0R,KAAD,CAAN,GAAgB,IAAhB;EACH,aAFD,MAEO;EACH1R,cAAAA,MAAM,CAAC+B,MAAP,CAAc2P,KAAd,EAAqB,CAArB,EAAwB,IAAxB;EACAhQ,cAAAA,CAAC;EACJ;EACJ;;EACDA,UAAAA,CAAC,IAAIuN,GAAL;EACA,mBAASf,KAAT;EACH;EACJ;EAnC0C;EAAA;EAAA;EAAA;EAAA;EAoC9C;;EACD,OAAKiB,QAAL,GAAgBnP,MAAM,CAACzG,IAAP,CAAY,EAAZ,CAAhB;EACA,SAAO,IAAP;EACH,CA7DD;;;EA+DA2V,SAAS,CAACtP,SAAV,CAAoB+R,OAApB,GAA8B,UAASjQ,CAAT,EAAY;EACtC,SAAO,IAAI8C,KAAJ,CAAU9C,CAAC,GAAG,CAAd,EAAiBnI,IAAjB,CAAsB,GAAtB,CAAP;EACH,CAFD;EAIA;EACA;;;EACA2V,SAAS,CAACtP,SAAV,CAAoBgS,MAApB,GAA6B,SAASA,MAAT,CAAgBjX,OAAhB,EAAyB;EAClD;EACA;EACA,MAAI2Q,IAAI,GAAG,KAAK6D,QAAL,CAAcvU,OAAd,CAAsB,iBAAtB,EAAyC,KAAzC,CAAX;;EACA,MAAIoF,MAAM,GAAGmB,QAAQ,CAACmK,IAAD,EAAO,IAAP,CAArB;;EACA,MAAIuE,QAAQ,GAAG,KAAKL,QAAL,CAAc7U,OAAd,CAAf;;EACA,MAAI0U,MAAM,GAAG,CAAb;EACA,MAAIlI,MAAM,GAAG,CAAb;;EACA,OAAK,IAAIzF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1B,MAAM,CAAChH,MAA3B,EAAmC,EAAE0I,CAArC,EAAwC;EACpC,QAAItB,KAAK,GAAGJ,MAAM,CAAC0B,CAAD,CAAlB;;EACA,QAAItB,KAAK,CAACA,KAAN,KAAgB,IAApB,EAA0B;EACtBiP,MAAAA,MAAM,GAAG,KAAKM,OAAL,CAAa3P,MAAM,CAAC2B,KAAP,CAAa,CAAb,EAAgBD,CAAhB,CAAb,EAAiCmO,QAAjC,CAAT;EACA1I,MAAAA,MAAM,IAAIkI,MAAV;;EACA,UAAIrP,MAAM,CAAC0B,CAAC,GAAG,CAAL,CAAV,EAAmB;EACf1B,QAAAA,MAAM,CAAC0B,CAAC,GAAG,CAAL,CAAN,CAActB,KAAd,GAAsB,KAAKuR,OAAL,CAAatC,MAAb,CAAtB,CADe;;EAGfA,QAAAA,MAAM;EACNlI,QAAAA,MAAM;;EACN,aAAK,IAAI0K,CAAC,GAAGnQ,CAAC,GAAG,CAAjB,EAAoBmQ,CAAC,GAAG7R,MAAM,CAAChH,MAA/B,EAAuC,EAAE6Y,CAAzC,EAA4C;EACxC7R,UAAAA,MAAM,CAAC6R,CAAD,CAAN,CAAU1K,MAAV,IAAoBA,MAApB;EACAnH,UAAAA,MAAM,CAAC6R,CAAD,CAAN,CAAUlR,GAAV,IAAiB0O,MAAjB;;EACA,cAAIrP,MAAM,CAAC6R,CAAD,CAAN,CAAUzR,KAAV,KAAoB,IAAxB,EAA8B;EAC1B;EACAsB,YAAAA,CAAC,GAAGmQ,CAAC,GAAG,CAAR;EACA;EACH;EACJ;EACJ;EACJ;EACJ;;EACD,SAAO7R,MAAM,CAACpG,GAAP,CAAW,UAAAwG,KAAK,EAAI;EACvB,QAAIA,KAAK,CAACA,KAAN,CAAY1F,KAAZ,CAAkB6E,SAAlB,CAAJ,EAAkC;EAC9B,UAAIa,KAAK,CAACA,KAAN,CAAY1F,KAAZ,CAAkB,IAAlB,CAAJ,EAA6B;EACzB,YAAIwV,MAAM,GAAG,IAAI1L,KAAJ,CAAUpE,KAAK,CAACO,GAAN,GAAY,CAAtB,EAAyBpH,IAAzB,CAA8B,GAA9B,CAAb;EACA,YAAIuY,KAAK,GAAG1R,KAAK,CAACA,KAAN,CAAYtF,KAAZ,CAAkB,IAAlB,CAAZ;EACAsF,QAAAA,KAAK,CAACA,KAAN,GAAc,CAAC0R,KAAK,CAAC,CAAD,CAAN,EAAWlJ,MAAX,CAAkBkJ,KAAK,CAACnQ,KAAN,CAAY,CAAZ,EAAe/H,GAAf,CAAmB,UAAAsN,IAAI,EAAI;EACvD,iBAAOgJ,MAAM,GAAGhJ,IAAhB;EACH,SAF+B,CAAlB,EAEV3N,IAFU,CAEL,IAFK,CAAd;EAGH;EACJ;;EACD,WAAO6G,KAAK,CAACA,KAAb;EACH,GAXM,EAWJ7G,IAXI,CAWC,EAXD,CAAP;EAYH,CA1CD;EA4CA;EACA;EACA;;;EACA,SAASwY,OAAT,CAAiBjN,KAAjB,EAAwBkN,OAAxB,EAAiC;EAC7B,MAAI3d,QAAQ,GAAGgF,MAAM,CAACuG,SAAP,CAAiBvL,QAAhC;EACA,MAAI4d,YAAY,GAAG,gBAAnB;EAEA,MAAIzZ,MAAM,GAAG,EAAb;EACA,MAAI0Z,KAAK,GAAIF,OAAO,IAAIlN,KAAZ,IAAsBA,KAAK,CAACnD,KAAN,EAAlC;EACA,MAAIwQ,IAAJ;;EAEA,MAAI,CAACrN,KAAK,CAAC9L,MAAX,EAAmB;EACf,WAAOR,MAAP;EACH;;EAED2Z,EAAAA,IAAI,GAAGD,KAAK,CAACpS,GAAN,EAAP;;EAEA,KAAG;EACC,QAAIzL,QAAQ,CAAC+B,IAAT,CAAc+b,IAAd,MAAwBF,YAA5B,EAA0C;EACtCC,MAAAA,KAAK,CAAC/Y,IAAN,CAAW8H,KAAX,CAAiBiR,KAAjB,EAAwBC,IAAxB;EACH,KAFD,MAEO;EACH3Z,MAAAA,MAAM,CAACW,IAAP,CAAYgZ,IAAZ;EACH;EACJ,GAND,QAMSD,KAAK,CAAClZ,MAAN,IAAgB,CAACmZ,IAAI,GAAGD,KAAK,CAACpS,GAAN,EAAR,MAAyB7L,SANlD;;EAQAuE,EAAAA,MAAM,CAACoJ,OAAP,GAtB6B;;EAuB7B,SAAOpJ,MAAP;EACH;EAED;EACA;;;EACA,SAAS4Z,GAAT,GAAe;;EACfA,GAAG,CAACxS,SAAJ,CAAcvL,QAAd,GAAyB,YAAW;EAChC,SAAO,IAAP;EACH,CAFD;;EAGA+d,GAAG,CAACxS,SAAJ,CAAcnE,OAAd,GAAwB,YAAW;EAC/B,SAAOxH,SAAP;EACH,CAFD;;EAGAme,GAAG,CAACxS,SAAJ,CAAcgD,SAAd,GAA0B,YAAW;EACjC,SAAO,CAAP;EACH,CAFD;;EAGAwP,GAAG,CAACxS,SAAJ,CAAcyS,SAAd,GAA0B,YAAW;EACjC,SAAO,EAAP;EACH,CAFD;;EAGAD,GAAG,CAACxS,SAAJ,CAAc+F,MAAd,GAAuB,UAASjP,CAAT,EAAY;EAC/B,SAAO,IAAI0U,IAAJ,CAAS1U,CAAT,EAAYsU,IAAZ,CAAP;EACH,CAFD;;EAGAoH,GAAG,CAACxS,SAAJ,CAAcuM,QAAd,GAAyB,YAAW;EAChC,SAAO,EAAP;EACH,CAFD;;EAGA,IAAInB,IAAG,GAAG,IAAIoH,GAAJ,EAAV;EAEA;EACA;;;EACA,SAAShH,IAAT,CAAcY,GAAd,EAAmBb,GAAnB,EAAwB;EACpB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,KAAKjJ,WAAL,KAAqBkJ,IAApD,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH;;EACD,OAAKa,GAAL,GAAWA,GAAX;EACA,OAAKb,GAAL,GAAWA,GAAX;EACH;;;EAED,SAASgB,QAAT,CAAkBlK,IAAlB,EAAwBqQ,IAAxB,EAA8B;EAC1B,SAAO,SAASC,KAAT,CAAepQ,IAAf,EAAqB;EACxBqQ,IAAAA,SAAS,CAACvQ,IAAD,EAAOE,IAAP,EAAa,CAAC,MAAD,EAAS,KAAT,CAAb,CAAT;;EACA,QAAIA,IAAI,KAAK6I,IAAb,EAAkB;EACd,aAAO,EAAP;EACH;;EACD,QAAIxS,MAAM,GAAG,EAAb;EACA,QAAI2Z,IAAI,GAAGhQ,IAAX;;EACA,WAAO,IAAP,EAAa;EACT,UAAIgQ,IAAI,YAAY/G,IAApB,EAA0B;EACtB,YAAI+G,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAJ,EAA4B;EACxB;EACH;;EACD,YAAIzG,GAAG,GAAGmG,IAAI,CAACnG,GAAf;;EACA,YAAIsG,IAAI,IAAItG,GAAG,YAAYZ,IAA3B,EAAiC;EAC7BY,UAAAA,GAAG,GAAG,KAAK9U,GAAL,CAAS+K,IAAT,EAAe7L,IAAf,CAAoB,IAApB,EAA0B4V,GAA1B,CAAN;EACH;;EACDxT,QAAAA,MAAM,CAACW,IAAP,CAAY6S,GAAZ;EACAmG,QAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH,OAVD,MAUO,IAAIgH,IAAI,KAAKnH,IAAb,EAAkB;EACrB;EACH,OAFM,MAEA;EACH,cAAM,IAAI7O,KAAJ,WAAa8F,IAAb,mCAAN;EACH;EACJ;;EACD,WAAOzJ,MAAP;EACH,GAzBD;EA0BH;;;EAED4S,IAAI,CAACxL,SAAL,CAAemS,OAAf,GAAyB,YAAW;EAChC,SAAO3G,IAAI,CAACkB,SAAL,CAAeyF,OAAO,CAAC,KAAK5F,QAAL,EAAD,CAAtB,CAAP;EACH,CAFD;;;EAIAf,IAAI,CAACxL,SAAL,CAAe5G,MAAf,GAAwB,YAAW;EAC/B,MAAIwO,GAAG,GAAG,CAAV;EACA,MAAI2K,IAAI,GAAG,IAAX;;EACA,SAAO,IAAP,EAAa;EACT,QAAI,CAACA,IAAD,IAASA,IAAI,KAAKnH,IAAlB,IAAyB,EAAEmH,IAAI,YAAY/G,IAAlB,CAAzB,IACA+G,IAAI,CAACM,UAAL,CAAgB,KAAhB,CADJ,EAC4B;EACxB;EACH;;EACDjL,IAAAA,GAAG;EACH2K,IAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;;EACD,SAAO3D,GAAP;EACH,CAZD;;;EAcA4D,IAAI,CAAC1Q,KAAL,GAAa,UAASoI,GAAT,EAAcjD,IAAd,EAAoB;EAC7B,MAAIiD,GAAG,YAAY/D,OAAnB,EAA4B;EACxB,WAAOA,OAAO,CAACwD,EAAR,CAAWO,GAAX,EAAgBjD,IAAhB,CAAP;EACH,GAFD,MAEO,IAAIiD,GAAG,YAAYsI,IAAnB,EAAyB;EAC5B,WAAOA,IAAI,CAAC1Q,KAAL,CAAWoI,GAAG,CAACkJ,GAAf,EAAoBnM,IAApB,KAA6BuL,IAAI,CAAC1Q,KAAL,CAAWoI,GAAG,CAACqI,GAAf,EAAoBtL,IAApB,CAApC;EACH,GAFM,MAEA,IAAI2E,KAAK,CAACC,OAAN,CAAc3B,GAAd,CAAJ,EAAwB;EAC3B,WAAOA,GAAG,CAAC4P,IAAJ,CAAS,UAAAhc,CAAC,EAAI;EACjB,aAAO0U,IAAI,CAAC1Q,KAAL,CAAWhE,CAAX,EAAcmJ,IAAd,CAAP;EACH,KAFM,CAAP;EAGH,GAJM,MAIA,IAAI+L,eAAe,CAAC9I,GAAD,CAAnB,EAA0B;EAC7B,WAAOzJ,MAAM,CAACkU,MAAP,CAAczK,GAAd,EAAmB4P,IAAnB,CAAwB,UAAAhc,CAAC,EAAI;EAChC,aAAO0U,IAAI,CAAC1Q,KAAL,CAAWhE,CAAX,EAAcmJ,IAAd,CAAP;EACH,KAFM,CAAP;EAGH;;EACD,SAAO,KAAP;EACH,CAfD;;;EAiBAuL,IAAI,CAACxL,SAAL,CAAewN,IAAf,GAAsB,UAASvN,IAAT,EAAe;EACjC,SAAOuL,IAAI,CAAC1Q,KAAL,CAAW,IAAX,EAAiBmF,IAAjB,CAAP;EACH,CAFD;;;EAKAuL,IAAI,CAACxL,SAAL,CAAe+S,KAAf,GAAuB,YAAsB;EAAA,MAAbL,IAAa,uEAAN,IAAM;EACzC,MAAIM,OAAO,GAAG,IAAIC,GAAJ,EAAd;;EACA,WAASF,KAAT,CAAeR,IAAf,EAAqB;EACjB,QAAIA,IAAI,YAAY/G,IAApB,EAA0B;EACtB,UAAIwH,OAAO,CAACE,GAAR,CAAYX,IAAZ,CAAJ,EAAuB;EACnB,eAAOS,OAAO,CAAC1b,GAAR,CAAYib,IAAZ,CAAP;EACH;;EACD,UAAIpG,IAAI,GAAG,IAAIX,IAAJ,EAAX;EACAwH,MAAAA,OAAO,CAACrM,GAAR,CAAY4L,IAAZ,EAAkBpG,IAAlB;;EACA,UAAIuG,IAAJ,EAAU;EACNvG,QAAAA,IAAI,CAACC,GAAL,GAAW2G,KAAK,CAACR,IAAI,CAACnG,GAAN,CAAhB;EACH,OAFD,MAEO;EACHD,QAAAA,IAAI,CAACC,GAAL,GAAWmG,IAAI,CAACnG,GAAhB;EACH;;EACDD,MAAAA,IAAI,CAACZ,GAAL,GAAWwH,KAAK,CAACR,IAAI,CAAChH,GAAN,CAAhB;EACAY,MAAAA,IAAI,CAACgH,UAAD,CAAJ,GAAmBZ,IAAI,CAACY,UAAD,CAAvB;EACA,aAAOhH,IAAP;EACH;;EACD,WAAOoG,IAAP;EACH;;EACD,SAAOQ,KAAK,CAAC,IAAD,CAAZ;EACH,CArBD;;;EAwBAvH,IAAI,CAACxL,SAAL,CAAeoT,SAAf,GAA2B,YAAW;EAClC,MAAIb,IAAI,GAAG,IAAX;;EACA,SAAO,IAAP,EAAa;EACT,QAAIA,IAAI,CAAChH,GAAL,KAAaH,IAAjB,EAAsB;EAClB,aAAOmH,IAAP;EACH;;EACDA,IAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;EACJ,CARD;;;EAWAC,IAAI,CAACxL,SAAL,CAAeuM,QAAf,GAA0B,YAAsB;EAAA,MAAbmG,IAAa,uEAAN,IAAM;EAC5C,MAAI9Z,MAAM,GAAG,EAAb;;EACA,MAAI,KAAKwT,GAAL,YAAoBZ,IAAxB,EAA8B;EAC1B,QAAIkH,IAAJ,EAAU;EACN9Z,MAAAA,MAAM,CAACW,IAAP,CAAY,KAAK6S,GAAL,CAASG,QAAT,EAAZ;EACH,KAFD,MAEO;EACH3T,MAAAA,MAAM,CAACW,IAAP,CAAY,KAAK6S,GAAjB;EACH;EACJ,GAND,MAMO;EACHxT,IAAAA,MAAM,CAACW,IAAP,CAAY,KAAK6S,GAAL,CAASvQ,OAAT,EAAZ;EACH;;EACD,MAAI,KAAK0P,GAAL,YAAoBC,IAAxB,EAA8B;EAC1B5S,IAAAA,MAAM,GAAGA,MAAM,CAACoQ,MAAP,CAAc,KAAKuC,GAAL,CAASgB,QAAT,EAAd,CAAT;EACH;;EACD,SAAO3T,MAAP;EACH,CAfD;;;EAkBA4S,IAAI,CAACkB,SAAL,GAAiB,UAASxH,KAAT,EAA4C;EAAA,MAA5BwN,IAA4B,uEAArB,IAAqB;EAAA,MAAf7P,KAAe,uEAAP,KAAO;;EACzD,MAAIqC,KAAK,YAAYsG,IAAjB,IAAyB3I,KAAK,IAAIqC,KAAK,YAAYN,KAA1B,IAAmCM,KAAK,CAACmO,QAAD,CAArE,EAAiF;EAC7E,WAAOnO,KAAP;EACH;;EACD,MAAIwN,IAAI,KAAK,KAAb,EAAoB;EAChB,QAAInQ,IAAI,GAAG6I,IAAX;;EACA,SAAK,IAAItJ,GAAC,GAAGoD,KAAK,CAAC9L,MAAnB,EAA2B0I,GAAC,EAA5B,GAAiC;EAC7BS,MAAAA,IAAI,GAAG,IAAIiJ,IAAJ,CAAStG,KAAK,CAACpD,GAAD,CAAd,EAAmBS,IAAnB,CAAP;EACH;;EACD,WAAOA,IAAP;EACH;;EACD,MAAI2C,KAAK,CAAC9L,MAAN,IAAgB,EAAE8L,KAAK,YAAYN,KAAnB,CAApB,EAA+C;EAC3CM,IAAAA,KAAK,sBAAOA,KAAP,CAAL;EACH;;EACD,MAAItM,MAAM,GAAGwS,IAAb;EACA,MAAItJ,CAAC,GAAGoD,KAAK,CAAC9L,MAAd;;EACA,SAAO0I,CAAC,EAAR,EAAY;EACR,QAAIsK,GAAG,GAAGlH,KAAK,CAACpD,CAAD,CAAf;;EACA,QAAIsK,GAAG,YAAYxH,KAAnB,EAA0B;EACtBwH,MAAAA,GAAG,GAAGZ,IAAI,CAACkB,SAAL,CAAeN,GAAf,EAAoBsG,IAApB,EAA0B7P,KAA1B,CAAN;EACH,KAFD,MAEO,IAAI,OAAOuJ,GAAP,KAAe,QAAnB,EAA6B;EAChCA,MAAAA,GAAG,GAAGzN,OAAO,CAACyN,GAAD,CAAb;EACH,KAFM,MAEA,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACrP,MAAM,CAACuW,KAAP,CAAalH,GAAb,CAAhC,EAAmD;EACtDA,MAAAA,GAAG,GAAGzQ,OAAO,CAACyQ,GAAD,CAAb;EACH;;EACDxT,IAAAA,MAAM,GAAG,IAAI4S,IAAJ,CAASY,GAAT,EAAcxT,MAAd,CAAT;EACH;;EACD,SAAOA,MAAP;EACH,CA5BD;EA+BA;EACA;EACA;EACA;;;EACA4S,IAAI,CAACxL,SAAL,CAAeyS,SAAf,GAA2B,YAA0B;EAAA,MAAjBzb,OAAiB,uEAAP,KAAO;EACjD,MAAIub,IAAI,GAAG,IAAX;EACA,MAAI3Z,MAAM,GAAG,EAAb;;EACA,SAAO,IAAP,EAAa;EACT,QAAI2Z,IAAI,YAAY/G,IAAhB,IAAwB+G,IAAI,CAACnG,GAAL,YAAoBZ,IAAhD,EAAsD;EAClD,UAAIW,IAAI,GAAGoG,IAAI,CAACnG,GAAhB;EACA,UAAI/J,IAAI,GAAG8J,IAAI,CAACC,GAAhB;;EACA,UAAI/J,IAAI,YAAYlD,OAApB,EAA6B;EACzBkD,QAAAA,IAAI,GAAGA,IAAI,CAACG,QAAZ;EACH;;EACD,UAAIH,IAAI,YAAY1D,OAApB,EAA6B;EACzB0D,QAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,UAAI0P,GAAG,GAAGY,IAAI,CAACZ,GAAf;;EACA,UAAIA,GAAG,YAAYC,IAAnB,EAAyB;EACrBD,QAAAA,GAAG,GAAGA,GAAG,CAACkH,SAAJ,CAAczb,OAAd,CAAN;EACH;;EACD,UAAIuc,SAAS,CAAChI,GAAD,CAAb,EAAoB;EAChB,YAAI,CAACvU,OAAL,EAAc;EACVuU,UAAAA,GAAG,GAAGA,GAAG,CAAC1P,OAAJ,EAAN;EACH;EACJ;;EACDjD,MAAAA,MAAM,CAACyJ,IAAD,CAAN,GAAekJ,GAAf;EACAgH,MAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH,KApBD,MAoBO;EACH;EACH;EACJ;;EACD,SAAO3S,MAAP;EACH,CA7BD;;;EAgCA4S,IAAI,CAACgI,SAAL,GAAiB,UAAStO,KAAT,EAAgB;EAC7B,SAAOA,KAAK,CAACoF,MAAN,CAAa,UAAC/H,IAAD,EAAO4J,IAAP,EAAgB;EAChC,WAAO,IAAIX,IAAJ,CACH,IAAIA,IAAJ,CACI,IAAIrM,OAAJ,CAAYgN,IAAI,CAAC,CAAD,CAAhB,CADJ,EAEIA,IAAI,CAAC,CAAD,CAFR,CADG,EAKH5J,IALG,CAAP;EAOH,GARM,EAQJ6I,IARI,CAAP;EASH,CAVD;;;EAaAI,IAAI,CAACiI,UAAL,GAAkB,UAASvQ,GAAT,EAAc;EAC5B,MAAIgC,KAAK,GAAGzL,MAAM,CAACC,IAAP,CAAYwJ,GAAZ,EAAiBlJ,GAAjB,CAAqB,UAACiS,GAAD;EAAA,WAAS,CAACA,GAAD,EAAM/I,GAAG,CAAC+I,GAAD,CAAT,CAAT;EAAA,GAArB,CAAZ;EACA,SAAOT,IAAI,CAACgI,SAAL,CAAetO,KAAf,CAAP;EACH,CAHD;;;EAMAsG,IAAI,CAACxL,SAAL,CAAesK,MAAf,GAAwB,UAAS5U,EAAT,EAAa;EACjC,MAAI6c,IAAI,GAAG,IAAX;EACA,MAAI3Z,MAAM,GAAGwS,IAAb;;EACA,SAAO,IAAP,EAAa;EACT,QAAImH,IAAI,KAAKnH,IAAb,EAAkB;EACdxS,MAAAA,MAAM,GAAGlD,EAAE,CAACkD,MAAD,EAAS2Z,IAAI,CAACnG,GAAd,CAAX;EACAmG,MAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH,KAHD,MAGO;EACH;EACH;EACJ;;EACD,SAAO3S,MAAP;EACH,CAZD;;;EAeA4S,IAAI,CAACxL,SAAL,CAAegC,OAAf,GAAyB,YAAW;EAChC,MAAI,KAAK6Q,UAAL,EAAJ,EAAuB;EACnB,UAAM,IAAItW,KAAJ,CAAU,yCAAV,CAAN;EACH;;EACD,MAAIgW,IAAI,GAAG,IAAX;EACA,MAAIlH,IAAI,GAAGD,IAAX;;EACA,SAAOmH,IAAI,KAAKnH,IAAhB,EAAqB;EACjB,QAAIyG,IAAI,GAAGU,IAAI,CAAChH,GAAhB;EACAgH,IAAAA,IAAI,CAAChH,GAAL,GAAWF,IAAX;EACAA,IAAAA,IAAI,GAAGkH,IAAP;EACAA,IAAAA,IAAI,GAAGV,IAAP;EACH;;EACD,SAAOxG,IAAP;EACH,CAbD;;;EAgBAG,IAAI,CAACxL,SAAL,CAAe0T,SAAf,GAA2B,UAAShe,EAAT,EAAa;;EAEpC,WAASid,KAAT,CAAexG,IAAf,EAAqB;EACjB,QAAIA,IAAI,YAAYX,IAApB,EAA0B;EACtB,UAAIW,IAAI,CAACnR,OAAT,EAAkB;EACd,eAAOmR,IAAI,CAACnR,OAAZ;EACA,eAAOmR,IAAP;EACH;;EACD,UAAIC,GAAG,GAAG1W,EAAE,CAACyW,IAAI,CAACC,GAAN,CAAZ;;EACA,UAAIA,GAAG,YAAYZ,IAAnB,EAAyB;EACrBY,QAAAA,GAAG,GAAGuG,KAAK,CAACvG,GAAD,CAAX;EAEH;;EACD,UAAIb,GAAG,GAAG7V,EAAE,CAACyW,IAAI,CAACZ,GAAN,CAAZ;;EACA,UAAIA,GAAG,YAAYC,IAAnB,EAAyB;EACrBD,QAAAA,GAAG,GAAGoH,KAAK,CAACpH,GAAD,CAAX;EAEH;;EACD,aAAO,IAAIC,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH;;EACD,WAAOY,IAAP;EACH;;EACD,SAAOwG,KAAK,CAAC,IAAD,CAAZ;EACH,CAvBD;;;EA0BAnH,IAAI,CAACxL,SAAL,CAAehG,GAAf,GAAqB,UAAStE,EAAT,EAAa;EAC9B,MAAI,OAAO,KAAK0W,GAAZ,KAAoB,WAAxB,EAAqC;EACjC,WAAO,IAAIZ,IAAJ,CAAS9V,EAAE,CAAC,KAAK0W,GAAN,CAAX,EAAuB,KAAKb,GAAL,KAAaH,IAAb,GAAmBA,IAAnB,GAAyB,KAAKG,GAAL,CAASvR,GAAT,CAAatE,EAAb,CAAhD,CAAP;EACH,GAFD,MAEO;EACH,WAAO0V,IAAP;EACH;EACJ,CAND;;EAOA,IAAIuI,IAAI,GAAG,IAAIV,GAAJ,EAAX;;EAEA,SAASjH,eAAT,CAAyBtJ,MAAzB,EAAiC;EAC7B,SAAOA,MAAM,IAAI,QAAOA,MAAP,MAAkB,QAA5B,IAAwCA,MAAM,CAACJ,WAAP,KAAuB7I,MAAtE;EACH;;;EAED,IAAIma,KAAK,GAAGna,MAAM,CAACoa,mBAAP,CAA2BjP,KAAK,CAAC5E,SAAjC,CAAZ;EACA,IAAI8T,aAAa,GAAG,EAApB;EACAF,KAAK,CAAC/a,OAAN,CAAc,UAAA/B,CAAC,EAAI;EACfgd,EAAAA,aAAa,CAACva,IAAd,CAAmBqL,KAAK,CAAC9N,CAAD,CAAxB,EAA6B8N,KAAK,CAAC5E,SAAN,CAAgBlJ,CAAhB,CAA7B;EACH,CAFD;;EAIA,SAASid,eAAT,CAAyBjd,CAAzB,EAA4B;EACxBA,EAAAA,CAAC,GAAGkd,MAAM,CAACld,CAAD,CAAV;EACA,SAAOgd,aAAa,CAAC3Y,QAAd,CAAuBrE,CAAvB,CAAP;EACH;;;EAED,SAASmd,gBAAT,CAA0Bnd,CAA1B,EAA6B;EACzB,SAAOoN,WAAW,CAACpN,CAAD,CAAX,KAAmBqX,SAAS,CAACrX,CAAD,CAAT,IAAgBA,CAAC,CAACmX,OAArC,CAAP;EACH;;;EAED,SAASiG,SAAT,CAAmBhR,GAAnB,EAAwB;EACpB,MAAIZ,WAAW,GAAGY,GAAG,CAACZ,WAAJ,IAAmB7I,MAArC;EACA,MAAI0a,YAAY,GAAGnI,eAAe,CAAC9I,GAAD,CAAlC;EACA,MAAIkR,QAAQ,GAAGlQ,WAAW,CAAChB,GAAG,CAACT,MAAM,CAAC4R,aAAR,CAAJ,CAAX,IACXnQ,WAAW,CAAChB,GAAG,CAACT,MAAM,CAAC2R,QAAR,CAAJ,CADf;EAEA,MAAI1e,EAAJ;;EACA,MAAIie,IAAI,CAACT,GAAL,CAAS5Q,WAAT,CAAJ,EAA2B;EACvB5M,IAAAA,EAAE,GAAGie,IAAI,CAACrc,GAAL,CAASgL,WAAT,CAAL;EACH,GAFD,MAEO;EACHqR,IAAAA,IAAI,CAAC9a,OAAL,CAAa,UAASzB,KAAT,EAAgB6U,GAAhB,EAAqB;EAC9BA,MAAAA,GAAG,GAAG+H,MAAM,CAAC/H,GAAD,CAAZ,CAD8B;EAG9B;EACA;;EACA,UAAI/I,GAAG,CAACZ,WAAJ,KAAoB2J,GAApB,KACCA,GAAG,KAAKxS,MAAR,IAAkB0a,YAAlB,IAAkC,CAACC,QAAnC,IAA+CnI,GAAG,KAAKxS,MADxD,CAAJ,EACqE;EACjE/D,QAAAA,EAAE,GAAG0B,KAAL;EACH;EACJ,KATD;EAUH;;EACD,SAAO1B,EAAP;EACH;;;EAED,IAAI4e,WAAW,GAAG,IAAIrB,GAAJ,EAAlB;EACA,CACI,CAAC,IAAD,EAAO,IAAP,CADJ,EAEI,CAAC,KAAD,EAAQ,IAAR,CAFJ,EAGI,CAAC,IAAD,EAAO,MAAP,CAHJ,EAII,CAAC5e,SAAD,EAAY,cAAZ,CAJJ,EAKEwE,OALF,CAKU,kBAAkB;EAAA;EAAA,MAAhBoT,GAAgB;EAAA,MAAX7U,KAAW;;EACxBkd,EAAAA,WAAW,CAAC3N,GAAZ,CAAgBsF,GAAhB,EAAqB7U,KAArB;EACH,CAPD;EASA;EACA;EACA;;EACA;;EACA,SAASmd,SAAT,CAAmBrR,GAAnB,EAAwB;EACpB,MAAIA,GAAG,IAAI,QAAOA,GAAP,MAAe,QAA1B,EAAoC;EAChC,QAAItK,MAAM,GAAG,EAAb;;EACA,QAAMsY,QAAO,GAAGzX,MAAM,CAAC+a,qBAAP,CAA6BtR,GAA7B,CAAhB;;EACAgO,IAAAA,QAAO,CAACrY,OAAR,CAAgB,UAACoT,GAAD,EAAS;EACrB,UAAM5J,IAAI,GAAG4J,GAAG,CAACxX,QAAJ,GACRuG,OADQ,CACA,mBADA,EACqB,IADrB,CAAb;EAEApC,MAAAA,MAAM,CAACyJ,IAAD,CAAN,GAAe5N,QAAQ,CAACyO,GAAG,CAAC+I,GAAD,CAAJ,CAAvB;EACH,KAJD;;EAKA,QAAM2H,MAAK,GAAGna,MAAM,CAACoa,mBAAP,CAA2B3Q,GAA3B,CAAd;;EACA0Q,IAAAA,MAAK,CAAC/a,OAAN,CAAc,UAAAoT,GAAG,EAAI;EACjB,UAAMwI,CAAC,GAAGvR,GAAG,CAAC+I,GAAD,CAAb;;EACA,UAAIwI,CAAC,IAAI,QAAOA,CAAP,MAAa,QAAlB,IAA8BA,CAAC,CAACnS,WAAF,KAAkB7I,MAApD,EAA4D;EACxDb,QAAAA,MAAM,CAACqT,GAAD,CAAN,GAAcsI,SAAS,CAACE,CAAD,CAAvB;EACH,OAFD,MAEO;EACH7b,QAAAA,MAAM,CAACqT,GAAD,CAAN,GAAcxX,QAAQ,CAACggB,CAAD,CAAtB;EACH;EACJ,KAPD;;EAQA,WAAO7b,MAAP;EACH;;EACD,SAAOsK,GAAP;EACH;;;EAED,SAASwR,SAAT,CAAmBxR,GAAnB,EAAwB;EACpB,SAAOzJ,MAAM,CAACC,IAAP,CAAYwJ,GAAZ,EAAiB8F,MAAjB,CAAwBvP,MAAM,CAAC+a,qBAAP,CAA6BtR,GAA7B,CAAxB,CAAP;EACH;;;EAED,SAASyR,gBAAT,CAA0BzR,GAA1B,EAA+Bb,IAA/B,EAAqC;EACjC,SAAOa,GAAG,CAAC5D,cAAJ,CAAmB+C,IAAnB,KAA4B6B,WAAW,CAAChB,GAAG,CAACzO,QAAL,CAA9C;EACH;;;EAED,SAASmgB,kBAAT,CAA4Blf,EAA5B,EAAgC;EAC5B,MAAImf,kBAAkB,CAACnf,EAAD,CAAtB,EAA4B;EACxB,WAAO,sBAAP;EACH;;EACD,MAAM4M,WAAW,GAAG5M,EAAE,CAACsK,SAAH,IAAgBtK,EAAE,CAACsK,SAAH,CAAasC,WAAjD;;EACA,MAAI4B,WAAW,CAAC5B,WAAD,CAAX,IAA4B6L,SAAS,CAAC7L,WAAD,CAAzC,EAAwD;EACpD,QAAI5M,EAAE,CAACof,SAAD,CAAF,IAAiBxS,WAAW,CAAChD,cAAZ,CAA2B,UAA3B,CAArB,EAA6D;EACzD,UAAI+C,IAAI,GAAGC,WAAW,CAACE,QAAvB;;EACA,UAAI7D,OAAO,CAACsE,QAAR,CAAiBZ,IAAjB,CAAJ,EAA4B;EACxBA,QAAAA,IAAI,GAAGA,IAAI,CAAC5N,QAAL,EAAP;EACA,iCAAkB4N,IAAlB;EACH;;EACD,aAAO,UAAP;EACH;EACJ;;EACD,MAAI3M,EAAE,CAAC4J,cAAH,CAAkB,UAAlB,CAAJ,EAAmC;EAC/B,QAAI+C,KAAI,GAAG3M,EAAE,CAAC8M,QAAd;;EACA,QAAI,QAAOH,KAAP,MAAgB,QAApB,EAA8B;EAC1BA,MAAAA,KAAI,GAAGS,gBAAgB,CAACT,KAAD,CAAvB;EACH;;EACD,QAAI,OAAOA,KAAP,KAAgB,QAApB,EAA8B;EAC1B,mCAAsBA,KAAtB;EACH;EACJ;;EACD,MAAIsS,gBAAgB,CAACjf,EAAD,EAAK,UAAL,CAApB,EAAsC;EAClC,WAAOA,EAAE,CAACjB,QAAH,EAAP;EACH,GAFD,MAEO,IAAIiB,EAAE,CAAC2M,IAAH,IAAW,CAAC8L,SAAS,CAACzY,EAAD,CAAzB,EAA+B;EAClC,iCAAsBA,EAAE,CAAC2M,IAAH,CAAQb,IAAR,EAAtB;EACH,GAFM,MAEA;EACH,WAAO,cAAP;EACH;EACJ;EAED;;;EACA,IAAMuT,SAAS,GAAG,IAAI9B,GAAJ,EAAlB;;EAEA,CACI,CAAC1W,KAAD,EAAQ,UAASlG,CAAT,EAAY;EAChB,SAAOA,CAAC,CAAC2e,OAAT;EACH,CAFD,CADJ,EAII,CAACxJ,IAAD,EAAO,UAASW,IAAT,UAAkD;EAAA,MAAjCtJ,KAAiC,UAAjCA,KAAiC;EAAA,MAA1BoS,WAA0B,UAA1BA,WAA0B;EAAA,MAAbC,SAAa,UAAbA,SAAa;;EACrD;EACA,MAAI,CAACD,WAAL,EAAkB;EACd9I,IAAAA,IAAI,CAACgJ,UAAL;EACH;;EACD,SAAOhJ,IAAI,CAAC1X,QAAL,OAAA0X,IAAI,GAAUtJ,KAAV,4BAAoBqS,SAApB,GAAX;EACH,CAND,CAJJ,EAWI,CAAC5Y,UAAD,EAAa,UAAS2C,GAAT,UAAyB;EAAA,MAAT4D,KAAS,UAATA,KAAS;;EAClC,MAAIA,KAAJ,EAAW;EACP,WAAO5D,GAAG,CAACxK,QAAJ,EAAP;EACH;;EACD,SAAOwK,GAAG,CAACpD,OAAJ,EAAP;EACH,CALD,CAXJ,EAiBI,CAAC8C,OAAD,EAAU,UAASjB,GAAT,UAAyB;EAAA,MAATmF,KAAS,UAATA,KAAS;EAC/BnF,EAAAA,GAAG,GAAGA,GAAG,CAACjJ,QAAJ,EAAN;;EACA,MAAIoO,KAAJ,EAAW;EACP,WAAOjE,IAAI,CAACwW,SAAL,CAAe1X,GAAf,EAAoB1C,OAApB,CAA4B,MAA5B,EAAoC,IAApC,CAAP;EACH;;EACD,SAAO0C,GAAP;EACH,CAND,CAjBJ,EAwBI,CAACnG,MAAD,EAAS,UAAS4F,EAAT,EAAa;EAClB,SAAO,MAAMA,EAAE,CAAC1I,QAAH,EAAb;EACH,CAFD,CAxBJ,EA2BEoE,OA3BF,CA2BU,kBAAe;EAAA;EAAA,MAAbwc,GAAa;EAAA,MAAR3f,EAAQ;;EACrBqf,EAAAA,SAAS,CAACpO,GAAV,CAAc0O,GAAd,EAAmB3f,EAAnB;EACH,CA7BD;;EA+BA,IAAM4f,YAAY,GAAG,CACjBnW,OADiB,EAEjBxD,OAFiB,EAGjB8Q,KAHiB,EAIjB8I,MAJiB,EAKjBC,SALiB,EAMjBC,UANiB,EAOjBC,WAPiB,EAQjBlS,aARiB,CAArB;;EAWA,SAAS/O,QAAT,CAAkByO,GAAlB,EAAuBL,KAAvB,EAA8BoS,WAA9B,EAAyD;EACrD,MAAI,OAAOU,MAAP,KAAkB,WAAlB,IACAzS,GAAG,YAAYyS,MAAM,CAACjgB,EAAP,CAAUnB,IAD7B,EACmC;EAC/B,WAAO,cAAc2O,GAAG,CAAC9J,MAAlB,GAA2B,IAAlC;EACH;;EACD,MAAIkb,WAAW,CAACpB,GAAZ,CAAgBhQ,GAAhB,CAAJ,EAA0B;EACtB,WAAOoR,WAAW,CAAChd,GAAZ,CAAgB4L,GAAhB,CAAP;EACH;;EACD,MAAI0S,YAAY,CAAC1S,GAAD,CAAhB,EAAuB;EACnB,WAAO,cAAP;EACH;;EACD,MAAIA,GAAJ,EAAS;EACL,QAAImS,GAAG,GAAGnS,GAAG,CAACZ,WAAd;;EACA,QAAIyS,SAAS,CAAC7B,GAAV,CAAcmC,GAAd,CAAJ,EAAwB;EAAA,yCAbcH,SAad;EAbcA,QAAAA,SAad;EAAA;;EACpB,aAAOH,SAAS,CAACzd,GAAV,CAAc+d,GAAd,EAAmBnS,GAAnB,EAAwB;EAAEL,QAAAA,KAAK,EAALA,KAAF;EAASoS,QAAAA,WAAW,EAAXA,WAAT;EAAsBC,QAAAA,SAAS,EAATA;EAAtB,OAAxB,CAAP;EACH;EACJ,GAhBoD;;;EAAA,8CAkBpCI,YAlBoC;EAAA;;EAAA;EAkBrD,2DAA+B;EAAA,UAAtBhf,MAAsB;;EAC3B,UAAI4M,GAAG,YAAY5M,MAAnB,EAAyB;EACrB,eAAO4M,GAAG,CAACzO,QAAJ,CAAaoO,KAAb,CAAP;EACH;EACJ,KAtBoD;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAwBrD,MAAI,CAACuI,IAAD,EAAM1K,GAAN,EAAWvF,QAAX,CAAoB+H,GAApB,CAAJ,EAA8B;EAC1B,WAAOA,GAAG,CAACzO,QAAJ,EAAP;EACH;;EACD,MAAIyP,WAAW,CAAChB,GAAD,CAAf,EAAsB;EAClB,WAAO0R,kBAAkB,CAAC1R,GAAD,CAAzB;EACH;;EACD,MAAIA,GAAG,KAAKlO,IAAZ,EAAkB;EACd,WAAO,cAAP;EACH;;EACD,MAAIkO,GAAG,KAAK,IAAZ,EAAkB;EACd,WAAO,MAAP;EACH;;EACD,MAAI,QAAOA,GAAP,MAAe,QAAnB,EAA6B;EACzB,QAAIZ,WAAW,GAAGY,GAAG,CAACZ,WAAtB;;EACA,QAAI,CAACA,WAAL,EAAkB;EACd;EACA;EACAA,MAAAA,WAAW,GAAG7I,MAAd;EACH;;EACD,QAAI4I,IAAJ;;EACA,QAAI,OAAOC,WAAW,CAACwS,SAAnB,KAAiC,QAArC,EAA+C;EAC3CzS,MAAAA,IAAI,GAAGC,WAAW,CAACwS,SAAnB;EACH,KAFD,MAEO;EACH,UAAIpf,EAAE,GAAGwe,SAAS,CAAChR,GAAD,CAAlB;;EACA,UAAIxN,EAAJ,EAAQ;EACJ,YAAIwO,WAAW,CAACxO,EAAD,CAAf,EAAqB;EACjB,iBAAOA,EAAE,CAACwN,GAAD,EAAML,KAAN,CAAT;EACH,SAFD,MAEO;EACH,gBAAM,IAAItG,KAAJ,CAAU,8BAAV,CAAN;EACH;EACJ;;EACD8F,MAAAA,IAAI,GAAGC,WAAW,CAACD,IAAnB;EACH,KApBwB;;;EAsBzB,QAAI6B,WAAW,CAAChB,GAAG,CAACzO,QAAL,CAAX,IAA6B0Z,SAAS,CAACjL,GAAG,CAACzO,QAAL,CAA1C,EAA0D;EACtD,aAAOyO,GAAG,CAACzO,QAAJ,GAAeoH,OAAf,EAAP;EACH;;EACD,QAAIvF,IAAI,CAAC4M,GAAD,CAAJ,KAAc,UAAlB,EAA8B;EAC1B,UAAIiL,SAAS,CAAC7L,WAAD,CAAT,IAA0BA,WAAW,CAACE,QAA1C,EAAoD;EAChDH,QAAAA,IAAI,GAAGC,WAAW,CAACE,QAAZ,CAAqB3G,OAArB,EAAP;EACH,OAFD,MAEO,IAAI,CAACgZ,kBAAkB,CAACvS,WAAD,CAAvB,EAAsC;EACzCD,QAAAA,IAAI,GAAG,UAAP;EACH;EACJ;;EACD,QAAIwT,WAAW,CAAC3S,GAAD,EAAMT,MAAM,CAAC2R,QAAb,CAAf,EAAuC;EACnC,UAAI/R,IAAJ,EAAU;EACN,oCAAqBA,IAArB;EACH;;EACD,aAAO,aAAP;EACH;;EACD,QAAIwT,WAAW,CAAC3S,GAAD,EAAMT,MAAM,CAAC4R,aAAb,CAAf,EAA4C;EACxC,UAAIhS,IAAJ,EAAU;EACN,yCAA0BA,IAA1B;EACH;;EACD,aAAO,kBAAP;EACH;;EACD,QAAIA,IAAI,KAAK,EAAb,EAAiB;EACb,aAAO,OAAOA,IAAP,GAAc,GAArB;EACH;;EACD,WAAO,WAAP;EACH;;EACD,MAAI,OAAOa,GAAP,KAAe,QAAnB,EAA6B;EACzB,WAAOA,GAAG,CAACzO,QAAJ,EAAP;EACH;;EACD,SAAOyO,GAAP;EACH;;;EAED,SAAS0S,YAAT,CAAsB1S,GAAtB,EAA2B;EACvB,SAAOA,GAAG,IACN,QAAOA,GAAP,MAAe,QADZ,IAEHA,GAAG,CAAC5D,cAFD,IAGH4D,GAAG,CAAC5D,cAAJ,CAAmB,aAAnB,CAHG,IAIH,OAAO4D,GAAG,CAACZ,WAAX,KAA2B,UAJxB,IAKHY,GAAG,CAACZ,WAAJ,CAAgBtC,SAAhB,KAA8BkD,GALlC;EAMH;;;EAEDsI,IAAI,CAACxL,SAAL,CAAemV,UAAf,GAA4B,YAAW;EACnCA,EAAAA,UAAU,CAAC,IAAD,CAAV;EACA,SAAO,IAAP;EACH,CAHD;;;EAMA3J,IAAI,CAACxL,SAAL,CAAe6S,UAAf,GAA4B,YAAsB;EAAA,MAAbxQ,IAAa,uEAAN,IAAM;;EAC9C,MAAI,CAACA,IAAL,EAAW;EACP,WAAO,KAAKwQ,UAAL,CAAgB,KAAhB,KAA0B,KAAKA,UAAL,CAAgB,KAAhB,CAAjC;EACH;;EACD,SAAO,CAAC,EAAE,KAAKM,UAAL,KAAoB,KAAKA,UAAL,EAAiB9Q,IAAjB,CAAtB,CAAR;EACH,CALD;;;EAQA,SAAS8S,UAAT,CAAoBhJ,IAApB,EAA0B;EACtB,MAAI2J,UAAU,GAAG,EAAjB;EACA,MAAIC,MAAM,GAAG,EAAb;EACA,MAAIC,IAAI,GAAG,EAAX;;EACA,WAASC,KAAT,CAAe9J,IAAf,EAAqB;EACjB,QAAI,CAAC2J,UAAU,CAAC3a,QAAX,CAAoBgR,IAApB,CAAL,EAAgC;EAC5B2J,MAAAA,UAAU,CAACvc,IAAX,CAAgB4S,IAAhB;EACH;EACJ;;EACD,WAASxF,GAAT,CAAa4L,IAAb,EAAmBjc,IAAnB,EAAyB4f,KAAzB,EAAgCC,OAAhC,EAAyC;EACrC,QAAID,KAAK,YAAY1K,IAArB,EAA2B;EACvB,UAAI2K,OAAO,CAAChb,QAAR,CAAiB+a,KAAjB,CAAJ,EAA6B;EACzB,YAAI,CAACF,IAAI,CAAC7a,QAAL,CAAc+a,KAAd,CAAL,EAA2B;EACvBF,UAAAA,IAAI,CAACzc,IAAL,CAAU2c,KAAV;EACH;;EACD,YAAI,CAAC3D,IAAI,CAACY,UAAD,CAAT,EAAuB;EACnBZ,UAAAA,IAAI,CAACY,UAAD,CAAJ,GAAmB,EAAnB;EACH;;EACDZ,QAAAA,IAAI,CAACY,UAAD,CAAJ,CAAiB7c,IAAjB,IAAyB4f,KAAzB;;EACA,YAAI,CAACH,MAAM,CAAC5a,QAAP,CAAgBoX,IAAhB,CAAL,EAA4B;EACxBwD,UAAAA,MAAM,CAACxc,IAAP,CAAYgZ,IAAZ;EACH;;EACD,eAAO,IAAP;EACH;EACJ;EACJ;;EACD,MAAM6D,MAAM,GAAGlV,UAAU,CAAC,SAASmV,YAAT,CAAsBlK,IAAtB,EAA4BgK,OAA5B,EAAqC;EAC3D,QAAIhK,IAAI,YAAYX,IAApB,EAA0B;EACtB,aAAOW,IAAI,CAACQ,GAAZ;EACA,aAAOR,IAAI,CAACgH,UAAD,CAAX;EACA8C,MAAAA,KAAK,CAAC9J,IAAD,CAAL;EACAgK,MAAAA,OAAO,CAAC5c,IAAR,CAAa4S,IAAb;EACA,UAAIC,GAAG,GAAGzF,GAAG,CAACwF,IAAD,EAAO,KAAP,EAAcA,IAAI,CAACC,GAAnB,EAAwB+J,OAAxB,CAAb;EACA,UAAI5K,GAAG,GAAG5E,GAAG,CAACwF,IAAD,EAAO,KAAP,EAAcA,IAAI,CAACZ,GAAnB,EAAwB4K,OAAxB,CAAb;;EACA,UAAI,CAAC/J,GAAL,EAAU;EACNgK,QAAAA,MAAM,CAACjK,IAAI,CAACC,GAAN,EAAW+J,OAAO,CAACpU,KAAR,EAAX,CAAN;EACH;;EACD,UAAI,CAACwJ,GAAL,EAAU;EACN,eAAO,IAAIvK,KAAJ,CAAU,YAAM;EACnB,iBAAOqV,YAAY,CAAClK,IAAI,CAACZ,GAAN,EAAW4K,OAAO,CAACpU,KAAR,EAAX,CAAnB;EACH,SAFM,CAAP;EAGH;EACJ;EACJ,GAjBwB,CAAzB;;EAkBA,WAASuU,SAAT,CAAmB/D,IAAnB,EAAyBjc,IAAzB,EAA+B;EAC3B,QAAIic,IAAI,CAACY,UAAD,CAAJ,CAAiB7c,IAAjB,aAAkCkV,IAAtC,EAA4C;EACxC,UAAMpI,KAAK,GAAGmT,SAAS,CAACrG,OAAV,CAAkBqC,IAAI,CAACY,UAAD,CAAJ,CAAiB7c,IAAjB,CAAlB,CAAd;EACAic,MAAAA,IAAI,CAACY,UAAD,CAAJ,CAAiB7c,IAAjB,eAA6B8M,KAA7B;EACH;EACJ;;EACDgT,EAAAA,MAAM,CAACjK,IAAD,EAAO,EAAP,CAAN;EACA,MAAIoK,SAAS,GAAGT,UAAU,CAACrU,MAAX,CAAkB,UAAA8Q,IAAI;EAAA,WAAIyD,IAAI,CAAC7a,QAAL,CAAcoX,IAAd,CAAJ;EAAA,GAAtB,CAAhB;EACAgE,EAAAA,SAAS,CAAC1d,OAAV,CAAkB,UAAC0Z,IAAD,EAAOzQ,CAAP,EAAa;EAC3ByQ,IAAAA,IAAI,CAACiE,OAAD,CAAJ,cAAoB1U,CAApB;EACH,GAFD;EAGAiU,EAAAA,MAAM,CAACld,OAAP,CAAe,UAAA0Z,IAAI,EAAI;EACnB+D,IAAAA,SAAS,CAAC/D,IAAD,EAAO,KAAP,CAAT;EACA+D,IAAAA,SAAS,CAAC/D,IAAD,EAAO,KAAP,CAAT;EACH,GAHD;EAIH;;;EAmED/G,IAAI,CAACxL,SAAL,CAAevL,QAAf,GAA0B,UAASoO,KAAT,EAAyC;EAAA,mFAAJ,EAAI;EAAA,6BAAvB4T,MAAuB;EAAA,MAAvBA,MAAuB,8BAAd,KAAc;;EAC/D,MAAIlQ,GAAG,GAAG,EAAV;;EACA,MAAI,KAAKiQ,OAAL,CAAJ,EAAmB;EACfjQ,IAAAA,GAAG,CAAChN,IAAJ,CAAS,KAAKid,OAAL,IAAgB,GAAzB;EACH,GAFD,MAEO,IAAI,CAACC,MAAL,EAAa;EAChBlQ,IAAAA,GAAG,CAAChN,IAAJ,CAAS,GAAT;EACH;;EACD,MAAInC,KAAJ;;EACA,MAAI,KAAK+b,UAAL,KAAoB,KAAKA,UAAL,EAAiB/G,GAAzC,EAA8C;EAC1ChV,IAAAA,KAAK,GAAG,KAAK+b,UAAL,EAAiB/G,GAAzB;EACH,GAFD,MAEO;EACHhV,IAAAA,KAAK,GAAG3C,QAAQ,CAAC,KAAK2X,GAAN,EAAWvJ,KAAX,EAAkB,IAAlB,CAAhB;EACH;;EACD,MAAIzL,KAAK,KAAK/C,SAAd,EAAyB;EACrBkS,IAAAA,GAAG,CAAChN,IAAJ,CAASnC,KAAT;EACH;;EACD,MAAI,KAAKmU,GAAL,YAAoBC,IAAxB,EAA8B;EAC1B,QAAI,KAAK2H,UAAL,KAAoB,KAAKA,UAAL,EAAiB5H,GAAzC,EAA8C;EAC1ChF,MAAAA,GAAG,CAAChN,IAAJ,CAAS,KAAT;EACAgN,MAAAA,GAAG,CAAChN,IAAJ,CAAS,KAAK4Z,UAAL,EAAiB5H,GAA1B;EACH,KAHD,MAGO;EACH,UAAI,KAAKA,GAAL,CAASiL,OAAT,CAAJ,EAAuB;EACnBjQ,QAAAA,GAAG,CAAChN,IAAJ,CAAS,KAAT;EACH,OAFD,MAEO;EACHgN,QAAAA,GAAG,CAAChN,IAAJ,CAAS,GAAT;EACH;;EACD,UAAMgS,GAAG,GAAG,KAAKA,GAAL,CAAS9W,QAAT,CAAkBoO,KAAlB,EAAyB;EAAE4T,QAAAA,MAAM,EAAE;EAAV,OAAzB,CAAZ;EACAlQ,MAAAA,GAAG,CAAChN,IAAJ,CAASgS,GAAT;EACH;EACJ,GAbD,MAaO,IAAI,KAAKA,GAAL,KAAaH,IAAjB,EAAsB;EACzB7E,IAAAA,GAAG,GAAGA,GAAG,CAACyC,MAAJ,CAAW,CAAC,KAAD,EAAQvU,QAAQ,CAAC,KAAK8W,GAAN,EAAW1I,KAAX,EAAkB,IAAlB,CAAhB,CAAX,CAAN;EACH;;EACD,MAAI,CAAC4T,MAAD,IAAW,KAAKD,OAAL,CAAf,EAA8B;EAC1BjQ,IAAAA,GAAG,CAAChN,IAAJ,CAAS,GAAT;EACH;;EACD,SAAOgN,GAAG,CAAC5M,IAAJ,CAAS,EAAT,CAAP;EACH,CApCD;;;EAuCA6R,IAAI,CAACxL,SAAL,CAAe2G,GAAf,GAAqB,UAAS+P,IAAT,EAAetf,KAAf,EAAsB;EACvC,OAAKsf,IAAL,IAAatf,KAAb;;EACA,MAAIA,KAAK,YAAYoU,IAArB,EAA2B;EACvB,SAAK2J,UAAL;EACH;EACJ,CALD;;;EAQA3J,IAAI,CAACxL,SAAL,CAAe+F,MAAf,GAAwB,UAASnL,GAAT,EAAc;EAClC,MAAIA,GAAG,YAAYgK,KAAnB,EAA0B;EACtB,WAAO,KAAKmB,MAAL,CAAYyF,IAAI,CAACkB,SAAL,CAAe9R,GAAf,CAAZ,CAAP;EACH;;EACD,MAAIgU,CAAC,GAAG,IAAR;;EACA,MAAIA,CAAC,CAACxC,GAAF,KAAU/X,SAAd,EAAyB;EACrB,QAAIuG,GAAG,YAAY4Q,IAAnB,EAAyB;EACrB,WAAKY,GAAL,GAAWxR,GAAG,CAACwR,GAAf;EACA,WAAKb,GAAL,GAAW3Q,GAAG,CAAC2Q,GAAf;EACH,KAHD,MAGO;EACH,WAAKa,GAAL,GAAWxR,GAAX;EACH;EACJ,GAPD,MAOO,IAAIA,GAAG,KAAKwQ,IAAZ,EAAiB;EACpB,WAAO,IAAP,EAAa;EACT,UAAIwD,CAAC,YAAYpD,IAAb,IAAqBoD,CAAC,CAACrD,GAAF,KAAUH,IAAnC,EAAwC;EACpCwD,QAAAA,CAAC,GAAGA,CAAC,CAACrD,GAAN;EACH,OAFD,MAEO;EACH;EACH;EACJ;;EACDqD,IAAAA,CAAC,CAACrD,GAAF,GAAQ3Q,GAAR;EACH;;EACD,SAAO,IAAP;EACH,CAvBD;;;EAyBA4Q,IAAI,CAACxL,SAAL,CAAegD,SAAf,GAA2B,YAAW;EAClC,SAAO,CACH,KAAKoJ,GADF,EAEH,KAAKb,GAFF,CAAP;EAIH,CALD;EAOA;EACA;;;EACAC,IAAI,CAACxL,SAAL,CAAeyC,MAAM,CAAC2R,QAAtB,IAAkC,YAAW;EACzC,MAAI7B,IAAI,GAAG,IAAX;EACA,SAAO;EACHV,IAAAA,IAAI,EAAE,gBAAW;EACb,UAAIpG,GAAG,GAAG8G,IAAV;EACAA,MAAAA,IAAI,GAAG9G,GAAG,CAACF,GAAX;;EACA,UAAIE,GAAG,KAAKL,IAAZ,EAAiB;EACb,eAAO;EAAEhU,UAAAA,KAAK,EAAE/C,SAAT;EAAoBsB,UAAAA,IAAI,EAAE;EAA1B,SAAP;EACH,OAFD,MAEO;EACH,eAAO;EAAEyB,UAAAA,KAAK,EAAEqU,GAAG,CAACW,GAAb;EAAkBzW,UAAAA,IAAI,EAAE;EAAxB,SAAP;EACH;EACJ;EATE,GAAP;EAWH,CAbD;EAeA;EACA;;;EACA,SAASsI,GAAT,CAAanH,CAAb,EAAgB;EACZ,SAAOA,CAAC,GAAG,CAAJ,GAAQ,CAACA,CAAT,GAAaA,CAApB;EACH;;;EAED,SAAS6f,WAAT,CAAqBjhB,EAArB,EAAyByL,IAAzB,EAA+B;EAC3B,yBAAmBA,IAAnB;EAAA,MAAK+I,CAAL;EAAA,MAAWpJ,IAAX;;EACA,SAAOA,IAAI,CAAC1H,MAAL,GAAc,CAArB,EAAwB;EACpB,gBAAU0H,IAAV;EAAA;EAAA,QAAKqJ,CAAL;;EACA,QAAI,CAACzU,EAAE,CAACwU,CAAD,EAAIC,CAAJ,CAAP,EAAe;EACX,aAAO,KAAP;EACH;;EAJmB,iBAKLrJ,IALK;;EAAA;;EAKnBoJ,IAAAA,CALmB;EAKbpJ,IAAAA,IALa;EAMvB;;EACD,SAAO,IAAP;EACH;;;EAGD,SAAS8V,KAAT,CAAe9f,CAAf,EAAkB+f,CAAlB,EAAqB;EACjB,MAAI3S,WAAW,CAACpN,CAAD,CAAf,EAAoB;EAChB,WAAOoN,WAAW,CAAC2S,CAAD,CAAX,IAAkB7C,MAAM,CAACld,CAAD,CAAN,KAAckd,MAAM,CAAC6C,CAAD,CAA7C;EACH,GAFD,MAEO,IAAI/f,CAAC,YAAY6E,OAAjB,EAA0B;EAC7B,QAAI,EAAEkb,CAAC,YAAYlb,OAAf,CAAJ,EAA6B;EACzB,aAAO,KAAP;EACH;;EACD,QAAIrF,MAAJ;;EACA,QAAIQ,CAAC,CAACwG,QAAF,KAAeuZ,CAAC,CAACvZ,QAArB,EAA+B;EAC3B,UAAIxG,CAAC,CAACwG,QAAF,KAAe,SAAnB,EAA8B;EAC1BhH,QAAAA,MAAI,GAAGQ,CAAC,CAACggB,MAAF,CAASxZ,QAAT,KAAsBuZ,CAAC,CAACC,MAAF,CAASxZ,QAA/B,IACHxG,CAAC,CAACigB,MAAF,CAASzZ,QAAT,KAAsBuZ,CAAC,CAACE,MAAF,CAASzZ,QADnC;EAEH,OAHD,MAGO;EACHhH,QAAAA,MAAI,GAAG,IAAP;EACH;;EACD,UAAIA,MAAI,IAAIQ,CAAC,CAACuG,GAAF,CAAMwZ,CAAN,MAAa,CAAzB,EAA4B;EACxB,YAAI/f,CAAC,CAAC+E,OAAF,OAAgB,CAApB,EAAuB;EACnB,iBAAOpC,MAAM,CAACkJ,EAAP,CAAU7L,CAAC,CAAC+E,OAAF,EAAV,EAAuBgb,CAAC,CAAChb,OAAF,EAAvB,CAAP;EACH;;EACD,eAAO,IAAP;EACH;EACJ;;EACD,WAAO,KAAP;EACH,GApBM,MAoBA,IAAI,OAAO/E,CAAP,KAAa,QAAjB,EAA2B;EAC9B,QAAI,OAAO+f,CAAP,KAAa,QAAjB,EAA2B;EACvB,aAAO,KAAP;EACH;;EACD,QAAI9Z,MAAM,CAACuW,KAAP,CAAaxc,CAAb,CAAJ,EAAqB;EACjB,aAAOiG,MAAM,CAACuW,KAAP,CAAauD,CAAb,CAAP;EACH;;EACD,QAAI/f,CAAC,KAAKiG,MAAM,CAACC,iBAAjB,EAAoC;EAChC,aAAO6Z,CAAC,KAAK9Z,MAAM,CAACC,iBAApB;EACH;;EACD,QAAIlG,CAAC,KAAKiG,MAAM,CAACE,iBAAjB,EAAoC;EAChC,aAAO4Z,CAAC,KAAK9Z,MAAM,CAACE,iBAApB;EACH;;EACD,WAAO2Z,KAAK,CAACjb,OAAO,CAAC7E,CAAD,CAAR,EAAa6E,OAAO,CAACkb,CAAD,CAApB,CAAZ;EACH,GAdM,MAcA,IAAI/f,CAAC,YAAYwF,UAAjB,EAA6B;EAChC,QAAI,EAAEua,CAAC,YAAYva,UAAf,CAAJ,EAAgC;EAC5B,aAAO,KAAP;EACH;;EACD,WAAOxF,CAAC,CAACkgB,QAAF,KAAeH,CAAC,CAACG,QAAxB;EACH,GALM,MAKA;EACH,WAAOlgB,CAAC,KAAK+f,CAAb;EACH;EACJ;;;EAED,SAASI,SAAT,CAAmB/M,CAAnB,EAAsBC,CAAtB,EAAyB;EACrB,MAAI7T,IAAI,CAAC4T,CAAD,CAAJ,KAAY5T,IAAI,CAAC6T,CAAD,CAApB,EAAyB;EACrB,WAAO,KAAP;EACH;;EACD,MAAI,CAAC+M,OAAO,CAAChN,CAAD,CAAZ,EAAiB;EACb,WAAO,KAAP;EACH;;EACD,MAAIA,CAAC,YAAY3S,MAAjB,EAAyB;EACrB,WAAO2S,CAAC,CAACiN,MAAF,KAAahN,CAAC,CAACgN,MAAtB;EACH;;EACD,MAAIjN,CAAC,YAAYvL,OAAjB,EAA0B;EACtB,WAAOuL,CAAC,CAACrO,OAAF,OAAgBsO,CAAC,CAACtO,OAAF,EAAvB;EACH;;EACD,SAAO+a,KAAK,CAAC1M,CAAD,EAAIC,CAAJ,CAAZ;EACH;;;EAED,SAAS+M,OAAT,CAAiBhU,GAAjB,EAAsB;EAClB,SAAOA,GAAG,YAAY/D,OAAf,IACHR,OAAO,CAACsE,QAAR,CAAiBC,GAAjB,CADG,IAEHA,GAAG,KAAKkI,IAFL,IAGHlI,GAAG,KAAK,IAHL,IAIHA,GAAG,YAAY5G,UAJZ,IAKH4G,GAAG,YAAYvH,OALZ,IAMHuH,GAAG,KAAK,IANL,IAOHA,GAAG,KAAK,KAPZ;EAQH;;;EAED,IAAIkU,QAAQ,GAAI,YAAW;EACvB,MAAIpZ,IAAI,CAACqZ,KAAT,EAAgB;EACZ,WAAOrZ,IAAI,CAACqZ,KAAZ;EACH,GAFD,MAEO;EACH,WAAO,UAASvgB,CAAT,EAAY;EACf,UAAIA,CAAC,KAAK,CAAV,EAAa;EACT,eAAO,CAAP;EACH,OAFD,MAEO,IAAIA,CAAC,GAAG,CAAR,EAAW;EACd,eAAOkH,IAAI,CAACsZ,IAAL,CAAUxgB,CAAV,CAAP;EACH,OAFM,MAEA;EACH,eAAOkH,IAAI,CAACuZ,KAAL,CAAWzgB,CAAX,CAAP;EACH;EACJ,KARD;EASH;EACJ,CAdc,EAAf;EAgBA;EACA;;;EACA,SAAS2V,KAAT,CAAepK,IAAf,EAAqB3M,EAArB,EAAyBG,GAAzB,EAA8BmY,IAA9B,EAAoC;EAChC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,KAAK1L,WAAL,KAAqBmK,KAApD,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,KAAJ,CAAUpK,IAAV,EAAgB3M,EAAhB,CAAP;EACH;;EACDkd,EAAAA,SAAS,CAAC,OAAD,EAAUvQ,IAAV,EAAgB,QAAhB,EAA0B,CAA1B,CAAT;EACAuQ,EAAAA,SAAS,CAAC,OAAD,EAAUld,EAAV,EAAc,UAAd,EAA0B,CAA1B,CAAT;;EACA,MAAIG,GAAJ,EAAS;EACL,QAAImY,IAAJ,EAAU;EACN,WAAKC,OAAL,GAAepY,GAAf;EACH,KAFD,MAEO;EACH,WAAKoY,OAAL,GAAeC,UAAU,CAACrY,GAAD,CAAzB;EACH;EACJ;;EACD,OAAK2M,QAAL,GAAgBH,IAAhB;EACA,OAAKmV,MAAL,GAAc9hB,EAAd;EACH;;;EAED+W,KAAK,CAACgL,QAAN,GAAiB,UAASpV,IAAT,EAAe3M,EAAf,EAAmBG,GAAnB,EAAwBmY,IAAxB,EAA8B;EAC3C,MAAI0J,KAAK,GAAG,IAAIjL,KAAJ,CAAUpK,IAAV,EAAgB3M,EAAhB,EAAoBG,GAApB,EAAyBmY,IAAzB,CAAZ;EACA0J,EAAAA,KAAK,CAACC,YAAN,GAAqB,IAArB;EACA,SAAOD,KAAP;EACH,CAJD;;;EAMAjL,KAAK,CAACzM,SAAN,CAAgB4X,MAAhB,GAAyB,UAASlM,IAAT,UAA8CmM,YAA9C,EAA4D;EAAA,MAA3CnN,GAA2C,UAA3CA,GAA2C;EAAA,MAAtCoN,aAAsC,UAAtCA,aAAsC;EAAA,MAAvBlM,KAAuB,UAAvBA,KAAuB;EACjF,MAAIzK,IAAI,GAAG;EACP2W,IAAAA,aAAa,EAAbA,aADO;EAEPlM,IAAAA,KAAK,EAALA,KAFO;EAGPiM,IAAAA,YAAY,EAAZA;EAHO,GAAX;;EAKA,MAAIjf,MAAM,GAAG,KAAK4e,MAAL,CAAYhhB,IAAZ,CAAiBkU,GAAjB,EAAsBgB,IAAtB,EAA4BvK,IAA5B,EAAkC,KAAKqB,QAAvC,CAAb;;EACA,SAAO5J,MAAP,CAPiF;EASpF,CATD;;;EAWA6T,KAAK,CAACzM,SAAN,CAAgBvL,QAAhB,GAA2B,YAAW;EAClC,2BAAkB,KAAK+N,QAAvB;EACH,CAFD;;;EAIA,IAAMkV,KAAK,GAAG,cAAd;;EAEA,IAAMK,WAAW,GAAG,CAAC,KAArB;;EACA,SAASF,YAAT,CAAsBG,MAAtB,EAA8B;EAC1B;EAAA,kEAAO,mBAAetM,IAAf,EAAqBvK,IAArB;EAAA,qDAMM8W,YANN,EAUMC,YAVN,EAaM/J,SAbN,EAgBMgK,aAhBN,EAgCMC,WAhCN,EAwCMC,QAxCN,EA6CYC,kBA7CZ,uBA0DYC,QA1DZ;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,6EA0DH,mBAAwBhG,IAAxB,EAA8B7V,CAA9B,EAAiCgO,GAAjC;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA,gCACQ6H,IAAI,YAAY/G,IAAhB,IAAwB+G,IAAI,CAACnG,GAAL,YAAoBjN,OADpD;EAAA;EAAA;EAAA;;EAAA,+BAEYoT,IAAI,CAACc,QAAD,CAFhB;EAAA;EAAA;EAAA;;EAAA,6DAGmBd,IAHnB;;EAAA;EAKYlQ,0BAAAA,IALZ,GAKmBkQ,IAAI,CAACnG,GAAL,CAASvQ,OAAT,EALnB;EAMYzE,0BAAAA,KANZ,GAMoBsT,GAAG,CAACpT,GAAJ,CAAQib,IAAI,CAACnG,GAAb,EAAkB;EAAEvU,4BAAAA,UAAU,EAAE;EAAd,2BAAlB,CANpB;EAOY2gB,0BAAAA,MAPZ,GAOqBP,YAAY,CAAC1F,IAAI,CAACnG,GAAN,CAPjC;EASYqM,0BAAAA,UATZ,GASyBD,MAAM,IACnBN,YAAY,CAAC9gB,KAAD,EAAQmb,IAAR,CADC,IAEbpE,SAAS,CAAC/W,KAAD,CAXrB;;EAAA,gCAaYqhB,UAAU,IAAIlG,IAAI,CAAChH,GAAL,CAASa,GAAT,YAAwBZ,IAblD;EAAA;EAAA;EAAA;;EAAA,+BAegBgN,MAfhB;EAAA;EAAA;EAAA;;EAgBgBE,0BAAAA,QAAQ,GAAGN,WAAW,CAAC7F,IAAI,CAAChH,GAAL,CAASa,GAAV,CAAtB;EAhBhB;EAAA,iCAiB+BkM,kBAAkB,CAAC/F,IAAI,CAAChH,GAAL,CAASa,GAAV,EAAe1P,CAAf,CAjBjD;;EAAA;EAiBgBic,0BAAAA,MAjBhB;EAAA;EAAA;;EAAA;EAmBgBD,0BAAAA,QAAQ,GAAGP,aAAa,CAAC5F,IAAI,CAAChH,GAAL,CAASa,GAAV,CAAxB;EACAuM,0BAAAA,MAAM,GAAGpG,IAAI,CAAChH,GAAL,CAASa,GAAlB;;EApBhB;EAAA,0CAsBuBZ,IAtBvB;EAAA,0CAuBgB+G,IAAI,CAACnG,GAvBrB;EAAA,0CAwBoBZ,IAxBpB;EAAA,0CAyBoBmN,MAzBpB;EAAA;EAAA,iCA0B0BJ,QAAQ,CAAChG,IAAI,CAAChH,GAAL,CAASA,GAAV,EAAe7O,CAAf,EAAkBgO,GAAlB,CA1BlC;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA,+BA6BmB2N,QAAQ,CAAChW,IAAD,EAAOjL,KAAP,CA7B3B;EAAA;EAAA;EAAA;;EA8BgBsU,0BAAAA,IA9BhB,GA8BuBtU,KAAK,YAAYwhB,MAAjB,GAA0BrG,IAA1B,GAAiCA,IAAI,CAAChH,GA9B7D;EAAA;EAAA,iCA+B+BnU,KAAK,CAACwgB,MAAN,CAAalM,IAAb,kCAAwBvK,IAAxB;EAA8BuJ,4BAAAA,GAAG,EAAHA;EAA9B,8BAAqC,IAArC,CA/B/B;;EAAA;EA+BgB9R,0BAAAA,MA/BhB;;EAAA,gCAgCgBxB,KAAK,YAAYwhB,MAhCjC;EAAA;EAAA;EAAA;;EAAA,oCAiCwChgB,MAjCxC,EAiCwB4T,IAjCxB,WAiCwBA,IAjCxB,EAiC8BqM,KAjC9B,WAiC8BA,KAjC9B;;EAAA,gCAkCoBrM,IAAI,YAAYhB,IAlCpC;EAAA;EAAA;EAAA;;EAAA,gCAmCwB9O,CAAC,KAAK,CAAC,CAAP,IAAYA,CAAC,IAAI,CAAjB,IAAsBA,CAAC,GAAGqb,WAnClD;EAAA;EAAA;EAAA;;EAAA,6DAoC+BvL,IApC/B;;EAAA;EAsCoB,8BAAI9P,CAAC,KAAK,CAAC,CAAX,EAAc;EACVA,4BAAAA,CAAC,GAAGA,CAAC,GAAG,CAAR;EACH;;EAxCrB,6DAyC2B6b,QAAQ,CAAC/L,IAAD,EAAO9P,CAAP,EAAUmc,KAAV,CAzCnC;;EAAA;EA2CgBjgB,0BAAAA,MAAM,GAAG4T,IAAT;;EA3ChB;EAAA,gCA6CgB5T,MAAM,YAAYuG,OA7ClC;EAAA;EAAA;EAAA;;EAAA,6DA8CuB0D,KAAK,CAACjK,MAAD,CA9C5B;;EAAA;EAAA,gCAgDgBA,MAAM,YAAY4S,IAhDlC;EAAA;EAAA;EAAA;;EAAA,gCAiDoB9O,CAAC,KAAK,CAAC,CAAP,IAAYA,CAAC,IAAI,CAAjB,IAAsBA,CAAC,GAAGqb,WAjD9C;EAAA;EAAA;EAAA;;EAAA,6DAkD2Bnf,MAlD3B;;EAAA;EAoDgB,8BAAI8D,CAAC,KAAK,CAAC,CAAX,EAAc;EACVA,4BAAAA,CAAC,GAAGA,CAAC,GAAG,CAAR;EACH;;EAtDjB,6DAuDuB6b,QAAQ,CAAC3f,MAAD,EAAS8D,CAAT,EAAYgO,GAAZ,CAvD/B;;EAAA;EAAA,+BAyDgBwM,OAAO,CAACte,MAAD,CAzDvB;EAAA;EAAA;EAAA;;EAAA,6DA0DuBA,MA1DvB;;EAAA;EA8DI;EACIwT,0BAAAA,GA/DR,GA+DcmG,IAAI,CAACnG,GA/DnB;;EAAA,gCAgEQA,GAAG,YAAYZ,IAhEvB;EAAA;EAAA;EAAA;;EAAA;EAAA,iCAiEoB+M,QAAQ,CAACnM,GAAD,EAAM1P,CAAN,EAASgO,GAAT,CAjE5B;;EAAA;EAiEQ0B,0BAAAA,GAjER;;EAAA;EAmEQb,0BAAAA,GAnER,GAmEcgH,IAAI,CAAChH,GAnEnB;;EAAA,gCAoEQA,GAAG,YAAYC,IApEvB;EAAA;EAAA;EAAA;;EAAA;EAAA,iCAqEoB+M,QAAQ,CAAChN,GAAD,EAAM7O,CAAN,EAASgO,GAAT,CArE5B;;EAAA;EAqEQa,0BAAAA,GArER;;EAAA;EAuEQY,0BAAAA,IAvER,GAuEe,IAAIX,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAvEf;EAAA,6DAwEWY,IAxEX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,iBA1DG;EAAA;EAAA;;EA0DYoM,cAAAA,QA1DZ;EAAA;EAAA;;EAAA;EAAA,uFA6CH,mBAAkChG,IAAlC,EAAwC7V,CAAxC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,gCACQ6V,IAAI,KAAKnH,IADjB;EAAA;EAAA;EAAA;;EAAA,6DAEeA,IAFf;;EAAA;EAIQe,0BAAAA,IAJR,GAIeoG,IAAI,CAACnG,GAJpB;EAAA,0CAKeZ,IALf;EAAA,0CAMYA,IANZ;EAAA,0CAOYW,IAAI,CAACC,GAPjB;EAAA;EAAA,iCAQkBmM,QAAQ,CAACpM,IAAI,CAACZ,GAAN,EAAW7O,CAAX,EAAcgO,GAAd,CAR1B;;EAAA;EAAA;EAAA;EAAA;EAAA,iCAUc4N,kBAAkB,CAAC/F,IAAI,CAAChH,GAAN,CAVhC;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,iBA7CG;EAAA;EAAA;;EA6CY+M,cAAAA,kBA7CZ;EAAA;EAAA;;EAwCMD,cAAAA,QAxCN,sBAwCehW,IAxCf,EAwCqBjL,KAxCrB,EAwC4B;EAC3B,uBAAOA,KAAK,YAAYqV,KAAjB,IACHrV,KAAK,CAACugB,YADH,IAEH,CAACe,QAAQ,CAACvd,QAAT,CAAkBkH,IAAlB,CAFL;EAGH,eA5CE;;EAgCM+V,cAAAA,WAhCN,yBAgCkB7F,IAhClB,EAgCwB;EACvB,oDAAWmG,QAAX,sBAAwBnG,IAAI,CAAChG,QAAL,CAAc,KAAd,EAAqBvS,GAArB,CAAyB,UAASuY,IAAT,EAAe;EAC5D,sBAAIA,IAAI,YAAY/G,IAApB,EAA0B;EACtB,2BAAO+G,IAAI,CAACnG,GAAL,CAASvQ,OAAT,EAAP;EACH;;EACD,wBAAM,IAAIU,KAAJ,CAAU,kCAAV,CAAN;EACH,iBALuB,CAAxB;EAMH,eAvCE;;EAgBM4b,cAAAA,aAhBN,2BAgBoB5F,IAhBpB,EAgB0B;EACzB,oBAAI9S,KAAK,GAAG,EAAZ;;EACA,uBAAO,IAAP,EAAa;EACT,sBAAI8S,IAAI,KAAKnH,IAAb,EAAkB;EACd,wBAAImH,IAAI,YAAYpT,OAApB,EAA6B;EACzBM,sBAAAA,KAAK,CAAClG,IAAN,CAAWgZ,IAAI,CAAC1W,OAAL,EAAX;EACA;EACH;;EACD4D,oBAAAA,KAAK,CAAClG,IAAN,CAAWgZ,IAAI,CAACnG,GAAL,CAASvQ,OAAT,EAAX;EACA0W,oBAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH,mBAPD,MAOO;EACH;EACH;EACJ;;EACD,oDAAWmN,QAAX,GAAwBjZ,KAAxB;EACH,eA/BE;;EAaM0O,cAAAA,SAbN,uBAagB/W,KAbhB,EAauB;EACtB,uBAAOA,KAAK,KAAK0hB,MAAjB;EACH,eAfE;;EAUMZ,cAAAA,YAVN,0BAUmB9gB,KAVnB,EAU0Bmb,IAV1B,EAUgC;EAC/B,uBAAOnb,KAAK,KAAK2hB,MAAV,IAAoBxG,IAAI,CAAChH,GAAL,CAASa,GAAT,YAAwBZ,IAAnD;EACH,eAZE;;EAMMyM,cAAAA,YANN,0BAMmBrV,MANnB,EAM2B;EAC1B,oBAAIP,IAAI,GAAGO,MAAM,CAAC/G,OAAP,EAAX;EACA,uBAAOmd,UAAU,CAAC7d,QAAX,CAAoBkH,IAApB,CAAP;EACH,eATE;;EACCqI,cAAAA,GADD,GACOvJ,IAAI,CAAC,KAAD,CAAJ,GAAc,IADrB;EAECuX,cAAAA,QAFD,GAEY,EAFZ;EAGCM,cAAAA,UAHD,GAGc,CAAC,KAAD,EAAQ,MAAR,EAAgB,QAAhB,CAHd;EAICF,cAAAA,MAJD,GAIUzhB,UAAU,CAACC,GAAX,CAAe,QAAf,CAJV;EAKCyhB,cAAAA,MALD,GAKU1hB,UAAU,CAACC,GAAX,CAAe,QAAf,CALV;;EAAA,oBAqICoU,IAAI,CAACH,GAAL,YAAoBC,IAApB,IAA4B7P,OAAO,CAACsd,QAAR,CAAiBvN,IAAI,CAACH,GAAL,CAASa,GAA1B,CArI7B;EAAA;EAAA;EAAA;;EAAA,8BAsIQvJ,KAtIR;EAAA;EAAA,qBAsIqB0V,QAAQ,CAAC7M,IAAD,EAAOA,IAAI,CAACH,GAAL,CAASa,GAAT,CAAavQ,OAAb,EAAP,EAA+B6O,GAA/B,CAtI7B;;EAAA;EAAA,8CAsIkE0B,GAtIlE;EAAA;;EAAA;EAAA,mBAwIC4L,MAxID;EAAA;EAAA;EAAA;;EAAA,8BAyIQnV,KAzIR;EAAA;EAAA,qBAyIqB0V,QAAQ,CAAC7M,IAAD,EAAO,CAAP,EAAUhB,GAAV,CAzI7B;;EAAA;EAAA,8CAyI6C0B,GAzI7C;EAAA;;EAAA;EAAA,8BA2IIvJ,KA3IJ;EAAA;EAAA,qBA2IiB0V,QAAQ,CAAC7M,IAAD,EAAO,CAAC,CAAR,EAAWhB,GAAX,CA3IzB;;EAAA;EAAA,8CA2I0C0B,GA3I1C;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAP;;EAAA;EAAA;EAAA;EAAA;EA6IH;EAED;EACA;;;EACA,SAASwM,MAAT,CAAgBljB,EAAhB,EAAoBgV,GAApB,EAAyB;EACrB,OAAKE,OAAL,GAAeF,GAAf;EACA,OAAK8M,MAAL,GAAc9hB,EAAd,CAFqB;;EAIrB,OAAKiiB,YAAL,GAAoB,IAApB;EACH;;EACDiB,MAAM,CAACM,aAAP,GAAuBzW,MAAM,OAAN,CAAW,OAAX,CAAvB;;EAEAmW,MAAM,CAAC5Y,SAAP,GAAmBvG,MAAM,CAAC0f,MAAP,CAAc1M,KAAK,CAACzM,SAApB,CAAnB;;EACA4Y,MAAM,CAAC5Y,SAAP,CAAiB4X,MAAjB,GAA0B,UAASlM,IAAT,UAA+BmM,YAA/B,EAA6C;EAAA,MAA5BjM,KAA4B,UAA5BA,KAA4B;EAAA,MAArBlB,GAAqB,UAArBA,GAAqB;EACnE,MAAIvJ,IAAI,GAAG;EACPyK,IAAAA,KAAK,EAALA,KADO;EAEPlB,IAAAA,GAAG,EAAHA,GAFO;EAGPoN,IAAAA,aAAa,EAAE,KAAKlN,OAHb;EAIPiN,IAAAA,YAAY,EAAZA;EAJO,GAAX;EAMA,SAAO,KAAKL,MAAL,CAAYhhB,IAAZ,CAAiBkU,GAAjB,EAAsBgB,IAAtB,EAA4BvK,IAA5B,EAAkC,KAAKqB,QAAL,IAAiB,QAAnD,CAAP;EACH,CARD;;EASAoW,MAAM,CAAC5Y,SAAP,CAAiBsC,WAAjB,GAA+BsW,MAA/B;;EACAA,MAAM,CAAC5Y,SAAP,CAAiBvL,QAAjB,GAA4B,YAAW;EACnC,MAAI,KAAK+N,QAAT,EAAmB;EACf,8BAAmB,KAAKA,QAAxB;EACH;;EACD,SAAO,WAAP;EACH,CALD;;EAMAoW,MAAM,CAACQ,SAAP,GAAmB,QAAnB;EAEA;EACA;;MACMC;;;;;;;;;;;;IAAkBT;;EAExBA,MAAM,CAACS,SAAP,GAAmBA,SAAnB;EAEA;EACA;EACA;EACA;;EACA,SAASC,gBAAT,CAA0B9K,OAA1B,EAAmC9C,IAAnC,EAAyCwF,OAAzC,EAAkDqI,eAAlD,EAA+E;EAAA,MAAZV,KAAY,uEAAJ,EAAI;EAC3E,MAAIH,QAAQ,GAAG;EACX,WAAO;EACHxH,MAAAA,OAAO,EAAE,EADN;EACW;EACdsI,MAAAA,KAAK,EAAE;EAFJ,KADI;EAKXtI,IAAAA,OAAO,EAAE;EALE,GAAf;EAOA,MAAQuI,SAAR,GAA8BZ,KAA9B,CAAQY,SAAR;EAAA,MAAmBV,MAAnB,GAA8BF,KAA9B,CAAmBE,MAAnB,CAR2E;EAU3E;EACA;EACA;;EACA,WAASliB,GAAT,CAAaC,CAAb,EAAgB;EACZ;EACA,QAAIK,QAAQ,EAAZ,EAAgB;EACZM,MAAAA,OAAO,CAACZ,GAAR,CAAYC,CAAZ;EACH;EACJ;;EACDD,EAAAA,GAAG,CAACqa,OAAD,CAAH;EACA;;EACA,WAASqH,QAAT,CAAkB/J,OAAlB,EAA2B9C,IAA3B,EAAuE;EAAA,QAAtCgO,aAAsC,uEAAtB,EAAsB;EAAA,QAAlBC,QAAkB,uEAAP,KAAO;EACnE9iB,IAAAA,GAAG,CAAC;EACA6U,MAAAA,IAAI,EAAEA,IAAI,IAAIjX,QAAQ,CAACiX,IAAD,EAAO,IAAP,CADtB;EAEA8C,MAAAA,OAAO,EAAEA,OAAO,IAAI/Z,QAAQ,CAAC+Z,OAAD,EAAU,IAAV;EAF5B,KAAD,CAAH;;EAIA,QAAI0I,OAAO,CAAC1I,OAAD,CAAP,IAAoB,EAAEA,OAAO,YAAYrP,OAArB,CAAxB,EAAuD;EACnD,aAAO8X,SAAS,CAACzI,OAAD,EAAU9C,IAAV,CAAhB;EACH;;EACD,QAAI8C,OAAO,YAAYrP,OAAnB,IACA+R,OAAO,CAAC/V,QAAR,CAAiBqT,OAAO,CAACxX,OAAR,EAAjB,CADJ,EACyC;EACrC,UAAM2V,GAAG,GAAG8M,SAAS,CAAC9M,GAAV,CAAcjB,IAAd,CAAZ,CADqC;;EAGrC,UAAIvM,OAAO,CAACwD,EAAR,CAAW+I,IAAX,EAAiB8C,OAAjB,CAAJ,EAA+B;EAC3B,YAAI,OAAO7B,GAAP,KAAe,WAAnB,EAAgC;EAC5B,iBAAO,IAAP;EACH;;EACD,eAAOA,GAAG,KAAKoM,MAAR,IAAkBpM,GAAG,KAAKtV,UAAjC;EACH;;EACD,aAAO,KAAP;EACH,KAnBkE;;;EAqBnE,QAAImX,OAAO,YAAYhD,IAAnB,IACAgD,OAAO,CAACpC,GAAR,YAAuBZ,IADvB,IAEAgD,OAAO,CAACpC,GAAR,CAAYb,GAAZ,YAA2BC,IAF3B,IAGArM,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACpC,GAAR,CAAYb,GAAZ,CAAgBa,GAA3B,EAAgCmN,eAAhC,CAHJ,EAGsD;EAClD1iB,MAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,UAAI6U,IAAI,KAAKN,IAAb,EAAkB;EACdvU,QAAAA,GAAG,CAAC;EAAE2X,UAAAA,OAAO,EAAEA,OAAO,CAAC/Z,QAAR;EAAX,SAAD,CAAH;;EACA,YAAI+Z,OAAO,CAACpC,GAAR,CAAYA,GAAZ,YAA2BjN,OAA/B,EAAwC;EACpC,cAAIqP,OAAO,CAACpC,GAAR,CAAYb,GAAZ,YAA2BC,IAA3B,IACArM,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACpC,GAAR,CAAYb,GAAZ,CAAgBa,GAA3B,EAAgCmN,eAAhC,CADJ,EACsD;EAClD,gBAAIlX,MAAI,GAAGmM,OAAO,CAACpC,GAAR,CAAYA,GAAZ,CAAgBvQ,OAAhB,EAAX;;EACA,gBAAM2U,IAAI,GAAGhC,OAAO,CAAC4E,SAAR,EAAb;;EACA,gBAAIjU,OAAO,CAACwD,EAAR,CAAW6N,IAAI,CAACpE,GAAhB,EAAqBmN,eAArB,CAAJ,EAA2C;EACvCb,cAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAhC;EACA,qBAAO,IAAP;EACH,aAHD,MAGO;EACH,qBAAO,KAAP;EACH;EACJ;;EACD,cAAIA,IAAI,GAAGmM,OAAO,CAACpC,GAAR,CAAYA,GAAZ,CAAgBvQ,OAAhB,EAAX;;EACA,cAAI6c,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,IAAxB,CAAJ,EAAmC;EAC/B,kBAAM,IAAI9F,KAAJ,CAAU,qCACA,cADV,CAAN;EAEH;;EACDmc,UAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,IAAxB,IAAgCqJ,IAAhC;EACH;EACJ;EACJ;;EACD,QAAI8C,OAAO,YAAYhD,IAAnB,IACAgD,OAAO,CAACjD,GAAR,YAAuBC,IADvB,IAEArM,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACjD,GAAR,CAAYa,GAAvB,EAA4BmN,eAA5B,CAFJ,EAEkD;EAC9C;EACA,UAAI/K,OAAO,CAACjD,GAAR,CAAYA,GAAZ,KAAoBH,IAAxB,EAA6B;EACzB,YAAIoD,OAAO,CAACjD,GAAR,CAAYA,GAAZ,YAA2BC,IAA/B,EAAqC;EACjC;EACA,cAAMoO,QAAQ,GAAGpL,OAAO,CAACjD,GAAR,CAAYA,GAAZ,CAAgBnS,MAAhB,EAAjB;EACA,cAAIygB,QAAQ,GAAGnO,IAAI,CAACtS,MAAL,EAAf;EACA,cAAImJ,IAAI,GAAGmJ,IAAX;;EACA,iBAAOmO,QAAQ,GAAG,CAAX,GAAeD,QAAtB,EAAgC;EAC5BrX,YAAAA,IAAI,GAAGA,IAAI,CAACgJ,GAAZ;EACAsO,YAAAA,QAAQ;EACX;;EACD,cAAM/Y,IAAI,GAAGyB,IAAI,CAACgJ,GAAlB;EACAhJ,UAAAA,IAAI,CAACgJ,GAAL,GAAWH,IAAX;;EACA,cAAI,CAACmN,QAAQ,CAAC/J,OAAO,CAACjD,GAAR,CAAYA,GAAb,EAAkBzK,IAAlB,EAAwB4Y,aAAxB,EAAuCC,QAAvC,CAAb,EAA+D;EAC3D,mBAAO,KAAP;EACH;EACJ;EACJ;;EACD,UAAInL,OAAO,CAACpC,GAAR,YAAuBjN,OAA3B,EAAoC;EAChC,YAAIkD,MAAI,GAAGmM,OAAO,CAACpC,GAAR,CAAY5J,QAAvB;;EACA,YAAIkW,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,KACA,CAACqX,aAAa,CAACve,QAAd,CAAuBkH,MAAvB,CADD,IACiC,CAACsX,QADtC,EACgD;EAC5C,gBAAM,IAAIpd,KAAJ,CAAU,8CAAV,CAAN;EACH;;EACD1F,QAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,YAAI6U,IAAI,KAAKN,IAAb,EAAkB;EACdvU,UAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,cAAI8iB,QAAJ,EAAc;EACV9iB,YAAAA,GAAG,CAAC,KAAD,CAAH;EACA6hB,YAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC+I,IAAhC;EACH,WAHD,MAGO;EACHvU,YAAAA,GAAG,CAAC,MAAD,CAAH;EACA6hB,YAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAhC;EACH;EACJ,SATD,MASO,IAAIqJ,IAAI,YAAYF,IAAhB,KACCE,IAAI,CAACU,GAAL,YAAoBZ,IAApB,IAA4BE,IAAI,CAACU,GAAL,KAAahB,IAD1C,CAAJ,EACoD;EACvDvU,UAAAA,GAAG,CAAC,UAAU8iB,QAAX,CAAH;;EACA,cAAIA,QAAJ,EAAc;EACV,gBAAIjB,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,CAAJ,EAAmC;EAC/B,kBAAIkQ,IAAI,GAAGmG,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,CAAX;;EACA,kBAAIkQ,IAAI,KAAKnH,IAAb,EAAkB;EACdmH,gBAAAA,IAAI,GAAG,IAAI/G,IAAJ,CAASJ,IAAT,EAAc,IAAII,IAAJ,CAASE,IAAT,EAAeN,IAAf,CAAd,CAAP;EACH,eAFD,MAEO;EACHmH,gBAAAA,IAAI,GAAGA,IAAI,CAACxM,MAAL,CAAY,IAAIyF,IAAJ,CAASE,IAAT,EAAeN,IAAf,CAAZ,CAAP;EACH;;EACDsN,cAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgCkQ,IAAhC;EACH,aARD,MAQO;EACHmG,cAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAImJ,IAAJ,CAASE,IAAT,EAAeN,IAAf,CAAhC;EACH;EACJ,WAZD,MAYO;EACHvU,YAAAA,GAAG,CAAC,MAAD,CAAH;EACA6hB,YAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAImJ,IAAJ,CAASE,IAAT,EAAeN,IAAf,CAAhC;EACH;EACJ,SAnBM,MAmBA;EACHvU,UAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,cAAI6U,IAAI,YAAYF,IAApB,EAA0B;EACtB3U,YAAAA,GAAG,CAAC,UAAU8iB,QAAX,CAAH;EACAD,YAAAA,aAAa,CAACngB,IAAd,CAAmB8I,MAAnB;;EACA,gBAAI,CAACqW,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,CAAL,EAAoC;EAChCqW,cAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAImJ,IAAJ,CAC5BE,IAD4B,EAE5BN,IAF4B,CAAhC;EAIH,aALD,MAKO;EACH,kBAAMmH,KAAI,GAAGmG,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,CAAb;EACAqW,cAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgCkQ,KAAI,CAACxM,MAAL,CAC5B,IAAIyF,IAAJ,CACIE,IADJ,EAEIN,IAFJ,CAD4B,CAAhC;EAMH;;EACDvU,YAAAA,GAAG,CAAC;EAAEijB,cAAAA,MAAM,EAAEpB,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,EAA8B5N,QAA9B;EAAV,aAAD,CAAH;EACH,WAlBD,MAkBO;EACHoC,YAAAA,GAAG,CAAC,MAAD,CAAH;EACA,mBAAO,KAAP,CAFG;EAIN;EACJ;;EACD,eAAO,IAAP;EACH,OA9DD,MA8DO,IAAI2X,OAAO,CAACpC,GAAR,YAAuBZ,IAA3B,EAAiC;EACpC,YAAI/L,KAAK,sBAAOia,aAAP,CAAT;;EACA,YAAIhO,IAAI,KAAKN,IAAb,EAAkB;EACdvU,UAAAA,GAAG,CAAC,MAAD,CAAH;EACA6hB,UAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBc,KAAhB,CAAsBjgB,IAAtB,CAA2B6R,IAA3B;EACA,iBAAO,IAAP;EACH;;EACDvU,QAAAA,GAAG,CAAC,OAAD,CAAH;EACA,YAAI0b,MAAI,GAAG7G,IAAX;;EACA,eAAO6G,MAAI,YAAY/G,IAAvB,EAA6B;EACzB,cAAI,CAAC+M,QAAQ,CAAC/J,OAAO,CAACpC,GAAT,EAAcmG,MAAI,CAACnG,GAAnB,EAAwB3M,KAAxB,EAA+B,IAA/B,CAAb,EAAmD;EAC/C,mBAAO,KAAP;EACH;;EACD8S,UAAAA,MAAI,GAAGA,MAAI,CAAChH,GAAZ;EACH;;EACD,eAAO,IAAP;EACH;;EACD,aAAO,KAAP;EACH;;EACD,QAAIiD,OAAO,YAAYrP,OAAvB,EAAgC;EAC5B,UAAIA,OAAO,CAACwD,EAAR,CAAW6L,OAAX,EAAoB+K,eAApB,CAAJ,EAA0C;EACtC,cAAM,IAAIhd,KAAJ,CAAU,mCAAV,CAAN;EACH;;EACD1F,MAAAA,GAAG,CAAC,OAAD,CAAH;EACA,UAAMwL,MAAI,GAAGmM,OAAO,CAAChM,QAArB;;EACA,UAAI0O,OAAO,CAAC/V,QAAR,CAAiBkH,MAAjB,CAAJ,EAA4B;EACxB,eAAO,IAAP;EACH;;EACDxL,MAAAA,GAAG,CAAC;EAAEwL,QAAAA,IAAI,EAAJA,MAAF;EAAQsX,QAAAA,QAAQ,EAARA;EAAR,OAAD,CAAH;;EACA,UAAIA,QAAJ,EAAc;EACVjB,QAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgCqW,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,KAAiC,EAAjE;;EACAqW,QAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,EAA8B9I,IAA9B,CAAmCmS,IAAnC;EACH;;EACDgN,MAAAA,QAAQ,CAACxH,OAAT,CAAiB7O,MAAjB,IAAyBqJ,IAAzB;;EACA,UAAI,CAACgN,QAAQ,CAACxH,OAAT,CAAiB7O,MAAjB,CAAL,EAA6B;;EAE7B,aAAO,IAAP;EACH;;EACD,QAAImM,OAAO,YAAYhD,IAAnB,IAA2BE,IAAI,YAAYF,IAA/C,EAAqD;EACjD3U,MAAAA,GAAG,CAAC,OAAD,CAAH;EACAA,MAAAA,GAAG,CAAC;EACAqT,QAAAA,CAAC,EAAE,EADH;EAEAwB,QAAAA,IAAI,EAAEA,IAAI,IAAIA,IAAI,CAACjX,QAAL,EAFd;EAGA+Z,QAAAA,OAAO,EAAEA,OAAO,CAAC/Z,QAAR;EAHT,OAAD,CAAH;;EAKA,UAAIiX,IAAI,CAACH,GAAL,KAAaH,IAAjB,EAAsB;EAClB;EACA;EACA;EACA,YAAI2O,YAAY,GAAGvL,OAAO,CAACpC,GAAR,YAAuBjN,OAAvB,IACfqP,OAAO,CAACjD,GAAR,YAAuBpM,OAD3B;;EAEA,YAAI4a,YAAJ,EAAkB;EACd;EACA;EACA,cAAI,CAACxB,QAAQ,CAAC/J,OAAO,CAACpC,GAAT,EAAcV,IAAI,CAACU,GAAnB,EAAwBsN,aAAxB,EAAuCC,QAAvC,CAAb,EAA+D;EAC3D,mBAAO,KAAP;EACH;;EACD9iB,UAAAA,GAAG,CAAC,WAAD,CAAH;;EACA,cAAIwL,MAAI,GAAGmM,OAAO,CAACjD,GAAR,CAAY1P,OAAZ,EAAX;;EACA,cAAI,EAAEwG,MAAI,IAAIqW,QAAQ,CAACxH,OAAnB,CAAJ,EAAiC;EAC7BwH,YAAAA,QAAQ,CAACxH,OAAT,CAAiB7O,MAAjB,IAAyB+I,IAAzB;EACH;;EACD/I,UAAAA,MAAI,GAAGmM,OAAO,CAACpC,GAAR,CAAYvQ,OAAZ,EAAP;;EACA,cAAI,EAAEwG,MAAI,IAAIqW,QAAQ,CAACxH,OAAnB,CAAJ,EAAiC;EAC7BwH,YAAAA,QAAQ,CAACxH,OAAT,CAAiB7O,MAAjB,IAAyBqJ,IAAI,CAACU,GAA9B;EACH;;EACD,iBAAO,IAAP;EACH;EACJ;;EACDvV,MAAAA,GAAG,CAAC;EACA2X,QAAAA,OAAO,EAAEA,OAAO,CAAC/Z,QAAR,EADT;EAEAiX,QAAAA,IAAI,EAAEA,IAAI,CAACjX,QAAL;EAFN,OAAD,CAAH,CA/BiD;;EAoCjD,UAAI+Z,OAAO,CAACjD,GAAR,YAAuBC,IAAvB,IACAgD,OAAO,CAACpC,GAAR,YAAuBjN,OADvB,IAEAqP,OAAO,CAACjD,GAAR,CAAYA,GAAZ,YAA2BC,IAF3B,IAGAgD,OAAO,CAACjD,GAAR,CAAYa,GAAZ,YAA2BjN,OAH3B,IAIAA,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACjD,GAAR,CAAYA,GAAZ,CAAgBa,GAA3B,EAAgCmN,eAAhC,CAJA,IAKA/K,OAAO,CAACjD,GAAR,CAAYA,GAAZ,CAAgBA,GAAhB,YAA+BC,IAL/B,IAMA,CAACrM,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACjD,GAAR,CAAYA,GAAZ,CAAgBA,GAAhB,CAAoBa,GAA/B,EAAoCmN,eAApC,CAND,IAOAhB,QAAQ,CAAC/J,OAAO,CAACpC,GAAT,EAAcV,IAAI,CAACU,GAAnB,EAAwBsN,aAAxB,EAAuCC,QAAvC,CAPR,IAQApB,QAAQ,CAAC/J,OAAO,CAACjD,GAAR,CAAYA,GAAZ,CAAgBA,GAAjB,EAAsBG,IAAI,CAACH,GAA3B,EAAgCmO,aAAhC,EAA+CC,QAA/C,CARZ,EAQsE;EAClE,YAAMtX,MAAI,GAAGmM,OAAO,CAACjD,GAAR,CAAYa,GAAZ,CAAgB5J,QAA7B;EACA3L,QAAAA,GAAG,CAAC;EACA2X,UAAAA,OAAO,EAAEA,OAAO,CAACpC,GAAR,CAAY3X,QAAZ,EADT;EAEAiX,UAAAA,IAAI,EAAEA,IAAI,CAACU,GAAL,CAAS3X,QAAT,EAFN;EAGA4N,UAAAA,IAAI,EAAJA;EAHA,SAAD,CAAH;;EAKA,YAAI6O,OAAO,CAAC/V,QAAR,CAAiBkH,MAAjB,CAAJ,EAA4B;EACxB,iBAAO,IAAP;EACH;;EACDqW,QAAAA,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhB,CAAwB7O,MAAxB,IAAgC,IAAhC;EACA,eAAO,IAAP;EACH;;EACDxL,MAAAA,GAAG,CAAC,OAAD,CAAH;;EACA,UAAI0hB,QAAQ,CAAC/J,OAAO,CAACpC,GAAT,EAAcV,IAAI,CAACU,GAAnB,EAAwBsN,aAAxB,EAAuCC,QAAvC,CAAR,IACApB,QAAQ,CAAC/J,OAAO,CAACjD,GAAT,EAAcG,IAAI,CAACH,GAAnB,EAAwBmO,aAAxB,EAAuCC,QAAvC,CADZ,EAC8D;EAC1D,eAAO,IAAP;EACH;EACJ,KA9DD,MA8DO,IAAInL,OAAO,KAAKpD,IAAZ,KAAoBM,IAAI,KAAKN,IAAT,IAAgBM,IAAI,KAAKrX,SAA7C,CAAJ,EAA6D;EAChE;EACA;EACA,aAAO,IAAP;EACH,KAJM,MAIA,IAAIma,OAAO,CAACpC,GAAR,YAAuBZ,IAAvB,IACArM,OAAO,CAACwD,EAAR,CAAW6L,OAAO,CAACpC,GAAR,CAAYA,GAAvB,EAA4BmN,eAA5B,CADJ,EACkD;EACrD;EACA,YAAM,IAAIhd,KAAJ,CAAU,mCAAV,CAAN;EACH,KAJM,MAIA;EACH,aAAO,KAAP;EACH;EACJ;EACD;;;EACA,MAAIgc,QAAQ,CAAC/J,OAAD,EAAU9C,IAAV,CAAZ,EAA6B;EACzB,WAAOgN,QAAP;EACH;EACJ;EAED;EACA;EACA;EACA;;;EACA,SAASsB,aAAT,CAAuBzH,IAAvB,EAA6B0H,OAA7B,EAAsC;EAClC,WAAS1B,QAAT,CAAkBhG,IAAlB,EAAwB;EACpB,QAAIA,IAAI,YAAY/G,IAApB,EAA0B;EACtB,UAAI,CAACyO,OAAO,CAAC7gB,MAAb,EAAqB;EACjB,eAAOmZ,IAAP;EACH;;EACD,UAAMnG,GAAG,GAAGmM,QAAQ,CAAChG,IAAI,CAACnG,GAAN,CAApB;EACA,UAAMb,GAAG,GAAGgN,QAAQ,CAAChG,IAAI,CAAChH,GAAN,CAApB,CALsB;EAOtB;;EACA,aAAO,IAAIC,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH,KATD,MASO,IAAIgH,IAAI,YAAYpT,OAApB,EAA6B;EAChC,UAAI+a,WAAW,GAAGD,OAAO,CAACzM,IAAR,CAAa,UAACrK,MAAD,EAAY;EACvC,eAAOA,MAAM,CAACA,MAAP,KAAkBoP,IAAzB;EACH,OAFiB,CAAlB;;EAGA,UAAI2H,WAAJ,EAAiB;EACb,eAAO/a,OAAO,CAAC+a,WAAW,CAAC7X,IAAb,CAAd;EACH;;EACD,aAAOkQ,IAAP;EACH,KARM,MAQA;EACH,aAAOA,IAAP;EACH;EACJ;;EACD,SAAOgG,QAAQ,CAAChG,IAAD,CAAf;EACH;;;EAED,SAAS4H,gBAAT,GAAwC;EAAA,MAAdpf,OAAc,uEAAJ,EAAI;EACpC,MACI2d,QADJ,GAMkC3d,OANlC,CACI2d,QADJ;EAAA,MAEIlM,IAFJ,GAMkCzR,OANlC,CAEIyR,IAFJ;EAAA,MAGIqM,KAHJ,GAMkC9d,OANlC,CAGI8d,KAHJ;EAAA,MAII3H,OAJJ,GAMkCnW,OANlC,CAIImW,OAJJ;EAAA,MAKIzR,KALJ,GAMkC1E,OANlC,CAKI0E,KALJ;EAAA,MAMc8Z,eANd,GAMkCxe,OANlC,CAMI4e,QANJ;EAOA,MAAIM,OAAO,GAAG,EAAd;;EACA,WAASG,YAAT,CAAsBxX,MAAtB,EAA8B;EAC1B,QAAIA,MAAM,YAAYzD,OAAtB,EAA+B;EAC3B,aAAO,IAAP;EACH;;EACD,WAAO,CAAC,QAAD,EAAW,QAAX,EAAqBhE,QAArB,SAAqCyH,MAArC,EAAP;EACH;;EACD,WAAS8Q,SAAT,CAAmB9Q,MAAnB,EAA2B;EACvB,QAAI,CAACwX,YAAY,CAACxX,MAAD,CAAjB,EAA2B;EACvB,UAAM7D,CAAC,GAAGzI,IAAI,CAACsM,MAAD,CAAd;EACA,YAAM,IAAIrG,KAAJ,mDAAqDwC,CAArD,EAAN;EACH;;EACD,QAAMsD,IAAI,GAAGO,MAAM,CAAC/G,OAAP,EAAb;;EACA,QAAIwG,IAAI,KAAKkX,eAAb,EAA8B;EAC1B,YAAM,IAAIhd,KAAJ,CAAU,iDAAV,CAAN;EACH,KARsB;;;EAUvB,QAAI8d,MAAM,WAAUhY,IAAV,CAAV;;EACA,QAAI,CAAC,QAAD,EAAW,QAAX,EAAqBlH,QAArB,CAA8Bkf,MAA9B,CAAJ,EAA2C;EACvC,UAAIhY,IAAI,IAAIqW,QAAQ,CAACxH,OAArB,EAA8B;EAC1B,eAAOwH,QAAQ,CAACxH,OAAT,CAAiB7O,IAAjB,CAAP;EACH,OAFD,MAEO,IAAIgY,MAAM,KAAK,QAAX,IAAuBhY,IAAI,CAACvH,KAAL,CAAW,IAAX,CAA3B,EAA6C;EAChD;EACA,YAAMD,KAAK,GAAGwH,IAAI,CAACnH,KAAL,CAAW,GAAX,CAAd;EACA,YAAMof,KAAK,GAAGzf,KAAK,CAAC,CAAD,CAAnB;;EACA,YAAIyf,KAAK,IAAI5B,QAAQ,CAACxH,OAAtB,EAA+B;EAC3B,iBAAO1F,IAAI,CAACkB,SAAL,CAAe,CAClBvN,OAAO,CAAC,GAAD,CADW,EAElBuZ,QAAQ,CAACxH,OAAT,CAAiBoJ,KAAjB,CAFkB,EAGpBtR,MAHoB,CAGbnO,KAAK,CAACkH,KAAN,CAAY,CAAZ,EAAe/H,GAAf,CAAmB,UAAAlD,CAAC;EAAA,mBAAI6H,OAAO,CAAC7H,CAAD,CAAX;EAAA,WAApB,CAHa,CAAf,CAAP;EAIH;EACJ;EACJ;;EACD,QAAIoa,OAAO,CAAC/V,QAAR,CAAiBkH,IAAjB,CAAJ,EAA4B;EACxB,aAAOlD,OAAO,CAACkD,IAAD,CAAd;EACH;;EACD,WAAOkY,MAAM,CAAClY,IAAD,CAAb;EACH;;EACD,WAASxL,GAAT,CAAaC,CAAb,EAAgB;EACZ;EACA,QAAIK,QAAQ,EAAZ,EAAgB;EACZM,MAAAA,OAAO,CAACZ,GAAR,CAAYC,CAAZ;EACH;EACJ;;EACD,WAASyjB,MAAT,CAAgBlY,IAAhB,EAAsB;EAClB,QAAI,CAAC4X,OAAO,CAAC5X,IAAD,CAAZ,EAAoB;EAChB,UAAIsK,GAAG,GAAGkM,KAAK,CAAClM,GAAN,CAAUtK,IAAV,CAAV;EACA,UAAMmY,WAAW,GAAGrX,MAAM,CAACd,IAAD,CAA1B;;EACA,UAAIsK,GAAJ,EAAS;EACL,YAAMvV,KAAK,GAAGyhB,KAAK,CAACvhB,GAAN,CAAU+K,IAAV,CAAd;EACAwW,QAAAA,KAAK,CAAClS,GAAN,CAAU6T,WAAV,EAAuBpjB,KAAvB;EACH,OAHD,MAGO;EACH,YAAMA,MAAK,GAAGyhB,KAAK,CAACvhB,GAAN,CAAU+K,IAAV,EAAgB;EAAExK,UAAAA,UAAU,EAAE;EAAd,SAAhB,CAAd,CADG;;;EAGH,YAAI,OAAOT,MAAP,KAAiB,WAArB,EAAkC;EAC9ByhB,UAAAA,KAAK,CAAClS,GAAN,CAAU6T,WAAV,EAAuBpjB,MAAvB;EACH;EACJ,OAZe;EAchB;EACA;;;EACAqI,MAAAA,KAAK,CAAClG,IAAN,CAAW;EACP8I,QAAAA,IAAI,EAAJA,IADO;EACDc,QAAAA,MAAM,EAAEqX;EADP,OAAX;EAGAP,MAAAA,OAAO,CAAC5X,IAAD,CAAP,GAAgBmY,WAAhB,CAnBgB;EAqBhB;;EACA,UAAI,OAAOnY,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACvH,KAAL,CAAW,IAAX,CAAhC,EAAkD;EAC9C,iCAAyBuH,IAAI,CAACnH,KAAL,CAAW,GAAX,EAAgBuG,MAAhB,CAAuBgZ,OAAvB,CAAzB;EAAA;EAAA,YAAOH,KAAP;EAAA,YAAiBxZ,IAAjB,gCAD8C;;;EAG9C,YAAImZ,OAAO,CAACK,KAAD,CAAX,EAAoB;EAChB/W,UAAAA,WAAW,CAACiX,WAAD,EAAc,YAAd,GAA6BP,OAAO,CAACK,KAAD,CAApC,4BAAgDxZ,IAAhD,GAAX;EACH;EACJ;EACJ;;EACD,WAAOmZ,OAAO,CAAC5X,IAAD,CAAd;EACH;;EACD,WAASqY,uBAAT,CAAiClO,IAAjC,EAAuCkM,QAAvC,EAAiDrQ,KAAjD,EAAyE;EAAA,QAAjBwJ,IAAiB,uEAAV,YAAM,EAAI;EACrE,QAAQ4E,MAAR,GAAmBpO,KAAnB,CAAQoO,MAAR;EACA5f,IAAAA,GAAG,CAAC,UAAU2V,IAAI,CAAC/X,QAAL,CAAc,IAAd,CAAX,CAAH;EACAoC,IAAAA,GAAG,CAAC6hB,QAAD,CAAH;;EACA,QAAIlM,IAAI,YAAYrN,OAApB,EAA6B;EACzB,UAAMkD,IAAI,GAAGmK,IAAI,CAAC3Q,OAAL,EAAb;EACAhF,MAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,UAAI6hB,QAAQ,CAACrW,IAAD,CAAZ,EAAoB;EAChB,YAAIqW,QAAQ,CAACrW,IAAD,CAAR,YAA0BmJ,IAA9B,EAAoC;EAChC,+BAAqBkN,QAAQ,CAACrW,IAAD,CAA7B;EAAA,cAAQ+J,GAAR,kBAAQA,GAAR;EAAA,cAAab,GAAb,kBAAaA,GAAb;;EACA,cAAIkL,MAAJ,EAAY;EACR,gBAAakE,IAAb,GAAiCvO,GAAjC,CAAQA,GAAR;EAAA,gBAAwBwO,IAAxB,GAAiCxO,GAAjC,CAAmBb,GAAnB;;EACA,gBAAIqP,IAAI,KAAKxP,IAAb,EAAkB;EACdyG,cAAAA,IAAI,CAACxP,IAAD,EAAO,IAAImJ,IAAJ,CAASoP,IAAT,EAAexP,IAAf,CAAP,CAAJ;EACH;;EACD,mBAAOuP,IAAP;EACH;;EACD,cAAIpP,GAAG,KAAKH,IAAZ,EAAiB;EACbyG,YAAAA,IAAI,CAACxP,IAAD,EAAOkJ,GAAP,CAAJ;EACH;;EACD,iBAAOa,GAAP;EACH,SAbD,MAaO,IAAIsM,QAAQ,CAACrW,IAAD,CAAR,YAA0BuC,KAA9B,EAAqC;EACxCiN,UAAAA,IAAI,CAACxP,IAAD,EAAOqW,QAAQ,CAACrW,IAAD,CAAR,CAAeN,KAAf,CAAqB,CAArB,CAAP,CAAJ;EACA,iBAAO2W,QAAQ,CAACrW,IAAD,CAAR,CAAe,CAAf,CAAP;EACH;EACJ;;EACD,aAAOqR,SAAS,CAACrR,IAAD,CAAhB;EACH;;EACD,QAAImK,IAAI,YAAYhB,IAApB,EAA0B;EACtB,UAAIgB,IAAI,CAACJ,GAAL,YAAoBjN,OAApB,IACAqN,IAAI,CAACjB,GAAL,YAAoBC,IADpB,IAEArM,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACjB,GAAL,CAASa,GAApB,EAAyBmN,eAAzB,CAFJ,EAE+C;EAC3C1iB,QAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,YAAMwL,MAAI,GAAGmK,IAAI,CAACJ,GAAL,CAASvQ,OAAT,EAAb;;EACA,YAAMoE,IAAI,GAAGyY,QAAQ,CAACrW,MAAD,CAArB;EACAxL,QAAAA,GAAG,CAAC;EAAE2V,UAAAA,IAAI,EAAEA,IAAI,CAAC/X,QAAL,CAAc,IAAd,CAAR;EAA6B4N,UAAAA,IAAI,EAAJA,MAA7B;EAAmCqW,UAAAA,QAAQ,EAARA,QAAnC;EAA6CzY,UAAAA,IAAI,EAAJA;EAA7C,SAAD,CAAH;;EACA,YAAIA,IAAI,KAAK,IAAb,EAAmB;EACf;EACH,SAFD,MAEO,IAAIA,IAAJ,EAAU;EACbpJ,UAAAA,GAAG,CAAC;EAAEsT,YAAAA,CAAC,EAAEuO,QAAQ,CAACrW,MAAD,CAAR,CAAe5N,QAAf;EAAL,WAAD,CAAH;;EACA,cAAIwL,IAAI,YAAYuL,IAApB,EAA0B;EACtB3U,YAAAA,GAAG,CAAC,eAAe4f,MAAhB,CAAH;EACA5f,YAAAA,GAAG,CAAC;EAAEgkB,cAAAA,MAAM,EAAE5a,IAAI,CAACxL,QAAL;EAAV,aAAD,CAAH;EACA,gBAAQ2X,IAAR,GAAqBnM,IAArB,CAAQmM,GAAR;EAAA,gBAAab,IAAb,GAAqBtL,IAArB,CAAasL,GAAb;;EACA,gBAAIkL,MAAJ,EAAY;EACR,kBAAIlL,IAAG,KAAKH,IAAZ,EAAiB;EACbvU,gBAAAA,GAAG,CAAC,WAAD,CAAH;EACAgb,gBAAAA,IAAI,CAACxP,MAAD,EAAOkJ,IAAP,CAAJ;EACH;;EACD1U,cAAAA,GAAG,CAAC;EAAEuV,gBAAAA,GAAG,EAAEA,IAAG,CAAC3X,QAAJ;EAAP,eAAD,CAAH;EACA,qBAAO2X,IAAP;EACH,aAPD,MAOO;EACH,kBAAIA,IAAG,CAACb,GAAJ,KAAYH,IAAhB,EAAqB;EACjBvU,gBAAAA,GAAG,CAAC,WAAD,CAAH;EACAgb,gBAAAA,IAAI,CAACxP,MAAD,EAAO,IAAImJ,IAAJ,CAASY,IAAG,CAACb,GAAb,EAAkBA,IAAlB,CAAP,CAAJ;EACH;;EACD1U,cAAAA,GAAG,CAAC;EAAEuV,gBAAAA,GAAG,EAAEA,IAAG,CAACA,GAAJ,CAAQ3X,QAAR;EAAP,eAAD,CAAH;EACA,qBAAO2X,IAAG,CAACA,GAAX;EACH;EACJ,WAnBD,MAmBO,IAAInM,IAAI,YAAY2E,KAApB,EAA2B;EAC9B/N,YAAAA,GAAG,CAAC,gBAAgB4f,MAAjB,CAAH;;EACA,gBAAIA,MAAJ,EAAY;EACR5E,cAAAA,IAAI,CAACxP,MAAD,EAAOpC,IAAI,CAAC8B,KAAL,CAAW,CAAX,CAAP,CAAJ;EACA,qBAAOyJ,IAAI,CAACkB,SAAL,CAAezM,IAAf,CAAP;EACH,aAHD,MAGO;EACH,kBAAMa,MAAI,GAAGb,IAAI,CAAC8B,KAAL,CAAW,CAAX,CAAb;;EACA,kBAAIjB,MAAI,CAAC1H,MAAT,EAAiB;EACbyY,gBAAAA,IAAI,CAACxP,MAAD,EAAOvB,MAAP,CAAJ;EACH;;EACD,qBAAOb,IAAI,CAAC,CAAD,CAAX;EACH;EACJ,WAZM,MAYA;EACH,mBAAOA,IAAP;EACH;EACJ;EACJ;;EACDpJ,MAAAA,GAAG,CAAC,gBAAgB2V,IAAI,CAAC/X,QAAL,EAAjB,CAAH;EACA,UAAM0W,IAAI,GAAGuP,uBAAuB,CAAClO,IAAI,CAACJ,GAAN,EAAWsM,QAAX,EAAqBrQ,KAArB,EAA4BwJ,IAA5B,CAApC;EACA,UAAM/Q,IAAI,GAAG4Z,uBAAuB,CAAClO,IAAI,CAACjB,GAAN,EAAWmN,QAAX,EAAqBrQ,KAArB,EAA4BwJ,IAA5B,CAApC;EACA,aAAO,IAAIrG,IAAJ,CACHL,IADG,EAEHrK,IAFG,CAAP;EAIH;;EACD,WAAO0L,IAAP;EACH;;EACD,WAASsO,YAAT,CAAsBC,MAAtB,EAA8BC,UAA9B,EAA0C;EACtC,QAAMrN,MAAM,GAAGlU,MAAM,CAACkU,MAAP,CAAcoN,MAAd,CAAf;EACA,QAAM7J,OAAO,GAAGzX,MAAM,CAAC+a,qBAAP,CAA6BuG,MAA7B,CAAhB;;EACA,QAAI7J,OAAO,CAAC9X,MAAZ,EAAoB;EAChBuU,MAAAA,MAAM,CAACpU,IAAP,OAAAoU,MAAM,qBAASuD,OAAO,CAAClX,GAAR,CAAY,UAAAlD,CAAC;EAAA,eAAIikB,MAAM,CAACjkB,CAAD,CAAV;EAAA,OAAb,CAAT,EAAN;EACH;;EACD,WAAO6W,MAAM,CAACvU,MAAP,IAAiBuU,MAAM,CAACsN,KAAP,CAAa,UAAAnkB,CAAC,EAAI;EACtC,UAAIA,CAAC,KAAK,IAAV,EAAgB;EACZ,eAAO,CAACkkB,UAAR;EACH;;EACD,aAAOlkB,CAAC,YAAY0U,IAAb,IAAqB1U,CAAC,KAAKsU,IAA3B,IACFtU,CAAC,YAAY8N,KAAb,IAAsB9N,CAAC,CAACsC,MAD7B;EAEH,KANuB,CAAxB;EAOH;;EACD,WAAS8hB,SAAT,CAAmBxY,MAAnB,EAA2B;EACvB,WAAOjJ,MAAM,CAACC,IAAP,CAAYgJ,MAAZ,EAAoBsG,MAApB,CAA2BvP,MAAM,CAAC+a,qBAAP,CAA6B9R,MAA7B,CAA3B,CAAP;EACH;EACD;;;EACA,WAAS6V,QAAT,CAAkB/L,IAAlB,EAA2C;EAAA,qFAAJ,EAAI;EAAA,QAAjB2O,QAAiB,UAAjBA,QAAiB;;EACvCtkB,IAAAA,GAAG,CAAC,gBAAgB2V,IAAI,CAAC/X,QAAL,EAAjB,CAAH;;EACA,QAAI+X,IAAI,YAAYhB,IAApB,EAA0B;EACtB;EACA,UAAI,CAAC2P,QAAD,IAAa3O,IAAI,CAACJ,GAAL,YAAoBZ,IAAjC,IACArM,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACJ,GAAL,CAASA,GAApB,EAAyBmN,eAAzB,CADJ,EAC+C;EAC3C,eAAOhB,QAAQ,CAAC/L,IAAI,CAACJ,GAAL,CAASb,GAAV,EAAe;EAAE4P,UAAAA,QAAQ,EAAE;EAAZ,SAAf,CAAf;EACH;;EACD,UAAI3O,IAAI,CAACjB,GAAL,YAAoBC,IAApB,IACArM,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACjB,GAAL,CAASa,GAApB,EAAyBmN,eAAzB,CADA,IAC6C,CAAC4B,QADlD,EAC4D;EACxDtkB,QAAAA,GAAG,CAAC,MAAD,CAAH;EACA,YAAMqa,SAAO,GAAGwH,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAAhC,CAFwD;EAIxD;;EACA,YAAMvD,MAAM,GAAGlU,MAAM,CAACkU,MAAP,CAAcuD,SAAd,CAAf;;EACA,YAAIvD,MAAM,CAACvU,MAAP,IAAiBuU,MAAM,CAACsN,KAAP,CAAa,UAAAnkB,CAAC;EAAA,iBAAIA,CAAC,KAAK,IAAV;EAAA,SAAd,CAArB,EAAoD;EAChD,iBAAOyhB,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASA,GAAV,EAAe;EAAE4P,YAAAA,QAAQ,EAARA;EAAF,WAAf,CAAf;EACH;;EACD,YAAIzhB,IAAI,GAAGwhB,SAAS,CAAChK,SAAD,CAApB,CATwD;EAWxD;EACA;EACA;EACA;EACA;;EACA,YAAIkK,SAAS,GAAG5O,IAAI,CAACJ,GAAL,YAAoBjN,OAApB,IACZA,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACjB,GAAL,CAASA,GAAT,CAAaa,GAAxB,EAA6BmN,eAA7B,CADJ;;EAEA,YAAI/M,IAAI,CAACJ,GAAL,YAAoBZ,IAApB,IAA4B4P,SAAhC,EAA2C;EACvC;EACA;EACA;EACA,cAAI1C,QAAQ,CAAC,KAAD,CAAR,CAAgBc,KAAhB,CAAsB,CAAtB,MAA6BpO,IAAjC,EAAsC;EAClC,mBAAOA,IAAP;EACH;;EACD,cAAIiQ,QAAQ,GAAG7O,IAAI,CAACJ,GAApB;;EACA,cAAIgP,SAAJ,EAAe;EACXC,YAAAA,QAAQ,GAAG,IAAI7P,IAAJ,CACPgB,IAAI,CAACJ,GADE,EAEP,IAAIZ,IAAJ,CACIgB,IAAI,CAACjB,GAAL,CAASa,GADb,EAEIhB,IAFJ,CAFO,CAAX;EAKH;;EACDvU,UAAAA,GAAG,CAAC,MAAD,CAAH;EACA,cAAI+B,MAAJ;;EACA,cAAIc,IAAI,CAACN,MAAT,EAAiB;EACbvC,YAAAA,GAAG,CAAC,UAAD,CAAH;;EACA,gBAAIykB,KAAI,qBAAQpK,SAAR,CAAR;;EACAtY,YAAAA,MAAM,GAAGwS,IAAT;;EAHa;EAKT,kBAAI,CAAC0P,YAAY,CAACQ,KAAD,CAAjB,EAAyB;EACrB;EACH;;EACD,kBAAMC,QAAQ,GAAG,EAAjB;;EACA,kBAAM1J,IAAI,GAAG,SAAPA,IAAO,CAAC5F,GAAD,EAAM7U,KAAN,EAAgB;EACzB;EACA;EACAmkB,gBAAAA,QAAQ,CAACtP,GAAD,CAAR,GAAgB7U,KAAhB;EACH,eAJD;;EAKA,kBAAMgV,GAAG,GAAGsO,uBAAuB,CAC/BW,QAD+B,EAE/BC,KAF+B,EAG/B;EAAE7E,gBAAAA,MAAM,EAAE;EAAV,eAH+B,EAI/B5E,IAJ+B,CAAnC,CAdS;EAqBT;;EACA,kBAAIzF,GAAG,KAAK/X,SAAZ,EAAuB;EACnB,oBAAI+mB,SAAJ,EAAe;EACX,sBAAIxiB,MAAM,KAAKwS,IAAf,EAAoB;EAChBxS,oBAAAA,MAAM,GAAGwT,GAAT;EACH,mBAFD,MAEO;EACHxT,oBAAAA,MAAM,GAAGA,MAAM,CAACmN,MAAP,CAAcqG,GAAd,CAAT;EACH;EACJ,iBAND,MAMO;EACHxT,kBAAAA,MAAM,GAAG,IAAI4S,IAAJ,CACLY,GADK,EAELxT,MAFK,CAAT;EAIH;EACJ;;EACD0iB,cAAAA,KAAI,GAAGC,QAAP;EApCS;;EAIb,mBAAO,IAAP,EAAa;EAAA;;EAAA,oCAEL;EA+BP;;EACD,gBAAI3iB,MAAM,KAAKwS,IAAX,IAAkB,CAACgQ,SAAvB,EAAkC;EAC9BxiB,cAAAA,MAAM,GAAGA,MAAM,CAACoJ,OAAP,EAAT;EACH,aAxCY;;;EA0Cb,gBAAIwK,IAAI,CAACjB,GAAL,CAASA,GAAT,KAAiBH,IAAjB,IACA,CAACjM,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACjB,GAAL,CAASA,GAAT,CAAaa,GAAxB,EAA6BmN,eAA7B,CADL,EACoD;EAChD,kBAAMzY,MAAI,GAAGyX,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASA,GAAV,EAAe;EAAE4P,gBAAAA,QAAQ,EAARA;EAAF,eAAf,CAArB;;EACA,qBAAOviB,MAAM,CAACmN,MAAP,CAAcjF,MAAd,CAAP;EACH;;EACD,mBAAOlI,MAAP;EACH,WAhDD,MAgDO;EACH/B,YAAAA,GAAG,CAAC,MAAD,CAAH;EACA,gBAAMuV,GAAG,GAAGsO,uBAAuB,CAAClO,IAAI,CAACJ,GAAN,EAAW8E,SAAX,EAAoB;EACnDuF,cAAAA,MAAM,EAAE;EAD2C,aAApB,CAAnC;;EAGA,gBAAIrK,GAAJ,EAAS;EACL,qBAAO,IAAIZ,IAAJ,CACHY,GADG,EAEHhB,IAFG,CAAP;EAIH;;EACD,mBAAOA,IAAP;EACH;EACJ,SA9ED,MA8EO,IAAIoB,IAAI,CAACJ,GAAL,YAAoBjN,OAAxB,EAAiC;EACpCtI,UAAAA,GAAG,CAAC,MAAD,CAAH;;EACA,cAAIsI,OAAO,CAACwD,EAAR,CAAW6J,IAAI,CAACjB,GAAL,CAASA,GAAT,CAAaa,GAAxB,EAA6BmN,eAA7B,CAAJ,EAAmD;EAC/C;EACA1iB,YAAAA,GAAG,CAAC,UAAD,CAAH;EACH,WAHD,MAGO;EACHA,YAAAA,GAAG,CAAC,UAAD,CAAH;EACH,WAPmC;;;EASpC,cAAIwL,IAAI,GAAGmK,IAAI,CAACJ,GAAL,CAAS5J,QAApB;;EACA,cAAI8Y,MAAI,uBAAMjZ,IAAN,EAAa6O,SAAO,CAAC7O,IAAD,CAApB,CAAR;;EACA,cAAMmZ,QAAO,GAAGtK,SAAO,CAAC7O,IAAD,CAAP,KAAkB,IAAlC;;EACA,cAAIzJ,QAAM,GAAGwS,IAAb;;EAZoC;EAchC,gBAAI,CAAC0P,YAAY,CAACQ,MAAD,EAAO,IAAP,CAAjB,EAA+B;EAC3BzkB,cAAAA,GAAG,CAAC;EAAEykB,gBAAAA,IAAI,EAAJA;EAAF,eAAD,CAAH;EACA;EACH;;EACD,gBAAMC,QAAQ,GAAG,EAAjB;;EACA,gBAAM1J,IAAI,GAAG,SAAPA,IAAO,CAAC5F,GAAD,EAAM7U,KAAN,EAAgB;EACzBmkB,cAAAA,QAAQ,CAACtP,GAAD,CAAR,GAAgB7U,KAAhB;EACH,aAFD;;EAGA,gBAAMA,KAAK,GAAGsjB,uBAAuB,CACjClO,IADiC,EAEjC8O,MAFiC,EAGjC;EAAE7E,cAAAA,MAAM,EAAE;EAAV,aAHiC,EAIjC5E,IAJiC,CAArC;EAMAhb,YAAAA,GAAG,CAAC;EAAEO,cAAAA,KAAK,EAAEA,KAAK,CAAC3C,QAAN;EAAT,aAAD,CAAH;;EACA,gBAAI,OAAO2C,KAAP,KAAiB,WAArB,EAAkC;EAC9BwB,cAAAA,QAAM,GAAG,IAAI4S,IAAJ,CACLpU,KADK,EAELwB,QAFK,CAAT;EAIH;;EACD0iB,YAAAA,MAAI,GAAGC,QAAP;EAnCgC;;EAapC,iBAAO,IAAP,EAAa;EAAA;;EAAA,mCAGL;EAoBP;;EACD,cAAI3iB,QAAM,KAAKwS,IAAf,EAAoB;EAChBxS,YAAAA,QAAM,GAAGA,QAAM,CAACoJ,OAAP,EAAT;EACH,WAvCmC;EAyCpC;EACA;;;EACA,cAAIwK,IAAI,CAACjB,GAAL,YAAoBC,IAAxB,EAA8B;EAC1B,gBAAIgB,IAAI,CAACjB,GAAL,CAASA,GAAT,YAAwBC,IAAxB,IACAgB,IAAI,CAACjB,GAAL,CAASA,GAAT,YAAwBpM,OAD5B,EACqC;EACjC,kBAAMoT,IAAI,GAAGgG,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASA,GAAV,EAAe;EAAE4P,gBAAAA,QAAQ,EAARA;EAAF,eAAf,CAArB;;EACA,kBAAIK,QAAJ,EAAa;EACT,uBAAOjJ,IAAP;EACH;;EACD1b,cAAAA,GAAG,CAAC,QAAD,CAAH;;EACA+B,cAAAA,QAAM,CAACmN,MAAP,CAAcwM,IAAd;EACH;EACJ;;EACD1b,UAAAA,GAAG,CAAC,QAAD,CAAH;EACA,iBAAO+B,QAAP;EACH;EACJ;;EACD,UAAMuS,IAAI,GAAGoN,QAAQ,CAAC/L,IAAI,CAACJ,GAAN,EAAW;EAAE+O,QAAAA,QAAQ,EAARA;EAAF,OAAX,CAArB;EACA,UAAIra,IAAJ;EACA,UAAI2a,SAAJ;;EACA,UAAKjP,IAAI,CAACJ,GAAL,YAAoBjN,OAAzB,EAAmC;EAC/B,YAAM/H,KAAK,GAAGyhB,KAAK,CAACvhB,GAAN,CAAUkV,IAAI,CAACJ,GAAf,EAAoB;EAAEvU,UAAAA,UAAU,EAAE;EAAd,SAApB,CAAd;EACA4jB,QAAAA,SAAS,GAAGrkB,KAAK,YAAYqV,KAAjB,IACRrV,KAAK,CAACoL,QAAN,KAAmB,cADvB;EAEH;;EACD,UAAIiZ,SAAJ,EAAe;EACX,YAAIjP,IAAI,CAACjB,GAAL,CAASa,GAAT,YAAwBjN,OAA5B,EAAqC;EACjC2B,UAAAA,IAAI,GAAG,IAAI0K,IAAJ,CACH+M,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASa,GAAV,EAAe;EAAE+O,YAAAA,QAAQ,EAARA;EAAF,WAAf,CADL,EAEH,IAAI3P,IAAJ,CACIgB,IAAI,CAACjB,GAAL,CAASA,GAAT,CAAaa,GADjB,EAEImM,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASA,GAAT,CAAaA,GAAd,EAAmB;EAAE4P,YAAAA,QAAQ,EAARA;EAAF,WAAnB,CAFZ,CAFG,CAAP;EAOH,SARD,MAQO;EACHra,UAAAA,IAAI,GAAG,IAAI0K,IAAJ,CACHgB,IAAI,CAACjB,GAAL,CAASa,GADN,EAEHmM,QAAQ,CAAC/L,IAAI,CAACjB,GAAL,CAASA,GAAV,EAAe;EAAE4P,YAAAA,QAAQ,EAARA;EAAF,WAAf,CAFL,CAAP;EAIH;;EACDtkB,QAAAA,GAAG,CAAC,eAAeiK,IAAI,CAACrM,QAAL,EAAhB,CAAH;EACH,OAhBD,MAgBO;EACHqM,QAAAA,IAAI,GAAGyX,QAAQ,CAAC/L,IAAI,CAACjB,GAAN,EAAW;EAAE4P,UAAAA,QAAQ,EAARA;EAAF,SAAX,CAAf;EACH;;EACDtkB,MAAAA,GAAG,CAAC;EACAqT,QAAAA,CAAC,EAAE,IADH;EAEAkC,QAAAA,GAAG,EAAE3X,QAAQ,CAAC+X,IAAI,CAACJ,GAAN,CAFb;EAGAb,QAAAA,GAAG,EAAE9W,QAAQ,CAAC+X,IAAI,CAACjB,GAAN,CAHb;EAIAJ,QAAAA,IAAI,EAAE1W,QAAQ,CAAC0W,IAAD,CAJd;EAKArK,QAAAA,IAAI,EAAErM,QAAQ,CAACqM,IAAD;EALd,OAAD,CAAH;EAOA,aAAO,IAAI0K,IAAJ,CACHL,IADG,EAEHrK,IAFG,CAAP;EAIH;;EACD,QAAI0L,IAAI,YAAYrN,OAApB,EAA6B;EACzB,UAAIgc,QAAQ,IAAIhc,OAAO,CAACwD,EAAR,CAAW6J,IAAX,EAAiB+M,eAAjB,CAAhB,EAAmD;EAC/C,eAAO/M,IAAP;EACH;;EACD,UAAM0E,SAAO,GAAGzX,MAAM,CAACC,IAAP,CAAYgf,QAAQ,CAAC,KAAD,CAAR,CAAgBxH,OAA5B,CAAhB;;EACA,UAAM7O,MAAI,GAAGmK,IAAI,CAACxV,OAAL,EAAb;;EACA,UAAIka,SAAO,CAAC/V,QAAR,CAAiBkH,MAAjB,CAAJ,EAA4B;EACxB,YAAMnL,GAAG,mDAA6CmL,MAA7C,MAAT;EACA,cAAM,IAAI9F,KAAJ,yBAA2BrF,GAA3B,EAAN;EACH;;EACD,UAAME,OAAK,GAAGsc,SAAS,CAAClH,IAAD,CAAvB;;EACA,UAAI,OAAOpV,OAAP,KAAiB,WAArB,EAAkC;EAC9B,eAAOA,OAAP;EACH;EACJ;;EACD,WAAOoV,IAAP;EACH;;EACD,SAAO+L,QAAQ,CAAC/L,IAAD,EAAO,EAAP,CAAf;EACH;EAED;EACA;;;EACA,SAASgP,OAAT,CAAiBpkB,KAAjB,EAAwB;EACpB,SAAOskB,QAAQ,CAACtkB,KAAD,CAAR,IAAmBA,KAAK,KAAKgU,IAA7B,IAAoChU,KAAK,KAAK,IAArD;EACH;;;EAED,SAAS8M,WAAT,CAAqBuQ,CAArB,EAAwB;EACpB,SAAO,OAAOA,CAAP,KAAa,UAAb,IAA2B,OAAOA,CAAC,CAAC6G,IAAT,KAAkB,UAApD;EACH;;;EAED,SAASK,eAAT,CAAyBlH,CAAzB,EAA4B;EACxB,SAAOA,CAAC,YAAYmH,YAApB;EACH;;;EAED,SAASC,WAAT,CAAqBpH,CAArB,EAAwB;EACpB,SAAOvQ,WAAW,CAACuQ,CAAD,CAAX,IAAkBkH,eAAe,CAAClH,CAAD,CAAxC;EACH;;;EAED,SAAS/c,UAAT,CAAoB+c,CAApB,EAAuB;EACnB,MAAIA,CAAC,YAAYjR,aAAjB,EAAgC;EAC5B,WAAO,KAAP;EACH;;EACD,MAAIiR,CAAC,YAAY3P,OAAjB,EAA0B;EACtB,WAAO,IAAP;EACH;;EACD,SAAO2P,CAAC,IAAIvQ,WAAW,CAACuQ,CAAC,CAAC9c,IAAH,CAAvB;EACH;;;EAED,SAAS+jB,QAAT,CAAkBtkB,KAAlB,EAAyB;EACrB,SAAO,OAAOA,KAAP,KAAiB,WAAxB;EACH;EAED;EACA;;;EACA,SAAS0kB,GAAT,CAAapZ,MAAb,EAAqB;EACjB;EACA;EACA,kBAAeA,MAAf;EACI,SAAK,QAAL;EACI,aAAO/D,OAAO,CAAC+D,MAAD,CAAd;;EACJ,SAAK,QAAL;EACI,aAAO/G,OAAO,CAAC+G,MAAD,CAAd;;EACJ,SAAK,QAAL;EACI,UAAI3F,MAAM,CAACuW,KAAP,CAAa5Q,MAAb,CAAJ,EAA0B;EACtB,eAAOqZ,GAAP;EACH,OAFD,MAEO;EACH,eAAOpgB,OAAO,CAAC+G,MAAD,CAAd;EACH;;EAVT;;EAYA,SAAOA,MAAP;EACH;;;EAED,SAASsZ,UAAT,CAAoBtZ,MAApB,EAA4BhN,EAA5B,EAAgC;EAC5B,MAAMke,KAAK,GAAGna,MAAM,CAACoa,mBAAP,CAA2BnR,MAA3B,CAAd;EACA,MAAMwO,OAAO,GAAGzX,MAAM,CAAC+a,qBAAP,CAA6B9R,MAA7B,CAAhB;EACAkR,EAAAA,KAAK,CAAC5K,MAAN,CAAakI,OAAb,EAAsBrY,OAAtB,CAA8B,UAAAoT,GAAG,EAAI;EACjC,QAAM7U,KAAK,GAAG1B,EAAE,CAACgN,MAAM,CAACuJ,GAAD,CAAP,CAAhB,CADiC;EAGjC;;EACA,QAAMgQ,UAAU,GAAGxiB,MAAM,CAACyiB,wBAAP,CAAgCxZ,MAAhC,EAAwCuJ,GAAxC,CAAnB;;EACA,QAAI,CAACgQ,UAAD,IAAeA,UAAU,CAAC3V,QAAX,IAAuB5D,MAAM,CAACuJ,GAAD,CAAN,KAAgB7U,KAA1D,EAAiE;EAC7DsL,MAAAA,MAAM,CAACuJ,GAAD,CAAN,GAAc7U,KAAd;EACH;EACJ,GARD;EASA,SAAOsL,MAAP;EACH;;;EAED,SAASyZ,KAAT,CAAezZ,MAAf,EAAuB;EACnB,MAAI0Z,SAAS,GAAG,CAACzd,OAAD,EAAUrC,UAAV,EAAsBX,OAAtB,EAA+BmX,IAA/B,CAAoC,UAAAhc,CAAC;EAAA,WAAI4L,MAAM,YAAY5L,CAAtB;EAAA,GAArC,CAAhB;;EACA,MAAIslB,SAAJ,EAAe;EACX,WAAO1Z,MAAM,CAAC7G,OAAP,EAAP;EACH;;EACD,MAAI6G,MAAM,YAAYkC,KAAtB,EAA6B;EACzB,WAAOlC,MAAM,CAAC1I,GAAP,CAAWmiB,KAAX,CAAP;EACH;;EACD,MAAIzZ,MAAM,YAAYc,aAAtB,EAAqC;EACjC,WAAOd,MAAM,CAAC/K,IAAd;EACH;;EACD,MAAIqU,eAAe,CAACtJ,MAAD,CAAnB,EAA6B;EACzB,WAAOsZ,UAAU,CAACtZ,MAAD,EAASyZ,KAAT,CAAjB;EACH;;EACD,SAAOzZ,MAAP;EACH;;;EAED,SAAS2Z,WAAT,CAAqBjlB,KAArB,EAA4BklB,OAA5B,EAAqC;EACjC,MAAIllB,KAAK,YAAYoU,IAArB,EAA2B;EACvBpU,IAAAA,KAAK,CAAC+d,UAAN;EACA,WAAOtS,KAAK,CAACzL,KAAD,CAAZ;EACH;;EACD,MAAI8M,WAAW,CAAC9M,KAAD,CAAf,EAAwB;EACpB;EACA;EACA,QAAIklB,OAAJ,EAAa;EACT,aAAOhB,IAAI,CAAClkB,KAAD,EAAQklB,OAAR,CAAX;EACH;EACJ;;EACD,SAAOR,GAAG,CAAC1kB,KAAD,CAAV;EACH;EAED;EACA;;;EACA,SAAS4c,MAAT,CAAgB9Q,GAAhB,EAAqB;EACjB,MAAIqZ,QAAQ,CAACrZ,GAAD,CAAZ,EAAmB;EACf,WAAOA,GAAG,CAACsU,MAAD,CAAV;EACH;;EACD,SAAOtU,GAAP;EACH;EAED;EACA;EACA;;;EACA,SAASoY,IAAT,CAAc5lB,EAAd,EAAkB4mB,OAAlB,EAA2B;EACvB,MAAI5mB,EAAE,CAAC+M,MAAM,OAAN,CAAW,WAAX,CAAD,CAAN,EAAiC;EAC7B,WAAO/M,EAAP;EACH;;EACD,MAAM8mB,KAAK,GAAG9mB,EAAE,CAAC4lB,IAAH,CAAQgB,OAAR,CAAd;EACA,MAAM1I,KAAK,GAAGna,MAAM,CAACoa,mBAAP,CAA2Bne,EAA3B,CAAd;;EALuB,8CAMNke,KANM;EAAA;;EAAA;EAMvB,2DAAwB;EAAA,UAAf8C,IAAe;;EACpB,UAAI+F,eAAe,CAAC/F,IAAD,CAAnB,EAA2B;EACvB,YAAI;EACA8F,UAAAA,KAAK,CAAC9F,IAAD,CAAL,GAAchhB,EAAE,CAACghB,IAAD,CAAhB;EACH,SAFD,CAEE,OAAOrgB,CAAP,EAAU;EAEX;EACJ;EACJ;EAdsB;EAAA;EAAA;EAAA;EAAA;;EAevBkN,EAAAA,WAAW,CAACiZ,KAAD,EAAQ,QAAR,EAAkB9mB,EAAlB,CAAX;EACA6N,EAAAA,WAAW,CAACiZ,KAAD,EAAQ,aAAR,EAAuBF,OAAvB,CAAX;EACA/Y,EAAAA,WAAW,CAACiZ,KAAD,EAAQ,WAAR,EAAqB,IAArB,CAAX;;EACA,MAAI3H,kBAAkB,CAACnf,EAAD,CAAtB,EAA4B;EACxB6N,IAAAA,WAAW,CAACiZ,KAAD,EAAQ,YAAR,EAAsB,IAAtB,CAAX;EACH;;EACD,MAAIxQ,eAAe,CAACsQ,OAAD,CAAf,IAA4BnO,SAAS,CAACzY,EAAD,CAAzC,EAA+C;EAC3C6N,IAAAA,WAAW,CAACiZ,KAAD,EAAQ,YAAR,EAAsB,IAAtB,CAAX;EACH;;EACDA,EAAAA,KAAK,CAAC3gB,OAAN,GAAgB,YAAW;EACvB,WAAOnG,EAAP;EACH,GAFD;;EAGA,SAAO8mB,KAAP;EACH;EAED;EACA;EACA;EACA;;;EACA,SAASE,eAAT,CAAyBxZ,GAAzB,EAA8B;EAC1B,SAAOqZ,QAAQ,CAACrZ,GAAD,CAAR,IAAiBA,GAAG,CAACT,MAAM,OAAN,CAAW,aAAX,CAAD,CAAH,KAAmChJ,MAA3D;EACH;;;EAED,SAAS8iB,QAAT,CAAkBrZ,GAAlB,EAAuB;EACnB,SAAO,CAAC,EAAEgB,WAAW,CAAChB,GAAD,CAAX,IAAoBA,GAAG,CAACsU,MAAD,CAAzB,CAAR;EACH;;;EAED,SAASmF,YAAT,CAAsBzZ,GAAtB,EAA2B;EACvB,MAAIgB,WAAW,CAAChB,GAAD,CAAf,EAAsB;EAClB,QAAIoZ,OAAO,GAAGpZ,GAAG,CAAC0Z,WAAD,CAAjB;;EACA,QAAIN,OAAO,KAAKA,OAAO,KAAKlN,IAAZ,IACCkN,OAAO,CAACha,WAAR,IACAga,OAAO,CAACha,WAAR,CAAoBwS,SAF1B,CAAX,EAEkD;EAC9C,aAAO,IAAP;EACH;EACJ;;EACD,SAAO,KAAP;EACH;;;EAED,SAAS+H,OAAT,CAAiB3Z,GAAjB,EAAsB;EAClB,SAAOA,GAAG,YAAYsS,SAAf,IAA4BtS,GAAG,YAAYuS,UAAlD;EACH;;;EAED,SAASqH,cAAT,CAAwB5Z,GAAxB,EAA6B;EACzB,MAAIgB,WAAW,CAAChB,GAAD,CAAf,EAAsB;EAClB,QAAI2Z,OAAO,CAAC3Z,GAAG,CAAC0Z,WAAD,CAAJ,CAAX,EAA+B;EAC3B,aAAO,IAAP;EACH;EACJ;;EACD,SAAO,KAAP;EACH;EAED;EACA;;;EACA,IAAIA,WAAW,GAAGna,MAAM,OAAN,CAAW,aAAX,CAAlB;;EACA,IAAI+U,MAAM,GAAG/U,MAAM,OAAN,CAAW,QAAX,CAAb;;EACA,IAAI4Q,QAAQ,GAAG5Q,MAAM,OAAN,CAAW,UAAX,CAAf;;EACA,IAAI+T,OAAO,GAAG/T,MAAM,OAAN,CAAW,SAAX,CAAd;;EACA,IAAI0Q,UAAU,GAAG1Q,MAAM,OAAN,CAAW,YAAX,CAAjB;;EACA,IAAIqS,SAAS,GAAGrS,MAAM,OAAN,CAAW,WAAX,CAAhB;;EACA,IAAIsa,UAAU,GAAGta,MAAM,OAAN,CAAW,YAAX,CAAjB;;EACA,IAAIua,aAAa,GAAGva,MAAM,OAAN,CAAW,eAAX,CAApB;;EACA,IAAIwa,UAAU,GAAGxa,MAAM,OAAN,CAAW,YAAX,CAAjB;EAEA;EACA;EACA;;;EACA,IAAIya,aAAa,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,QAAnB,EAA6B,QAA7B,EAAuC,WAAvC,EAAoD,WAApD,CAApB;;EACA,SAAST,eAAT,CAAyBpa,IAAzB,EAA+B;EAC3B,SAAO,CAAC6a,aAAa,CAAC/hB,QAAd,CAAuBkH,IAAvB,CAAR;EACH;;;EAED,SAASkB,WAAT,CAAqBL,GAArB,EAA0Bb,IAA1B,EAAgCjL,KAAhC,EAAuC;EACnCqC,EAAAA,MAAM,CAAC2K,cAAP,CAAsBlB,GAAtB,EAA2BT,MAAM,OAAN,CAAWJ,IAAX,CAA3B,EAA6C;EACzC/K,IAAAA,GAAG,EAAE;EAAA,aAAMF,KAAN;EAAA,KADoC;EAEzCuP,IAAAA,GAAG,EAAE,eAAM,EAF8B;EAGzCD,IAAAA,YAAY,EAAE,KAH2B;EAIzCrC,IAAAA,UAAU,EAAE;EAJ6B,GAA7C;EAMH;;;EAED,SAAS8Y,aAAT,CAAuBznB,EAAvB,EAA2B0D,MAA3B,EAAmC;EAC/B,MAAI;EACAK,IAAAA,MAAM,CAAC2K,cAAP,CAAsB1O,EAAtB,EAA0B,QAA1B,EAAoC;EAChC4B,MAAAA,GAAG,EAAE,eAAW;EACZ,eAAO8B,MAAP;EACH;EAH+B,KAApC;EAKA,WAAO1D,EAAP;EACH,GAPD,CAOE,OAAOW,CAAP,EAAU;EACR;EACA;EACA,QAAI8K,IAAI,GAAG,IAAIyD,KAAJ,CAAUxL,MAAV,EAAkBgkB,IAAlB,CAAuB,CAAvB,EAA0BpjB,GAA1B,CAA8B,UAACwE,CAAD,EAAIsD,CAAJ;EAAA,aAAU,MAAMA,CAAhB;EAAA,KAA9B,EAAiDnI,IAAjD,CAAsD,GAAtD,CAAX;EACA,QAAI0jB,OAAO,GAAG,IAAIC,QAAJ,gCAAqCnc,IAArC,2EAAd;EAGA,WAAOkc,OAAO,CAAC3nB,EAAD,CAAd;EACH;EACJ;;;EAED,SAASyY,SAAT,CAAmBjL,GAAnB,EAAwB;EACpB,SAAOA,GAAG,IAAIA,GAAG,CAAC+Z,UAAD,CAAjB;EACH;;;EAED,SAASM,SAAT,CAAmBra,GAAnB,EAAwB;EACpB,SAAOA,GAAG,IAAIA,GAAG,CAAC6Z,UAAD,CAAjB;EACH;;;EAED,SAASS,aAAT,CAAuB9nB,EAAvB,EAA2B;EACvB,SAAOyY,SAAS,CAACzY,EAAD,CAAT,IAAiB,CAACA,EAAE,CAACsnB,aAAD,CAApB,IACH,CAACO,SAAS,CAAC7nB,EAAD,CADP,IACe,CAAConB,cAAc,CAACpnB,EAAD,CADrC;EAEH;;;EAED,SAASmf,kBAAT,CAA4Bnf,EAA5B,EAAgC;EAC5B,MAAI+nB,OAAM,GAAGhb,MAAM,OAAN,CAAW,YAAX,CAAb;;EACA,SAAOyB,WAAW,CAACxO,EAAD,CAAX,IACHA,EAAE,CAACjB,QAAH,GAAcqG,KAAd,CAAoB,2BAApB,CADG,KAEDpF,EAAE,CAAC2M,IAAH,CAAQvH,KAAR,CAAc,SAAd,KAA4BpF,EAAE,CAAC+nB,OAAD,CAAF,KAAe,IAA5C,IACC,CAAC/nB,EAAE,CAAC2M,IAAH,CAAQvH,KAAR,CAAc,SAAd,CAAD,IAA6B,CAACpF,EAAE,CAAC+nB,OAAD,CAH/B,CAAP;EAIH;EAED;EACA;;;EACA,SAASC,SAAT,CAAmB9a,MAAnB,EAA2B;EACvB,MAAIP,IAAJ;;EACA,UAAQO,MAAR;EACI,SAAKH,MAAM,OAAN,CAAW,QAAX,CAAL;EACIJ,MAAAA,IAAI,GAAG,QAAP;EACA;;EACJ,SAAKI,MAAM,OAAN,CAAW,KAAX,CAAL;EACIJ,MAAAA,IAAI,GAAG,KAAP;EACA;;EACJ,SAAKI,MAAM,OAAN,CAAW,MAAX,CAAL;EACIJ,MAAAA,IAAI,GAAG,MAAP;EACA;;EACJ;EACI,YAAM,IAAI9F,KAAJ,CAAU,yBAAV,CAAN;EAXR;;EAaA,SAAOkQ,KAAK,CAACgL,QAAN,CAAepV,IAAf,EAAqB,UAASqJ,IAAT,EAAe3Q,OAAf,EAAwB;EAChD,QAAM+c,aAAN,GAA6C/c,OAA7C,CAAM+c,aAAN;EAAA,QAAqBlM,KAArB,GAA6C7Q,OAA7C,CAAqB6Q,KAArB;EAAA,QAA4BiM,YAA5B,GAA6C9c,OAA7C,CAA4B8c,YAA5B;EACA,QAAI1W,IAAJ,CAFgD;EAIhD;;EACA,QAAIuK,IAAI,CAACU,GAAL,YAAoBjN,OAAxB,EAAiC;EAC7B,UAAI,EAAEuM,IAAI,CAACH,GAAL,CAASa,GAAT,YAAwBZ,IAAxB,IAAgCE,IAAI,CAACH,GAAL,CAASa,GAAT,KAAiBhB,IAAnD,CAAJ,EAA6D;EACzD,cAAM,IAAI7O,KAAJ,CAAU,2BAAV,CAAN;EACH;;EACD,UAAIohB,MAAJ;;EACA,UAAIjS,IAAI,CAACH,GAAL,CAASa,GAAT,KAAiBhB,IAArB,EAA0B;EACtBjK,QAAAA,IAAI,GAAGiK,IAAP;EACAuS,QAAAA,MAAM,GAAGvS,IAAT;EACH,OAHD,MAGO;EACHuS,QAAAA,MAAM,GAAGjS,IAAI,CAACH,GAAL,CAASa,GAAT,CAAapS,GAAb,CAAiB,UAAAmS,IAAI;EAAA,iBAAIA,IAAI,CAACC,GAAT;EAAA,SAArB,CAAT;EACAjL,QAAAA,IAAI,GAAGuK,IAAI,CAACH,GAAL,CAASa,GAAT,CAAapS,GAAb,CAAiB,UAAAmS,IAAI;EAAA,iBAAIA,IAAI,CAACZ,GAAL,CAASa,GAAb;EAAA,SAArB,CAAP;EACH;;EACD,aAAOZ,IAAI,CAACkB,SAAL,CAAe,CAClBvN,OAAO,CAAC,QAAD,CADW,EAElB,CAAC,CAACuM,IAAI,CAACU,GAAN,EAAWZ,IAAI,CACZrM,OAAO,CAAC,QAAD,CADK,EAEZqM,IAAI,CAACmS,MAAD,EAASjS,IAAI,CAACH,GAAL,CAASA,GAAlB,CAFQ,CAAf,CAAD,CAFkB,EAKlBC,IAAI,CAACE,IAAI,CAACU,GAAN,EAAWjL,IAAX,CALc,CAAf,CAAP;EAOH,KAnBD,MAmBO,IAAI0W,YAAJ,EAAkB;EACrB;EACA;EACA;EACA;EACH;;EACD,QAAI5iB,IAAI,GAAG,IAAX;EACAkM,IAAAA,IAAI,GAAG9J,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BoU,IAAI,CAACU,GAAnC,CAAP;EACA,QAAI1B,GAAG,GAAGzV,IAAI,CAAC2oB,OAAL,CAAavb,IAAb,CAAV;EACA,QAAIsL,MAAJ,EAAYkQ,YAAZ;;EACA,QAAIxb,IAAI,KAAK,MAAb,EAAqB;EACjBwb,MAAAA,YAAY,GAAGnT,GAAf;EACH,KAFD,MAEO,IAAIrI,IAAI,KAAK,KAAb,EAAoB;EACvBsL,MAAAA,MAAM,GAAG,EAAT,CADuB;EAE1B;;EACD,QAAI7L,CAAC,GAAG,CAAR;;EACA,aAASgc,IAAT,GAAgB;EACZ,UAAI5kB,MAAM,GAAG,IAAIsS,IAAJ,CAAS,IAAIrM,OAAJ,CAAY,OAAZ,CAAT,EAA+BuM,IAAI,CAACH,GAApC,CAAb;EACA,aAAOI,SAAQ,CAACzS,MAAD,EAAS;EACpBwR,QAAAA,GAAG,EAAHA,GADoB;EAEpBoN,QAAAA,aAAa,EAAbA,aAFoB;EAGpBlM,QAAAA,KAAK,EAALA;EAHoB,OAAT,CAAf;EAKH;;EACD,WAAQ,SAASpD,IAAT,GAAgB;EACpB,UAAI2D,IAAI,GAAGhL,IAAI,CAACW,CAAC,EAAF,CAAf;;EACA,UAAIgW,aAAJ,EAAmB;EACfA,QAAAA,aAAa,GAAGzV,IAAI,KAAK,MAAT,GAAkBqI,GAAlB,GAAwBzV,IAAxC;EACH;;EACD,UAAI,CAACkX,IAAL,EAAW;EACP;EACA,YAAIwB,MAAM,IAAIA,MAAM,CAACvU,MAArB,EAA6B;EACzB,cAAI2K,CAAC,GAAG4J,MAAM,CAAC3T,GAAP,CAAW,UAAAlD,CAAC;EAAA,mBAAIA,CAAC,CAACM,KAAN;EAAA,WAAZ,CAAR;EACA,cAAI2mB,QAAQ,GAAGha,CAAC,CAACtC,MAAF,CAAS/J,UAAT,CAAf;;EACA,cAAIqmB,QAAQ,CAAC3kB,MAAb,EAAqB;EACjB,mBAAOuL,WAAW,CAACZ,CAAD,CAAX,CAAepM,IAAf,CAAoB,UAAC4O,GAAD,EAAS;EAChC,mBAAK,IAAIzE,CAAC,GAAG,CAAR,EAAW8F,GAAG,GAAGrB,GAAG,CAACnN,MAA1B,EAAkC0I,CAAC,GAAG8F,GAAtC,EAA2C,EAAE9F,CAA7C,EAAgD;EAC5C4I,gBAAAA,GAAG,CAAC/D,GAAJ,CAAQgH,MAAM,CAAC7L,CAAD,CAAN,CAAUO,IAAlB,EAAwBkE,GAAG,CAACzE,CAAD,CAA3B;EACH;EACJ,aAJM,EAIJnK,IAJI,CAICmmB,IAJD,CAAP;EAKH,WAND,MAMO;EAAA,yDACyBnQ,MADzB;EAAA;;EAAA;EACH,wEAAoC;EAAA;EAAA,oBAAzBtL,MAAyB,iBAAzBA,IAAyB;EAAA,oBAAnBjL,OAAmB,iBAAnBA,KAAmB;EAChCsT,gBAAAA,GAAG,CAAC/D,GAAJ,CAAQtE,MAAR,EAAcjL,OAAd;EACH;EAHE;EAAA;EAAA;EAAA;EAAA;EAIN;EACJ;;EACD,eAAO0mB,IAAI,EAAX;EACH,OAlBD,MAkBO;EACH,YAAIzb,IAAI,KAAK,KAAb,EAAoB;EAChBwb,UAAAA,YAAY,GAAG5oB,IAAf;EACH,SAFD,MAEO,IAAIoN,IAAI,KAAK,QAAb,EAAuB;EAC1Bwb,UAAAA,YAAY,GAAGnT,GAAf;EACH;;EACD,YAAItT,KAAK,GAAGuU,SAAQ,CAACQ,IAAI,CAACZ,GAAL,CAASa,GAAV,EAAe;EAC/B1B,UAAAA,GAAG,EAAEmT,YAD0B;EAE/B/F,UAAAA,aAAa,EAAbA,aAF+B;EAG/BlM,UAAAA,KAAK,EAALA;EAH+B,SAAf,CAApB;;EAKA,YAAIvJ,IAAI,KAAK,MAAb,EAAqB;EACjBwb,UAAAA,YAAY,GAAGnT,GAAG,GAAGmT,YAAY,CAACD,OAAb,CAAqB,UAAU9b,CAAV,GAAc,GAAnC,CAArB;EACH;;EACD,YAAI6L,MAAJ,EAAY;EACRA,UAAAA,MAAM,CAACpU,IAAP,CAAY;EAAE8I,YAAAA,IAAI,EAAE8J,IAAI,CAACC,GAAb;EAAkBhV,YAAAA,KAAK,EAALA;EAAlB,WAAZ;EACA,iBAAOoR,IAAI,EAAX;EACH,SAHD,MAGO;EACH,iBAAO4E,SAAS,CAAChW,KAAD,EAAQ,UAASA,KAAT,EAAgB;EACpCsT,YAAAA,GAAG,CAAC/D,GAAJ,CAAQwF,IAAI,CAACC,GAAb,EAAkBhV,KAAlB;EACA,mBAAOoR,IAAI,EAAX;EACH,WAHe,CAAhB;EAIH;EACJ;EACJ,KA/CM,EAAP;EAgDH,GAhGM,CAAP;EAiGH;;;EAED,SAASwV,OAAT,CAAiB3b,IAAjB,EAAuB3M,EAAvB,EAA2B;EACvB,SAAO,IAAI+W,KAAJ,CAAUpK,IAAV,EAAgB,UAASqJ,IAAT,EAA8C;EAAA,qFAAJ,EAAI;EAAA,QAA7BoM,aAA6B,UAA7BA,aAA6B;EAAA,QAAdlM,KAAc,UAAdA,KAAc;;EACjE,QAAIlB,GAAG,GAAG,IAAV;;EACA,QAAIoN,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG,IAAhB;EACH;;EACD,QAAIvF,IAAI,GAAG7G,IAAX;EACA,QAAIuS,OAAO,GAAG,EAAd;;EACA,WAAO1L,IAAI,YAAY/G,IAAvB,EAA6B;EACzByS,MAAAA,OAAO,CAAC1kB,IAAR,CAAaoS,SAAQ,CAAC4G,IAAI,CAACnG,GAAN,EAAW;EAAE1B,QAAAA,GAAG,EAAHA,GAAF;EAAOoN,QAAAA,aAAa,EAAbA,aAAP;EAAsBlM,QAAAA,KAAK,EAALA;EAAtB,OAAX,CAArB;EACA2G,MAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;;EACD,QAAI2S,YAAY,GAAGD,OAAO,CAACxc,MAAR,CAAe/J,UAAf,EAA2B0B,MAA9C;;EACA,QAAI8kB,YAAJ,EAAkB;EACd,aAAOvZ,WAAW,CAACsZ,OAAD,CAAX,CAAqBtmB,IAArB,CAA0BjC,EAAE,CAAC4lB,IAAH,CAAQ,IAAR,CAA1B,CAAP;EACH,KAFD,MAEO;EACH,aAAO5lB,EAAE,CAACc,IAAH,CAAQ,IAAR,EAAcynB,OAAd,CAAP;EACH;EACJ,GAjBM,CAAP;EAkBH;;;EAED,SAASE,eAAT,CAAyBzoB,EAAzB,EAAsC;EAAA,qCAANyL,IAAM;EAANA,IAAAA,IAAM;EAAA;;EAClCA,EAAAA,IAAI,CAACtI,OAAL,CAAa,UAAA+B,GAAG,EAAI;EAChBgY,IAAAA,SAAS,CAAC,EAAD,EAAKhY,GAAL,EAAU,QAAV,CAAT;EACH,GAFD;EAGA,SAAOlF,EAAE,MAAF,SAAMyL,IAAN,CAAP;EACH;;;EAED,SAASid,IAAT,GAAsB;EAAA;;EAAA,qCAALC,GAAK;EAALA,IAAAA,GAAK;EAAA;;EAClBA,EAAAA,GAAG,CAACxlB,OAAJ,CAAY,UAACnD,EAAD,EAAKoM,CAAL,EAAW;EACnB8Q,IAAAA,SAAS,CAAC,MAAD,EAASld,EAAT,EAAa,UAAb,EAAyBoM,CAAC,GAAG,CAA7B,CAAT;EACH,GAFD;EAGA,SAAO,YAAa;EAAA,uCAATX,IAAS;EAATA,MAAAA,IAAS;EAAA;;EAChB,WAAOkd,GAAG,CAAC/T,MAAJ,CAAW,UAACnJ,IAAD,EAAOmd,CAAP;EAAA,aAAa,CAACA,CAAC,CAACjd,KAAF,CAAQ,MAAR,EAAcF,IAAd,CAAD,CAAb;EAAA,KAAX,EAA+CA,IAA/C,EAAqD,CAArD,CAAP;EACH,GAFD;EAGH;;;EAED,SAASod,OAAT,GAAyB;EAAA,qCAALF,GAAK;EAALA,IAAAA,GAAK;EAAA;;EACrBA,EAAAA,GAAG,CAACxlB,OAAJ,CAAY,UAACnD,EAAD,EAAKoM,CAAL,EAAW;EACnB8Q,IAAAA,SAAS,CAAC,SAAD,EAAYld,EAAZ,EAAgB,UAAhB,EAA4BoM,CAAC,GAAG,CAAhC,CAAT;EACH,GAFD;EAGA,SAAOsc,IAAI,MAAJ,4BAAQC,GAAG,CAACrc,OAAJ,EAAR,EAAP;EACH;EAED;EACA;;;EACA,SAASwc,IAAT,CAAcnc,IAAd,EAAoBmc,IAApB,EAA0B;EACtB,MAAIvpB,IAAI,GAAG,IAAX;EACA,SAAO,SAAS0d,KAAT,CAAejd,EAAf,EAAmBnB,IAAnB,EAAmC;EACtCqe,IAAAA,SAAS,CAACvQ,IAAD,EAAO3M,EAAP,EAAW,UAAX,CAAT;;EADsC,wCAAP8jB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EAEtC,QAAIA,KAAK,CAAC1G,IAAN,CAAW0I,OAAX,CAAJ,EAAyB;EACrB,UAAI,OAAOjnB,IAAP,KAAgB,QAApB,EAA8B;EAC1B,eAAOoH,OAAO,CAACpH,IAAD,CAAd;EACH;;EACD,aAAOA,IAAP;EACH,KALD,MAKO;EACH,aAAOiqB,IAAI,CAAChoB,IAAL,OAAAgoB,IAAI,GAAMvpB,IAAN,EAAY0d,KAAZ,EAAmBjd,EAAnB,EAAuBnB,IAAvB,SAAgCilB,KAAhC,EAAX;EACH;EACJ,GAVD;EAWH;;;EAED,SAASiF,aAAT,CAAuB/hB,CAAvB,EAA0BhH,EAA1B,EAA8B;EAC1B;EACA,SAAOgpB,KAAK,CAAChiB,CAAC,GAAG,CAAL,EAAQiiB,KAAK,CAACR,eAAD,EAAkBzoB,EAAlB,CAAb,CAAZ;EACH;EAED;;;EACA,IAAIkpB,cAAc,GAAGD,KAAK,CAACF,aAAD,EAAgB,CAAhB,CAA1B;EACA,IAAII,cAAc,GAAGF,KAAK,CAACF,aAAD,EAAgB,CAAhB,CAA1B;;EAEA,SAASK,cAAT,CAAwBppB,EAAxB,EAAyC;EAAA,MAAbnB,IAAa,uEAAN,IAAM;EACrC,SAAO,YAAkB;EAAA,wCAAN4M,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACrB,QAAI5M,IAAI,KAAK,IAAb,EAAmB;EACf4M,MAAAA,IAAI,IAAI5M,IAAJ,4BAAa4M,IAAb,EAAJ;EACH;;EACD,WAAOA,IAAI,CAACmJ,MAAL,CAAYuU,cAAc,CAACnpB,EAAD,CAA1B,CAAP;EACH,GALD;EAMH;;;EAED,SAASipB,KAAT,CAAejpB,EAAf,EAAiC;EAAA,sCAAXqpB,SAAW;EAAXA,IAAAA,SAAW;EAAA;;EAC7BnM,EAAAA,SAAS,CAAC,OAAD,EAAUld,EAAV,EAAc,UAAd,CAAT;EACA,MAAIkS,GAAG,GAAGlS,EAAE,CAAC0D,MAAb;EACA,SAAO,YAAW;EACd,QAAI+H,IAAI,GAAG4d,SAAS,CAAChd,KAAV,EAAX;;EACA,aAASvL,IAAT,GAA4B;EAAA,0CAAXwoB,SAAW;EAAXA,QAAAA,SAAW;EAAA;;EACxB7d,MAAAA,IAAI,GAAGA,IAAI,CAAC6H,MAAL,CAAYgW,SAAZ,CAAP;;EACA,UAAI7d,IAAI,CAAC/H,MAAL,IAAewO,GAAnB,EAAwB;EACpB,eAAOlS,EAAE,CAAC2L,KAAH,CAAS,IAAT,EAAeF,IAAf,CAAP;EACH,OAFD,MAEO;EACH,eAAO3K,IAAP;EACH;EACJ;;EACD,WAAOA,IAAI,CAAC6K,KAAL,CAAW,IAAX,EAAiBpK,SAAjB,CAAP;EACH,GAXD;EAYH;EAED;;;EACA,SAASynB,KAAT,CAAehiB,CAAf,EAAkBhH,EAAlB,EAAsB;EAClBkd,EAAAA,SAAS,CAAC,OAAD,EAAUld,EAAV,EAAc,UAAd,EAA0B,CAA1B,CAAT;EACA,SAAO,YAAkB;EAAA,wCAANyL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACrB,WAAOzL,EAAE,MAAF,4BAAMyL,IAAI,CAACY,KAAL,CAAW,CAAX,EAAcrF,CAAd,CAAN,EAAP;EACH,GAFD;EAGH;EAED;EACA;;;EACA,SAASJ,UAAT,CAAoBJ,MAApB,EAA0B;EACtB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBI,UAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,UAAJ,CAAeJ,MAAf,CAAP;EACH;;EACD,MAAIA,MAAI,YAAYyC,OAApB,EAA6B;EACzBzC,IAAAA,MAAI,GAAGA,MAAI,CAACL,OAAL,EAAP;EACH;;EACD,MAAIwG,IAAJ;;EACA,MAAIuC,KAAK,CAACqa,IAAN,CAAW/iB,MAAX,EAAiB9C,MAAjB,GAA0B,CAA9B,EAAiC;EAC7B;EACA8C,IAAAA,MAAI,GAAGA,MAAI,CAACjB,WAAL,EAAP;;EACA,QAAIqB,UAAU,CAAC4iB,SAAX,CAAqBhjB,MAArB,CAAJ,EAAgC;EAC5BmG,MAAAA,IAAI,GAAGnG,MAAP;EACAA,MAAAA,MAAI,GAAGI,UAAU,CAAC4iB,SAAX,CAAqBhjB,MAArB,CAAP;EACH,KAHD,MAGO;EACH;EACA;EACA,YAAM,IAAIK,KAAJ,CAAU,mCAAV,CAAN;EACH;EACJ,GAXD,MAWO;EACH8F,IAAAA,IAAI,GAAG/F,UAAU,CAAC6iB,aAAX,CAAyBjjB,MAAzB,CAAP;EACH;;EACDzC,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;EACpChN,IAAAA,KAAK,EAAE8E,MAD6B;EAEpCmI,IAAAA,UAAU,EAAE;EAFwB,GAAxC;;EAIA,MAAIhC,IAAJ,EAAU;EACN5I,IAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;EACpChN,MAAAA,KAAK,EAAEiL,IAD6B;EAEpCgC,MAAAA,UAAU,EAAE;EAFwB,KAAxC;EAIH;EACJ;;EACD/H,UAAU,CAAC4iB,SAAX,GAAuBnmB,UAAvB;EACAuD,UAAU,CAAC6iB,aAAX,GAA2B,EAA3B;EACA1lB,MAAM,CAACC,IAAP,CAAY4C,UAAU,CAAC4iB,SAAvB,EAAkCrmB,OAAlC,CAA0C,UAAAoT,GAAG,EAAI;EAC7C,MAAI7U,KAAK,GAAGkF,UAAU,CAAC4iB,SAAX,CAAqBjT,GAArB,CAAZ;EACA3P,EAAAA,UAAU,CAAC6iB,aAAX,CAAyB/nB,KAAzB,IAAkC6U,GAAlC;EACH,CAHD;;EAIA3P,UAAU,CAAC0D,SAAX,CAAqBof,WAArB,GAAmC,YAAW;EAC1C,SAAO9iB,UAAU,CAAC,KAAK0a,QAAL,CAAcoI,WAAd,EAAD,CAAjB;EACH,CAFD;;EAGA9iB,UAAU,CAAC0D,SAAX,CAAqB/E,WAArB,GAAmC,YAAW;EAC1C,SAAOqB,UAAU,CAAC,KAAK0a,QAAL,CAAc/b,WAAd,EAAD,CAAjB;EACH,CAFD;;EAGAqB,UAAU,CAAC0D,SAAX,CAAqBvL,QAArB,GAAgC,YAAW;EACvC,SAAO,SAAS,KAAK+N,QAAL,IAAiB,KAAKwU,QAA/B,CAAP;EACH,CAFD;;EAGA1a,UAAU,CAAC0D,SAAX,CAAqBnE,OAArB,GAA+BS,UAAU,CAAC0D,SAAX,CAAqBgD,SAArB,GAAiC,YAAW;EACvE,SAAO,KAAKgU,QAAZ;EACH,CAFD;EAIA;EACA;;;EACA,SAASrY,OAAT,CAAiB1F,MAAjB,EAAyB;EACrB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB0F,OAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,OAAJ,CAAY1F,MAAZ,CAAP;EACH;;EACD,MAAIA,MAAM,YAAY2L,KAAtB,EAA6B;EACzB,SAAKya,UAAL,GAAkBpmB,MAAM,CAACe,GAAP,CAAW,UAAClD,CAAD,EAAIgL,CAAJ,EAAU;EACnC8Q,MAAAA,SAAS,CAAC,SAAD,EAAY9b,CAAZ,EAAe,WAAf,EAA4BgL,CAAC,GAAG,CAAhC,CAAT;EACA,aAAOhL,CAAC,CAACrC,QAAF,EAAP;EACH,KAHiB,EAGfkF,IAHe,CAGV,EAHU,CAAlB;EAIH,GALD,MAKO;EACH,SAAK0lB,UAAL,GAAkBpmB,MAAM,CAAC4C,OAAP,EAAlB;EACH;EACJ;;EACD;EACI,MAAMyjB,MAAM,GAAG,CAAC,QAAD,EAAW,aAAX,CAAf;;EACA,MAAMC,KAAK,GAAG9lB,MAAM,CAACoa,mBAAP,CAA2BzX,MAAM,CAAC4D,SAAlC,EAA6CyB,MAA7C,CAAoD,UAAAY,IAAI,EAAI;EACtE,WAAO,CAACid,MAAM,CAACnkB,QAAP,CAAgBkH,IAAhB,CAAR;EACH,GAFa,CAAd;;EAGA,MAAMmd,IAAI,GAAG,SAAPA,IAAO,CAAC9pB,EAAD;EAAA,WAAQ,YAAkB;EAAA,0CAANyL,IAAM;EAANA,QAAAA,IAAM;EAAA;;EACnC,aAAOzL,EAAE,CAAC2L,KAAH,CAAS,KAAKge,UAAd,EAA0Ble,IAA1B,CAAP;EACH,KAFY;EAAA,GAAb;;EALJ,+CAQoBoe,KARpB;EAAA;;EAAA;EAQI,8DAAuB;EAAA,UAAdtT,GAAc;EACnBtN,MAAAA,OAAO,CAACqB,SAAR,CAAkBiM,GAAlB,IAAyBuT,IAAI,CAACpjB,MAAM,CAAC4D,SAAP,CAAiBiM,GAAjB,CAAD,CAA7B;EACH;EAVL;EAAA;EAAA;EAAA;EAAA;EAWC;;EACDtN,OAAO,CAACqB,SAAR,CAAkBgD,SAAlB,GAA8B,YAAW;EACrC,SAAO,KAAKnH,OAAL,EAAP;EACH,CAFD;;EAGA8C,OAAO,CAACsE,QAAR,GAAmB,UAASnM,CAAT,EAAY;EAC3B,SAAOA,CAAC,YAAY6H,OAAb,IAAwB,OAAO7H,CAAP,KAAa,QAA5C;EACH,CAFD;;EAGA6H,OAAO,CAACqB,SAAR,CAAkB1I,GAAlB,GAAwB,UAASoF,CAAT,EAAY;EAChCkW,EAAAA,SAAS,CAAC,cAAD,EAAiBlW,CAAjB,EAAoB,QAApB,CAAT;EACA,SAAOkI,KAAK,CAACqa,IAAN,CAAW,KAAKI,UAAhB,EAA4B3iB,CAAC,CAACb,OAAF,EAA5B,CAAP;EACH,CAHD;;EAIA8C,OAAO,CAACqB,SAAR,CAAkB3C,GAAlB,GAAwB,UAASpE,MAAT,EAAiB;EACrC2Z,EAAAA,SAAS,CAAC,cAAD,EAAiB3Z,MAAjB,EAAyB,QAAzB,CAAT;EACA,MAAIiR,CAAC,GAAG,KAAKrO,OAAL,EAAR;EACA,MAAIsO,CAAC,GAAGlR,MAAM,CAAC4C,OAAP,EAAR;;EACA,MAAIqO,CAAC,GAAGC,CAAR,EAAW;EACP,WAAO,CAAC,CAAR;EACH,GAFD,MAEO,IAAID,CAAC,KAAKC,CAAV,EAAa;EAChB,WAAO,CAAP;EACH,GAFM,MAEA;EACH,WAAO,CAAP;EACH;EACJ,CAXD;;EAYAxL,OAAO,CAACqB,SAAR,CAAkByf,KAAlB,GAA0B,YAAW;EACjC,SAAO9gB,OAAO,CAAC,KAAK0gB,UAAL,CAAgBpkB,WAAhB,EAAD,CAAd;EACH,CAFD;;EAGA0D,OAAO,CAACqB,SAAR,CAAkB0f,KAAlB,GAA0B,YAAW;EACjC,SAAO/gB,OAAO,CAAC,KAAK0gB,UAAL,CAAgBD,WAAhB,EAAD,CAAd;EACH,CAFD;;EAGAzgB,OAAO,CAACqB,SAAR,CAAkB2G,GAAlB,GAAwB,UAASjK,CAAT,EAAYR,MAAZ,EAAkB;EACtC0W,EAAAA,SAAS,CAAC,cAAD,EAAiBlW,CAAjB,EAAoB,QAApB,CAAT;EACAkW,EAAAA,SAAS,CAAC,cAAD,EAAiB1W,MAAjB,EAAuB,CAAC,QAAD,EAAW,WAAX,CAAvB,CAAT;EACAQ,EAAAA,CAAC,GAAGA,CAAC,CAACb,OAAF,EAAJ;;EACA,MAAIK,MAAI,YAAYI,UAApB,EAAgC;EAC5BJ,IAAAA,MAAI,GAAGA,MAAI,CAAC8a,QAAZ;EACH;;EACD,MAAI/d,MAAM,GAAG,EAAb;;EACA,MAAIyD,CAAC,GAAG,CAAR,EAAW;EACPzD,IAAAA,MAAM,CAACM,IAAP,CAAY,KAAK8lB,UAAL,CAAgB1X,SAAhB,CAA0B,CAA1B,EAA6BjL,CAA7B,CAAZ;EACH;;EACDzD,EAAAA,MAAM,CAACM,IAAP,CAAY2C,MAAZ;;EACA,MAAIQ,CAAC,GAAG,KAAK2iB,UAAL,CAAgBjmB,MAAhB,GAAyB,CAAjC,EAAoC;EAChCH,IAAAA,MAAM,CAACM,IAAP,CAAY,KAAK8lB,UAAL,CAAgB1X,SAAhB,CAA0BjL,CAAC,GAAG,CAA9B,CAAZ;EACH;;EACD,OAAK2iB,UAAL,GAAkBpmB,MAAM,CAACU,IAAP,CAAY,EAAZ,CAAlB;EACH,CAhBD;;EAiBAF,MAAM,CAAC2K,cAAP,CAAsBzF,OAAO,CAACqB,SAA9B,EAAyC,QAAzC,EAAmD;EAC/C1I,EAAAA,GAAG,EAAE,eAAW;EACZ,WAAO,KAAK+nB,UAAL,CAAgBjmB,MAAvB;EACH;EAH8C,CAAnD;;EAKAuF,OAAO,CAACqB,SAAR,CAAkB+S,KAAlB,GAA0B,YAAW;EACjC,SAAOpU,OAAO,CAAC,KAAK9C,OAAL,EAAD,CAAd;EACH,CAFD;;EAGA8C,OAAO,CAACqB,SAAR,CAAkBod,IAAlB,GAAyB,UAASlhB,MAAT,EAAe;EACpC0W,EAAAA,SAAS,CAAC,eAAD,EAAkB1W,MAAlB,EAAwB,CAAC,QAAD,EAAW,WAAX,CAAxB,CAAT;;EACA,MAAIA,MAAI,YAAYI,UAApB,EAAgC;EAC5BJ,IAAAA,MAAI,GAAGA,MAAI,CAACzH,QAAL,EAAP;EACH;;EACD,MAAImT,GAAG,GAAG,KAAKyX,UAAL,CAAgBjmB,MAA1B;EACA,OAAKimB,UAAL,GAAkB,IAAIza,KAAJ,CAAUgD,GAAG,GAAG,CAAhB,EAAmBjO,IAAnB,CAAwBuC,MAAxB,CAAlB;EACH,CAPD;EASA;EACA;;;EACA,SAASP,OAAT,CAAiBe,CAAjB,EAAmC;EAAA,MAAfijB,KAAe,uEAAP,KAAO;;EAC/B,MAAIjjB,CAAC,YAAYf,OAAjB,EAA0B;EACtB,WAAOe,CAAP;EACH;;EACD,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBf,OAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,OAAJ,CAAYe,CAAZ,EAAeijB,KAAf,CAAP;EACH;;EACD,MAAI,OAAOjjB,CAAP,KAAa,WAAjB,EAA8B;EAC1B,UAAM,IAAIH,KAAJ,CAAU,kCAAV,CAAN;EACH;;EACD,MAAIqjB,KAAK,GAAGjkB,OAAO,CAACkkB,OAAR,CAAgBnjB,CAAhB,CAAZ;;EACA,MAAIf,OAAO,CAACmkB,KAAR,CAAcF,KAAd,CAAJ,EAA0B;EACtB,WAAOjkB,OAAO,CAACmkB,KAAR,CAAcF,KAAd,EAAqBljB,CAArB,EAAwBijB,KAAxB,CAAP;EACH;;EACD,MAAII,QAAQ,GAAGrjB,CAAC,YAAYkI,KAAb,IAAsBjG,OAAO,CAACsE,QAAR,CAAiBvG,CAAC,CAAC,CAAD,CAAlB,CAAtB,IACXf,OAAO,CAACsd,QAAR,CAAiBvc,CAAC,CAAC,CAAD,CAAlB,CADJ;;EAEA,MAAIA,CAAC,YAAYf,OAAjB,EAA0B;EACtB,WAAOA,OAAO,CAACe,CAAC,CAACtF,KAAH,CAAd;EACH;;EACD,MAAI,CAACuE,OAAO,CAACsd,QAAR,CAAiBvc,CAAjB,CAAD,IAAwB,CAACqjB,QAA7B,EAAuC;EACnC,UAAM,IAAIxjB,KAAJ,yCAA2CjG,IAAI,CAACoG,CAAD,CAA/C,EAAN;EACH,GAtB8B;;;EAwB/B,MAAIA,CAAC,KAAK,IAAV,EAAgB;EACZA,IAAAA,CAAC,GAAG,CAAJ;EACH;;EACD,MAAItF,KAAJ;;EACA,MAAI2oB,QAAJ,EAAc;EACV,aAAmBrjB,CAAnB;EAAA;EAAA,QAAKgB,GAAL;EAAA,QAAU5E,KAAV;;EACA,QAAI4E,GAAG,YAAYiB,OAAnB,EAA4B;EACxBjB,MAAAA,GAAG,GAAGA,GAAG,CAAC7B,OAAJ,EAAN;EACH;;EACD,QAAI/C,KAAK,YAAY6C,OAArB,EAA8B;EAC1B7C,MAAAA,KAAK,GAAGA,KAAK,CAAC+C,OAAN,EAAR;EACH;;EACD,QAAImkB,IAAI,GAAGtiB,GAAG,CAAC5C,KAAJ,CAAU,SAAV,CAAX;EACA,QAAImlB,KAAK,GAAG,KAAZ;;EACA,QAAID,IAAJ,EAAU;EACNtiB,MAAAA,GAAG,GAAGA,GAAG,CAAC1C,OAAJ,CAAY,OAAZ,EAAqB,EAArB,CAAN;;EACA,UAAIglB,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAhB,EAAqB;EACjBC,QAAAA,KAAK,GAAG,IAAR;EACH;EACJ;EACJ;;EACD,MAAIljB,MAAM,CAACuW,KAAP,CAAa5W,CAAb,CAAJ,EAAqB;EACjB,WAAOX,MAAM,CAACW,CAAD,CAAb;EACH,GAFD,MAEO,IAAI,OAAOwjB,MAAP,KAAkB,WAAtB,EAAmC;EACtC,QAAI,OAAOxjB,CAAP,KAAa,QAAjB,EAA2B;EACvB,UAAIqjB,QAAJ,EAAc;EACV,YAAII,MAAJ,CADU;;EAGV,gBAAQrnB,KAAR;EACI,eAAK,CAAL;EACIqnB,YAAAA,MAAM,GAAG,IAAT;EACA;;EACJ,eAAK,EAAL;EACIA,YAAAA,MAAM,GAAG,IAAT;EACA;;EACJ,eAAK,CAAL;EACIA,YAAAA,MAAM,GAAG,IAAT;EACA;;EACJ,eAAK,EAAL;EACIA,YAAAA,MAAM,GAAG,EAAT;EACA;EAZR;;EAcA,YAAI,OAAOA,MAAP,KAAkB,WAAtB,EAAmC;EAC/B;EACA,cAAIC,OAAO,GAAGF,MAAM,CAACpnB,KAAD,CAApB;EACA1B,UAAAA,KAAK,GAAG,mBAAIsG,GAAJ,EAAS1D,GAAT,CAAa,UAAClD,CAAD,EAAIgL,CAAJ,EAAU;EAC3B,mBAAOoe,MAAM,CAAClkB,QAAQ,CAAClF,CAAD,EAAIgC,KAAJ,CAAT,CAAN,GAA6BuF,GAAG,CAAC+hB,OAAD,EAAUF,MAAM,CAACpe,CAAD,CAAhB,CAAvC;EACH,WAFO,EAELwI,MAFK,CAEE,UAACJ,CAAD,EAAIC,CAAJ;EAAA,mBAAUD,CAAC,GAAGC,CAAd;EAAA,WAFF,CAAR;EAGH,SAND,MAMO;EACH/S,UAAAA,KAAK,GAAG8oB,MAAM,CAACC,MAAM,GAAGziB,GAAV,CAAd;EACH;EACJ,OA1BD,MA0BO;EACHtG,QAAAA,KAAK,GAAG8oB,MAAM,CAACxjB,CAAD,CAAd;EACH;;EACD,UAAIujB,KAAJ,EAAW;EACP7oB,QAAAA,KAAK,IAAI8oB,MAAM,CAAC,CAAC,CAAF,CAAf;EACH;EACJ,KAjCD,MAiCO;EACH9oB,MAAAA,KAAK,GAAGsF,CAAR;EACH;;EACD,WAAO2jB,WAAW,CAACjpB,KAAD,EAAQ,IAAR,CAAlB;EACH,GAtCM,MAsCA,IAAI,OAAO7B,EAAP,KAAc,WAAd,IAA6B,EAAEmH,CAAC,YAAYnH,EAAf,CAAjC,EAAqD;EACxD,QAAImH,CAAC,YAAYkI,KAAjB,EAAwB;EACpB,aAAOyb,WAAW,YAAK9qB,EAAL,qBAAWmH,CAAX,GAAlB;EACH;;EACD,WAAO2jB,WAAW,CAAC,IAAI9qB,EAAJ,CAAOmH,CAAP,CAAD,CAAlB;EACH,GALM,MAKA,IAAIqjB,QAAJ,EAAc;EACjB,SAAKO,QAAL,CAActkB,QAAQ,CAAC0B,GAAD,EAAM5E,KAAN,CAAtB,EAAoC,SAApC;EACH,GAFM,MAEA;EACH,SAAKwnB,QAAL,CAAc5jB,CAAd,EAAiB,SAAjB;EACH;EACJ;;;EAEDf,OAAO,CAACqE,SAAR,CAAkBsgB,QAAlB,GAA6B,UAASlpB,KAAT,EAAgBd,IAAhB,EAAsB;EAC/CmD,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACrChN,IAAAA,KAAK,EAALA,KADqC;EAErCiN,IAAAA,UAAU,EAAE;EAFyB,GAAzC;EAIA5K,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;EACpChN,IAAAA,KAAK,EAAEd,IAD6B;EAEpC+N,IAAAA,UAAU,EAAE;EAFwB,GAAxC;EAIH,CATD;;;EAWA1I,OAAO,CAACmkB,KAAR,GAAgB;EACZ,WAAO,eAASpjB,CAAT,EAA2B;EAAA,QAAfijB,KAAe,uEAAP,KAAO;EAC9B,WAAO,IAAI5jB,MAAJ,CAAWW,CAAX,EAAcijB,KAAd,CAAP;EACH,GAHW;EAIZY,EAAAA,OAAO,EAAE,iBAAS7jB,CAAT,EAA2B;EAAA,QAAfijB,KAAe,uEAAP,KAAO;;EAChC,QAAI,CAAChkB,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAL,EAA2B;EACvBA,MAAAA,CAAC,GAAG;EAAEU,QAAAA,EAAE,EAAE,CAAN;EAASD,QAAAA,EAAE,EAAET;EAAb,OAAJ;EACH;;EACD,WAAO,IAAIa,QAAJ,CAAab,CAAb,EAAgBijB,KAAhB,CAAP;EACH,GATW;EAUZc,EAAAA,QAAQ,EAAE,kBAAS/jB,CAAT,EAA2B;EAAA,QAAfijB,KAAe,uEAAP,KAAO;;EACjC,QAAI,CAAChkB,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAL,EAA4B;EACxBA,MAAAA,CAAC,GAAG;EAAEjB,QAAAA,GAAG,EAAEiB,CAAP;EAAUd,QAAAA,KAAK,EAAE;EAAjB,OAAJ;EACH;;EACD,WAAO,IAAIF,SAAJ,CAAcgB,CAAd,EAAiBijB,KAAjB,CAAP;EACH;EAfW,CAAhB;;EAkBAhkB,OAAO,CAACqE,SAAR,CAAkBgD,SAAlB,GAA8B,YAAW;EACrC,SAAO,KAAK2d,SAAZ;EACH,CAFD;;;EAIAhlB,OAAO,CAACqE,SAAR,CAAkBsT,KAAlB,GAA0B,YAAW;EACjC,SAAOvW,MAAM,CAACuW,KAAP,CAAa,KAAKqN,SAAlB,CAAP;EACH,CAFD;;;EAIAhlB,OAAO,CAACqE,SAAR,CAAkB4gB,GAAlB,GAAwB,UAASzW,CAAT,EAAY;EAChC;EACA,MAAID,CAAC,GAAG,KAAKjM,GAAL,EAAR;EACAkM,EAAAA,CAAC,GAAGA,CAAC,CAAClM,GAAF,EAAJ;;EACA,MAAIkM,CAAC,CAAC9M,GAAF,CAAM6M,CAAN,MAAa,CAAjB,EAAoB;EAChB,QAAI2W,IAAI,GAAG3W,CAAX;EACAA,IAAAA,CAAC,GAAGC,CAAJ;EACAA,IAAAA,CAAC,GAAG0W,IAAJ;EACH;;EACD,SAAO,IAAP,EAAa;EACT3W,IAAAA,CAAC,GAAGA,CAAC,CAAC/T,GAAF,CAAMgU,CAAN,CAAJ;;EACA,QAAID,CAAC,CAAC7M,GAAF,CAAM,CAAN,MAAa,CAAjB,EAAoB;EAChB,aAAO8M,CAAP;EACH;;EACDA,IAAAA,CAAC,GAAGA,CAAC,CAAChU,GAAF,CAAM+T,CAAN,CAAJ;;EACA,QAAIC,CAAC,CAAC9M,GAAF,CAAM,CAAN,MAAa,CAAjB,EAAoB;EAChB,aAAO6M,CAAP;EACH;EACJ;EACJ,CAnBD;;;EAqBAvO,OAAO,CAACmlB,OAAR,GAAkB,SAASA,OAAT,CAAiBpkB,CAAjB,EAAoB;EAClC,SAAOA,CAAC,YAAYX,MAAb,IAAwBgB,MAAM,CAACL,CAAD,CAAN,KAAcA,CAAd,IAAmBA,CAAC,GAAG,CAAJ,KAAU,CAA5D;EACH,CAFD;;;EAIAf,OAAO,CAACsd,QAAR,GAAmB,UAASvc,CAAT,EAAY;EAC3B,SAAOA,CAAC,YAAYf,OAAb,IACFA,OAAO,CAAColB,QAAR,CAAiBrkB,CAAjB,KAAuBf,OAAO,CAACqlB,IAAR,CAAatkB,CAAb,CAD5B;EAEH,CAHD;;;EAKAf,OAAO,CAAC6kB,SAAR,GAAoB,UAAS9jB,CAAT,EAAY;EAC5B,MAAI,CAACA,CAAL,EAAQ;EACJ,WAAO,KAAP;EACH;;EACD,MAAI2Q,GAAG,GAAG3Q,CAAC,YAAYa,QAAb,IACL,CAAC5B,OAAO,CAACsd,QAAR,CAAiBvc,CAAC,CAACU,EAAnB,KAA0BL,MAAM,CAACuW,KAAP,CAAa5W,CAAC,CAACU,EAAf,CAA3B,MACCzB,OAAO,CAACsd,QAAR,CAAiBvc,CAAC,CAACS,EAAnB,KAA0BJ,MAAM,CAACuW,KAAP,CAAa5W,CAAC,CAACS,EAAf,CAD3B,CADL;EAGA,SAAOkQ,GAAP;EACH,CARD;;;EAUA1R,OAAO,CAAC+kB,UAAR,GAAqB,UAAShkB,CAAT,EAAY;EAC7B,MAAI,CAACA,CAAL,EAAQ;EACJ,WAAO,KAAP;EACH;;EACD,SAAOA,CAAC,YAAYhB,SAAb,IACFC,OAAO,CAACsd,QAAR,CAAiBvc,CAAC,CAACjB,GAAnB,KAA2BE,OAAO,CAACsd,QAAR,CAAiBvc,CAAC,CAACd,KAAnB,CADhC;EAEH,CAND;;;EAQAD,OAAO,CAACslB,SAAR,GAAoB,UAASvkB,CAAT,EAAY;EAC5B,MAAI,EAAEf,OAAO,CAAColB,QAAR,CAAiBrkB,CAAjB,KAAuBA,CAAC,YAAYf,OAAtC,CAAJ,EAAoD;EAChD,WAAO,KAAP;EACH;;EACD,MAAIA,OAAO,CAACmlB,OAAR,CAAgBpkB,CAAhB,CAAJ,EAAwB;EACpB,WAAO,KAAP;EACH;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,WAAO,KAAP;EACH;;EACD,MAAIf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAJ,EAA0B;EACtB,WAAO,KAAP;EACH;;EACD,SAAO,IAAP;EACH,CAdD;;;EAgBAf,OAAO,CAAColB,QAAR,GAAmB,UAASrkB,CAAT,EAAY;EAC3B,SAAO,OAAOA,CAAP,KAAa,QAAb,IAAyB,OAAOA,CAAP,KAAa,QAA7C;EACH,CAFD;;;EAIAf,OAAO,CAACulB,YAAR,GAAuB,UAASxkB,CAAT,EAAY;EAC/B,SAAOA,CAAC,YAAY2jB,WAAb,IAA4B,OAAO3jB,CAAP,KAAa,QAAzC,IACHf,OAAO,CAACqlB,IAAR,CAAatkB,CAAb,CADJ;EAEH,CAHD;;;EAKAf,OAAO,CAACqlB,IAAR,GAAe,UAAStkB,CAAT,EAAY;EACvB,SAAO,OAAOnH,EAAP,KAAc,WAAd,IAA6BmH,CAAC,YAAYnH,EAAjD;EACH,CAFD;;;EAIAoG,OAAO,CAACwlB,WAAR,GAAsB,UAASjX,CAAT,EAAYC,CAAZ,EAAe;EACjC,MAAID,CAAC,YAAYnO,MAAb,IAAuBoO,CAAC,YAAYpO,MAAxC,EAAgD;EAC5C,WAAOA,MAAP;EACH;;EACD,MAAImO,CAAC,YAAYmW,WAAb,IAA4BlW,CAAC,YAAYkW,WAA7C,EAA0D;EACtD,WAAOA,WAAP;EACH;;EACD,SAAO1kB,OAAP;EACH,CARD;;;EAUAA,OAAO,CAACqE,SAAR,CAAkBvL,QAAlB,GAA6B,UAASqE,KAAT,EAAgB;EACzC,MAAIiE,MAAM,CAACuW,KAAP,CAAa,KAAKqN,SAAlB,CAAJ,EAAkC;EAC9B,WAAO,QAAP;EACH;;EACD,MAAI7nB,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG,EAAzB,EAA6B;EACzB,WAAO,KAAK6nB,SAAL,CAAelsB,QAAf,CAAwBqE,KAAxB,CAAP;EACH;;EACD,SAAO,KAAK6nB,SAAL,CAAelsB,QAAf,EAAP;EACH,CARD;;;EAUAkH,OAAO,CAACqE,SAAR,CAAkBohB,MAAlB,GAA2B,UAAS1kB,CAAT,EAAY;EACnC,MAAIkjB,KAAK,GAAGjkB,OAAO,CAACkkB,OAAR,CAAgB,IAAhB,CAAZ;;EACA,SAAOlkB,OAAO,CAACmkB,KAAR,CAAcF,KAAd,IAAuBjkB,OAAO,CAACmkB,KAAR,CAAcF,KAAd,EAAqBljB,CAArB,CAAvB,GAAiDf,OAAO,CAACe,CAAD,CAA/D;EACH,CAHD;;;EAKAf,OAAO,CAACqE,SAAR,CAAkBqhB,WAAlB,GAAgC,YAAW;EACvC,SAAO,OAAO,KAAKV,SAAZ,KAA0B,QAA1B,IACH,OAAOprB,EAAP,KAAc,WAAd,IAA6B,EAAE,KAAK6B,KAAL,YAAsB7B,EAAxB,CADjC;EAEH,CAHD;;;EAKA,CAAC,OAAD,EAAU,MAAV,EAAkB,OAAlB,EAA2BsD,OAA3B,CAAmC,UAAAnD,EAAE,EAAI;EACrCiG,EAAAA,OAAO,CAACqE,SAAR,CAAkBtK,EAAlB,IAAwB,YAAW;EAC/B,QAAI,iBAAciG,OAAO,CAACmlB,OAAR,CAAgB,KAAKH,SAArB,CAAlB,EAAmD;EAC/C,aAAOhlB,OAAO,CAACqC,IAAI,CAACtI,EAAD,CAAJ,CAAS,KAAKirB,SAAd,CAAD,CAAd;EACH,KAFD,MAEO;EACH,aAAOhlB,OAAO,CAACqC,IAAI,CAACtI,EAAD,CAAJ,CAAS,KAAKmG,OAAL,EAAT,CAAD,CAAd;EACH;EACJ,GAND;EAOH,CARD;;EAUAF,OAAO,CAACqE,SAAR,CAAkBnE,OAAlB,GAA4B,YAAW;EACnC,MAAIF,OAAO,CAAColB,QAAR,CAAiB,KAAKJ,SAAtB,CAAJ,EAAsC;EAClC,WAAO5jB,MAAM,CAAC,KAAK4jB,SAAN,CAAb;EACH,GAFD,MAEO,IAAIhlB,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,CAAJ,EAAkC;EACrC,WAAO,KAAKA,SAAL,CAAeW,QAAf,EAAP;EACH;EACJ,CAND;EAQA;EACA;;;EACA,IAAMC,MAAM,GAAI,YAAW;EACvB,MAAIzf,CAAC,GAAG,SAAJA,CAAI,CAACoI,CAAD,EAAIC,CAAJ;EAAA,WAAU,CAACD,CAAD,EAAIC,CAAJ,CAAV;EAAA,GAAR;;EACA,SAAO;EACHqX,IAAAA,MAAM,EAAE;EACJA,MAAAA,MAAM,EAAE1f,CADJ;EAEJ,eAAO,eAACoI,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACpO,MAAM,CAACmO,CAAC,CAACrO,OAAF,EAAD,CAAP,EAA4BsO,CAA5B,CAAV;EAAA,OAFH;EAGJsW,MAAAA,QAAQ,EAAE,kBAACvW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAAC;EAAE1O,UAAAA,GAAG,EAAEyO,CAAP;EAAUtO,UAAAA,KAAK,EAAE;EAAjB,SAAD,EAAuBuO,CAAvB,CAAV;EAAA,OAHN;EAIJoW,MAAAA,OAAO,EAAE,iBAACrW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAAC;EAAE/M,UAAAA,EAAE,EAAE,CAAN;EAASD,UAAAA,EAAE,EAAE+M;EAAb,SAAD,EAAmBC,CAAnB,CAAV;EAAA;EAJL,KADL;EAOHsX,IAAAA,OAAO,EAAE;EACLA,MAAAA,OAAO,EAAE3f,CADJ;EAEL,eAAO,eAACoI,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACpO,MAAM,CAACmO,CAAC,CAACrO,OAAF,EAAD,CAAP,EAA4BsO,CAA5B,CAAV;EAAA,OAFF;EAGLsW,MAAAA,QAAQ,EAAE,kBAACvW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAAC;EAAE1O,UAAAA,GAAG,EAAEyO,CAAP;EAAUtO,UAAAA,KAAK,EAAE;EAAjB,SAAD,EAAuBuO,CAAvB,CAAV;EAAA,OAHL;EAILoW,MAAAA,OAAO,EAAE,iBAACrW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAAC;EAAE/M,UAAAA,EAAE,EAAE,CAAN;EAASD,UAAAA,EAAE,EAAE+M;EAAb,SAAD,EAAmBC,CAAnB,CAAV;EAAA;EAJJ,KAPN;EAaH,aAAO;EACHqX,MAAAA,MAAM,EAAE,gBAACtX,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACD,CAAD,EAAIC,CAAC,IAAIpO,MAAM,CAACoO,CAAC,CAACtO,OAAF,EAAD,CAAf,CAAV;EAAA,OADL;EAEH4lB,MAAAA,OAAO,EAAE,iBAACvX,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACD,CAAD,EAAIC,CAAC,IAAIpO,MAAM,CAACoO,CAAC,CAACtO,OAAF,EAAD,CAAf,CAAV;EAAA,OAFN;EAGH,eAAOiG,CAHJ;EAIH2e,MAAAA,QAAQ,EAAE,kBAACvW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACD,CAAD,EAAIC,CAAC,IAAIpO,MAAM,CAACoO,CAAC,CAACtO,OAAF,EAAD,CAAf,CAAV;EAAA,OAJP;EAKH0kB,MAAAA,OAAO,EAAE,iBAACrW,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAAC;EAAEhN,UAAAA,EAAE,EAAE+M,CAAN;EAAS9M,UAAAA,EAAE,EAAErB,MAAM,CAAC,CAAD;EAAnB,SAAD,EAAiCoO,CAAjC,CAAV;EAAA;EALN,KAbJ;EAoBHoW,IAAAA,OAAO,EAAE;EACLiB,MAAAA,MAAM,EAAEjB,OAAO,CAAC,QAAD,CADV;EAELkB,MAAAA,OAAO,EAAElB,OAAO,CAAC,SAAD,CAFX;EAGL,eAAOA,OAAO,CAAC,OAAD,CAHT;EAILE,MAAAA,QAAQ,EAAEF,OAAO,CAAC,UAAD,CAJZ;EAKLA,MAAAA,OAAO,EAAE,iBAACrW,CAAD,EAAIC,CAAJ,EAAU;EACf,8BAAqBxO,OAAO,CAAC+lB,MAAR,CAAexX,CAAC,CAAC6M,MAAjB,EAAyB5M,CAAC,CAAC4M,MAA3B,CAArB;EAAA;EAAA,YAAO4K,IAAP;EAAA,YAAaC,IAAb;;EACA,+BAAqBjmB,OAAO,CAAC+lB,MAAR,CAAexX,CAAC,CAAC4M,MAAjB,EAAyB3M,CAAC,CAAC2M,MAA3B,CAArB;EAAA;EAAA,YAAO+K,IAAP;EAAA,YAAaC,IAAb;;EACA,eAAO,CACH;EAAE1kB,UAAAA,EAAE,EAAEykB,IAAN;EAAY1kB,UAAAA,EAAE,EAAEwkB;EAAhB,SADG,EAEH;EAAEvkB,UAAAA,EAAE,EAAE0kB,IAAN;EAAY3kB,UAAAA,EAAE,EAAEykB;EAAhB,SAFG,CAAP;EAIH;EAZI,KApBN;EAkCHnB,IAAAA,QAAQ,EAAE;EACNe,MAAAA,MAAM,EAAE,gBAACtX,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACD,CAAD,EAAIC,CAAC,IAAI;EAAE1O,UAAAA,GAAG,EAAE0O,CAAP;EAAUvO,UAAAA,KAAK,EAAE;EAAjB,SAAT,CAAV;EAAA,OADF;EAEN6lB,MAAAA,OAAO,EAAE,iBAACvX,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACD,CAAD,EAAIC,CAAC,IAAI;EAAE1O,UAAAA,GAAG,EAAE0O,CAAP;EAAUvO,UAAAA,KAAK,EAAE;EAAjB,SAAT,CAAV;EAAA,OAFH;EAGN,eAAO,eAACsO,CAAD,EAAIC,CAAJ;EAAA,eAAU,CAACpO,MAAM,CAACmO,CAAC,CAACrO,OAAF,EAAD,CAAP,EAAsBsO,CAAtB,CAAV;EAAA,OAHD;EAINsW,MAAAA,QAAQ,EAAE3e,CAJJ;EAKNye,MAAAA,OAAO,EAAE,iBAACrW,CAAD,EAAIC,CAAJ,EAAU;EACf,eAAO,CACH;EACI/M,UAAAA,EAAE,EAAEskB,MAAM,CAACxX,CAAC,CAAC5M,QAAH,EAAa6M,CAAC,CAAC2M,MAAF,CAASxZ,QAAtB,EAAgC,CAAhC,CAAN,CAAyC,CAAzC,CADR;EAEIH,UAAAA,EAAE,EAAEukB,MAAM,CAACxX,CAAC,CAAC5M,QAAH,EAAa6M,CAAC,CAAC4M,MAAF,CAASzZ,QAAtB,EAAgC4M,CAAhC,CAAN,CAAyC,CAAzC;EAFR,SADG,EAKH;EACI9M,UAAAA,EAAE,EAAEskB,MAAM,CAACxX,CAAC,CAAC5M,QAAH,EAAa6M,CAAC,CAAC2M,MAAF,CAASxZ,QAAtB,EAAgC6M,CAAC,CAAC2M,MAAlC,CAAN,CAAgD,CAAhD,CADR;EAEI3Z,UAAAA,EAAE,EAAEukB,MAAM,CAACxX,CAAC,CAAC5M,QAAH,EAAa6M,CAAC,CAAC4M,MAAF,CAASzZ,QAAtB,EAAgC6M,CAAC,CAAC4M,MAAlC,CAAN,CAAgD,CAAhD;EAFR,SALG,CAAP;EAUH;EAhBK;EAlCP,GAAP;;EAqDA,WAASwJ,OAAT,CAAiBjqB,IAAjB,EAAuB;EACnB,WAAO,UAAC4T,CAAD,EAAIC,CAAJ,EAAU;EACb,aAAO,CACH;EACI/M,QAAAA,EAAE,EAAEskB,MAAM,CAACprB,IAAD,EAAO4T,CAAC,CAAC4M,MAAF,CAASxZ,QAAhB,EAA0B,CAA1B,EAA6B4M,CAAC,CAAC4M,MAA/B,CAAN,CAA6C,CAA7C,CADR;EAEI3Z,QAAAA,EAAE,EAAEukB,MAAM,CAACprB,IAAD,EAAO4T,CAAC,CAAC6M,MAAF,CAASzZ,QAAhB,EAA0B,CAA1B,EAA6B4M,CAAC,CAAC6M,MAA/B,CAAN,CAA6C,CAA7C;EAFR,OADG,EAKH;EACI3Z,QAAAA,EAAE,EAAEskB,MAAM,CAACprB,IAAD,EAAO4T,CAAC,CAAC4M,MAAF,CAASxZ,QAAhB,EAA0B,CAA1B,EAA6B,CAA7B,CAAN,CAAsC,CAAtC,CADR;EAEIH,QAAAA,EAAE,EAAEukB,MAAM,CAACprB,IAAD,EAAO6T,CAAC,CAAC7M,QAAT,EAAmB,CAAnB,EAAsB6M,CAAtB,CAAN,CAA+B,CAA/B;EAFR,OALG,CAAP;EAUH,KAXD;EAYH;EACJ,CArEc,EAAf;;;EAuEA,SAASuX,MAAT,CAAgBK,MAAhB,EAAwBC,MAAxB,EAAgC9X,CAAhC,EAAmCC,CAAnC,EAAsC;EAClC,SAAOoX,MAAM,CAACQ,MAAD,CAAN,CAAeC,MAAf,EAAuB9X,CAAvB,EAA0BC,CAA1B,CAAP;EACH;;;EAEDxO,OAAO,CAAC+lB,MAAR,GAAiB,UAASxX,CAAT,EAAYC,CAAZ,EAAe;EAC5B,MAAM8X,MAAM,GAAGtmB,OAAO,CAACkkB,OAAR,CAAgB3V,CAAhB,CAAf;EACA,MAAMgY,MAAM,GAAGvmB,OAAO,CAACkkB,OAAR,CAAgB1V,CAAhB,CAAf;;EACA,MAAI,CAACoX,MAAM,CAACU,MAAD,CAAX,EAAqB;EACjB,UAAM,IAAI1lB,KAAJ,4CAA8C0lB,MAA9C,EAAN;EACH,GAFD,MAEO,IAAI,CAACV,MAAM,CAACU,MAAD,CAAN,CAAeC,MAAf,CAAL,EAA6B;EAChC,UAAM,IAAI3lB,KAAJ,4CAA8C2lB,MAA9C,EAAN;EACH;;EACD,MAAIC,GAAG,GAAGZ,MAAM,CAACU,MAAD,CAAN,CAAeC,MAAf,EAAuBhY,CAAvB,EAA0BC,CAA1B,CAAV;EACA,SAAOgY,GAAG,CAACnoB,GAAJ,CAAQ,UAAA0C,CAAC;EAAA,WAAIf,OAAO,CAACe,CAAD,EAAI,IAAJ,CAAX;EAAA,GAAT,CAAP;EACH,CAVD;;;EAYAf,OAAO,CAACqE,SAAR,CAAkB0hB,MAAlB,GAA2B,UAAShlB,CAAT,EAAY;EACnC,MAAI,EAAE,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAC,YAAYf,OAAxC,CAAJ,EAAsD;EAClD,UAAM,IAAIY,KAAJ,qCAAuCjG,IAAI,CAACoG,CAAD,CAA3C,EAAN;EACH;;EACD,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACvBA,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX;EACH;;EACD,SAAOf,OAAO,CAAC+lB,MAAR,CAAe,IAAf,EAAqBhlB,CAArB,CAAP;EACH,CARD;;;EAUAf,OAAO,CAACkkB,OAAR,GAAkB,UAASnjB,CAAT,EAAY;EAC1B,MAAIA,CAAC,YAAYf,OAAjB,EAA0B;EACtB,WAAOe,CAAC,CAACY,QAAT;EACH;;EACD,MAAI3B,OAAO,CAACmlB,OAAR,CAAgBpkB,CAAhB,CAAJ,EAAwB;EACpB,WAAO,OAAP;EACH;;EACD,MAAIf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAJ,EAA0B;EACtB,WAAO,SAAP;EACH;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,WAAO,UAAP;EACH;;EACD,MAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;EACvB,WAAO,SAAP;EACH;;EACD,MAAK,OAAOwjB,MAAP,KAAkB,WAAlB,IAAiC,OAAOxjB,CAAP,KAAa,QAA/C,IACC,OAAOnH,EAAP,KAAc,WAAd,IAA6B,EAAEmH,CAAC,YAAYnH,EAAf,CADlC,EACuD;EACnD,WAAO,QAAP;EACH;EACJ,CApBD;;;EAsBAoG,OAAO,CAACqE,SAAR,CAAkB8gB,OAAlB,GAA4B,YAAW;EACnC,SAAO,CAAC,EAAEnlB,OAAO,CAACmlB,OAAR,CAAgB,KAAKH,SAArB,KAAmC,aAArC,CAAR;EACH,CAFD;;;EAIA,IAAIyB,OAAO,GAAG;EACV,SAAO,GADG;EAEV,SAAO,GAFG;EAGV,SAAO,GAHG;EAIV,SAAO,GAJG;EAKV,SAAO,GALG;EAMV,QAAM,GANI;EAOV,SAAO,GAPG;EAQV,SAAO,GARG;EASV,SAAO,IATG;EAUV,SAAO;EAVG,CAAd;EAYA,IAAIC,WAAW,GAAG,EAAlB;EACA5oB,MAAM,CAACC,IAAP,CAAY0oB,OAAZ,EAAqBvpB,OAArB,CAA6B,UAACoT,GAAD,EAAS;EAClCoW,EAAAA,WAAW,CAACD,OAAO,CAACnW,GAAD,CAAR,CAAX,GAA4BA,GAA5B;;EACAtQ,EAAAA,OAAO,CAACqE,SAAR,CAAkBiM,GAAlB,IAAyB,UAASvP,CAAT,EAAY;EACjC,WAAO,KAAK4lB,EAAL,CAAQF,OAAO,CAACnW,GAAD,CAAf,EAAsBvP,CAAtB,CAAP;EACH,GAFD;EAGH,CALD;;EAOAf,OAAO,CAAC4mB,IAAR,GAAe;EACX,OAAK,WAASrY,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GAHU;EAIX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GANU;EAOX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,QAAI,OAAOA,CAAP,KAAa,WAAjB,EAA8B;EAC1B,aAAO,CAACD,CAAR;EACH;;EACD,WAAOA,CAAC,GAAGC,CAAX;EACH,GAZU;EAaX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GAfU;EAgBX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GAlBU;EAmBX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GArBU;EAsBX,OAAK,WAASD,CAAT,EAAYC,CAAZ,EAAe;EAChB,WAAOD,CAAC,GAAGC,CAAX;EACH,GAxBU;EAyBX,OAAK,WAASD,CAAT,EAAY;EACb,WAAO,CAACA,CAAR;EACH,GA3BU;EA4BX,QAAM,WAASA,CAAT,EAAYC,CAAZ,EAAe;EACjB,WAAOD,CAAC,IAAIC,CAAZ;EACH,GA9BU;EA+BX,QAAM,WAASD,CAAT,EAAYC,CAAZ,EAAe;EACjB,WAAOD,CAAC,IAAIC,CAAZ;EACH;EAjCU,CAAf;;EAoCAxO,OAAO,CAACqE,SAAR,CAAkBsiB,EAAlB,GAAuB,UAASA,EAAT,EAAa5lB,CAAb,EAAgB;EACnC,MAAI,OAAOA,CAAP,KAAa,WAAjB,EAA8B;EAC1B,WAAOf,OAAO,CAACA,OAAO,CAAC4mB,IAAR,CAAaD,EAAb,EAAiB,KAAKzmB,OAAL,EAAjB,CAAD,CAAd;EACH;;EACD,MAAI,OAAOa,CAAP,KAAa,QAAjB,EAA2B;EACvBA,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX;EACH;;EACD,MAAIK,MAAM,CAACuW,KAAP,CAAa,KAAKqN,SAAlB,KAAgC,CAAChlB,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAjC,IACA,CAACf,OAAO,CAAC6kB,SAAR,CAAkB,IAAlB,CAAD,IAA4BzjB,MAAM,CAACuW,KAAP,CAAa5W,CAAC,CAACikB,SAAf,CADhC,EAC2D;EACvD,WAAOhlB,OAAO,CAACmB,GAAD,CAAd;EACH;;EACD,qBAAe,KAAK4kB,MAAL,CAAYhlB,CAAZ,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,MAAID,CAAC,CAACsY,GAAN,EAAW;EACP,WAAOtY,CAAC,CAACsY,GAAF,CAAMF,EAAN,EAAUnY,CAAV,CAAP;EACH;;EACD,SAAOxO,OAAO,CAACA,OAAO,CAAC4mB,IAAR,CAAaD,EAAb,EAAiBpY,CAAjB,EAAoBC,CAApB,CAAD,CAAd;EACH,CAhBD;;;EAkBAxO,OAAO,CAACqE,SAAR,CAAkByiB,IAAlB,GAAyB,YAAW;EAChC,MAAIrrB,KAAK,GAAG,KAAKyE,OAAL,EAAZ;;EACA,MAAI,KAAKwB,GAAL,CAAS,CAAT,IAAc,CAAlB,EAAqB;EACjB,QAAID,EAAE,GAAGY,IAAI,CAACykB,IAAL,CAAU,CAACrrB,KAAX,CAAT;EACA,WAAOmG,QAAQ,CAAC;EAAEJ,MAAAA,EAAE,EAAE,CAAN;EAASC,MAAAA,EAAE,EAAFA;EAAT,KAAD,CAAf;EACH;;EACD,SAAOzB,OAAO,CAACqC,IAAI,CAACykB,IAAL,CAAUrrB,KAAV,CAAD,CAAd;EACH,CAPD;;;EASA,IAAIiH,GAAG,GAAG,aAAS6L,CAAT,EAAYC,CAAZ,EAAe;EACrB,MAAI9T,CAAC,GAAG,OAAO6T,CAAP,KAAa,QAAb,GAAwBgW,MAAM,CAAC,CAAD,CAA9B,GAAoC,CAA5C;EACA,SAAO,IAAItb,KAAJ,CAAU7H,MAAM,CAACoN,CAAD,CAAhB,EAAqBiT,IAArB,CAA0B,CAA1B,EAA6B9S,MAA7B,CAAoC,UAAAxT,CAAC;EAAA,WAAIA,CAAC,GAAGoT,CAAR;EAAA,GAArC,EAAgD7T,CAAhD,CAAP;EACH,CAHD;EAKA;EACA;;;EACA,IAAIqsB,MAAM,GAAG,IAAIpF,QAAJ,CAAa,KAAb,EAAoB,eAApB,CAAb;;EACA,IAAI;EACA,MAAIoF,MAAM,CAAC,CAAD,EAAI,CAAJ,CAAN,KAAiB,CAArB,EAAwB;EACpBrkB,IAAAA,GAAG,GAAGqkB,MAAN;EACH;EACJ,CAJD,CAIE,OAAOrsB,CAAP,EAAU;EAEX;;;EAEDsF,OAAO,CAACqE,SAAR,CAAkB3B,GAAlB,GAAwB,UAAS3B,CAAT,EAAY;EAChC,MAAItF,KAAJ;;EACA,MAAIuE,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,CAAJ,EAAkC;EAC9BvpB,IAAAA,KAAK,GAAG,KAAKupB,SAAL,CAAetiB,GAAf,CAAmB3B,CAAC,CAACikB,SAArB,CAAR;EACH,GAFD,MAEO;EACHvpB,IAAAA,KAAK,GAAGiH,GAAG,CAAC,KAAKsiB,SAAN,EAAiBjkB,CAAC,CAACikB,SAAnB,CAAX;EACH;;EACD,SAAOhlB,OAAO,CAACvE,KAAD,CAAd;EACH,CARD;;;EAUAuE,OAAO,CAACqE,SAAR,CAAkB/B,GAAlB,GAAwB,YAAW;EAC/B,MAAI7G,KAAK,GAAG,KAAKupB,SAAjB;;EACA,MAAIhlB,OAAO,CAAColB,QAAR,CAAiB,KAAKJ,SAAtB,CAAJ,EAAsC;EAClC,QAAIvpB,KAAK,GAAG,CAAZ,EAAe;EACXA,MAAAA,KAAK,GAAG,CAACA,KAAT;EACH;EACJ,GAJD,MAIO,IAAIuE,OAAO,CAACqlB,IAAR,CAAa5pB,KAAb,CAAJ,EAAyB;EAC5BA,IAAAA,KAAK,CAACurB,IAAN;EACH;;EACD,SAAO,IAAIhnB,OAAJ,CAAYvE,KAAZ,CAAP;EACH,CAVD;;;EAYAuE,OAAO,CAACqE,SAAR,CAAkB4iB,KAAlB,GAA0B,YAAW;EACjC,MAAIjnB,OAAO,CAAColB,QAAR,CAAiB,KAAKJ,SAAtB,CAAJ,EAAsC;EAClC,QAAI,KAAKU,WAAL,EAAJ,EAAwB;EACpB,aAAO,KAAKV,SAAL,GAAiBT,MAAM,CAAC,CAAD,CAAvB,KAA+BA,MAAM,CAAC,CAAD,CAA5C;EACH;;EACD,WAAO,KAAKS,SAAL,GAAiB,CAAjB,KAAuB,CAA9B;EACH,GALD,MAKO,IAAIhlB,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,CAAJ,EAAkC;EACrC,WAAO,KAAKA,SAAL,CAAeiC,KAAf,EAAP;EACH;EACJ,CATD;;;EAWAjnB,OAAO,CAACqE,SAAR,CAAkB6iB,MAAlB,GAA2B,YAAW;EAClC,SAAO,CAAC,KAAKD,KAAL,EAAR;EACH,CAFD;;;EAIAjnB,OAAO,CAACqE,SAAR,CAAkB3C,GAAlB,GAAwB,UAASX,CAAT,EAAY;EAChC,sBAAe,KAAKglB,MAAL,CAAYhlB,CAAZ,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,WAAS9M,GAAT,CAAa6M,CAAb,EAAgBC,CAAhB,EAAmB;EACf,QAAID,CAAC,CAACyW,SAAF,GAAcxW,CAAC,CAACwW,SAApB,EAA+B;EAC3B,aAAO,CAAC,CAAR;EACH,KAFD,MAEO,IAAIzW,CAAC,CAACyW,SAAF,KAAgBxW,CAAC,CAACwW,SAAtB,EAAiC;EACpC,aAAO,CAAP;EACH,KAFM,MAEA;EACH,aAAO,CAAP;EACH;EACJ;;EACD,MAAIzW,CAAC,CAAC5M,QAAF,KAAe,QAAnB,EAA6B;EACzB,QAAI3B,OAAO,CAAColB,QAAR,CAAiB7W,CAAC,CAACyW,SAAnB,CAAJ,EAAmC;EAC/B,aAAOtjB,GAAG,CAAC6M,CAAD,EAAIC,CAAJ,CAAV;EACH,KAFD,MAEO,IAAIxO,OAAO,CAACqlB,IAAR,CAAa9W,CAAC,CAACyW,SAAf,CAAJ,EAA+B;EAClC,aAAO,KAAKA,SAAL,CAAetjB,GAAf,CAAmB8M,CAAC,CAACwW,SAArB,CAAP;EACH;EACJ,GAND,MAMO,IAAIzW,CAAC,YAAYnO,MAAjB,EAAyB;EAC5B,WAAOsB,GAAG,CAAC6M,CAAD,EAAIC,CAAJ,CAAV;EACH;EACJ,CApBD;EAsBA;EACA;;;EACA,SAAS5M,QAAT,CAAkBb,CAAlB,EAAoC;EAAA,MAAfijB,KAAe,uEAAP,KAAO;;EAChC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBpiB,QAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,QAAJ,CAAab,CAAb,EAAgBijB,KAAhB,CAAP;EACH;;EACD,MAAIjjB,CAAC,YAAYa,QAAjB,EAA2B;EACvB,WAAOA,QAAQ,CAAC;EAAEH,MAAAA,EAAE,EAAEV,CAAC,CAACoa,MAAR;EAAgB3Z,MAAAA,EAAE,EAAET,CAAC,CAACqa;EAAtB,KAAD,CAAf;EACH;;EACD,MAAIpb,OAAO,CAACsd,QAAR,CAAiBvc,CAAjB,KAAuBijB,KAA3B,EAAkC;EAC9B,QAAI,CAACA,KAAL,EAAY;EACR,aAAO5iB,MAAM,CAACL,CAAD,CAAb;EACH;EACJ,GAJD,MAIO,IAAI,CAACf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAL,EAA2B;EAC9B,UAAM,IAAIH,KAAJ,CAAU,uCAAV,CAAN;EACH;;EACD,MAAIa,EAAE,GAAGV,CAAC,CAACU,EAAF,YAAgBzB,OAAhB,GAA0Be,CAAC,CAACU,EAA5B,GAAiCzB,OAAO,CAACe,CAAC,CAACU,EAAH,CAAjD;EACA,MAAID,EAAE,GAAGT,CAAC,CAACS,EAAF,YAAgBxB,OAAhB,GAA0Be,CAAC,CAACS,EAA5B,GAAiCxB,OAAO,CAACe,CAAC,CAACS,EAAH,CAAjD;EACA,OAAKmjB,QAAL,CAAcljB,EAAd,EAAkBD,EAAlB;EACH;;;EAEDI,QAAQ,CAACyC,SAAT,GAAqBvG,MAAM,CAAC0f,MAAP,CAAcxd,OAAO,CAACqE,SAAtB,CAArB;EACAzC,QAAQ,CAACyC,SAAT,CAAmBsC,WAAnB,GAAiC/E,QAAjC;;EAEAA,QAAQ,CAACyC,SAAT,CAAmBsgB,QAAnB,GAA8B,UAASljB,EAAT,EAAaD,EAAb,EAAiB;EAC3C1D,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EAClChN,IAAAA,KAAK,EAAEgG,EAD2B;EAElCiH,IAAAA,UAAU,EAAE;EAFsB,GAAtC;EAIA5K,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EAClChN,IAAAA,KAAK,EAAE+F,EAD2B;EAElCkH,IAAAA,UAAU,EAAE;EAFsB,GAAtC;EAIA5K,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;EACpChN,IAAAA,KAAK,EAAE,SAD6B;EAEpCiN,IAAAA,UAAU,EAAE;EAFwB,GAAxC;EAIH,CAbD;;;EAeA9G,QAAQ,CAACyC,SAAT,CAAmBgD,SAAnB,GAA+B,YAAW;EACtC,SAAO;EACH7F,IAAAA,EAAE,EAAE,KAAK4Z,MADN;EAEH3Z,IAAAA,EAAE,EAAE,KAAK0Z;EAFN,GAAP;EAIH,CALD;;;EAOAvZ,QAAQ,CAACyC,SAAT,CAAmBnD,UAAnB,GAAgC,UAASH,CAAT,EAAY;EACxC,MAAIf,OAAO,CAACmlB,OAAR,CAAgB,KAAKhK,MAArB,KAAgCnb,OAAO,CAACmlB,OAAR,CAAgB,KAAK/J,MAArB,CAApC,EAAkE;EAC9D,QAAM3Z,EAAE,GAAGrB,MAAM,CAAC,KAAK+a,MAAN,CAAN,CAAoBja,UAApB,CAA+BH,CAA/B,CAAX;EACA,QAAMS,EAAE,GAAGpB,MAAM,CAAC,KAAKgb,MAAN,CAAN,CAAoBla,UAApB,CAA+BH,CAA/B,CAAX;EACA,WAAOa,QAAQ,CAAC;EAAEH,MAAAA,EAAE,EAAFA,EAAF;EAAMD,MAAAA,EAAE,EAAFA;EAAN,KAAD,CAAf;EACH;;EACD,SAAO,IAAP;EACH,CAPD;;;EASAI,QAAQ,CAACyC,SAAT,CAAmB9J,GAAnB,GAAyB,UAASwG,CAAT,EAAY;EACjC,SAAO,KAAKomB,UAAL,CAAgB,KAAhB,EAAuBpmB,CAAvB,EAA0B,UAASilB,IAAT,EAAeC,IAAf,EAAqBC,IAArB,EAA2BC,IAA3B,EAAiC;EAC9D,WAAO;EACH3kB,MAAAA,EAAE,EAAEwkB,IAAI,CAACzrB,GAAL,CAAS0rB,IAAT,CADD;EAEHxkB,MAAAA,EAAE,EAAEykB,IAAI,CAAC3rB,GAAL,CAAS4rB,IAAT;EAFD,KAAP;EAIH,GALM,CAAP;EAMH,CAPD;EASA;EACA;;;EACAvkB,QAAQ,CAACyC,SAAT,CAAmB5B,MAAnB,GAA4B,YAAW;EACnC;EACA,MAAI,KAAK0Y,MAAL,YAAuB/a,MAAvB,IAAiC,KAAK+a,MAAL,YAAuB/a,MAA5D,EAAoE;EAChE,QAAcoB,EAAd,GAAiC,IAAjC,CAAM4Z,MAAN;EAAA,QAA0B3Z,EAA1B,GAAiC,IAAjC,CAAkB0Z,MAAlB;EACA,QAAIhgB,CAAJ,EAAO+f,CAAP;;EACA,QAAI1Z,EAAE,YAAYpB,MAAlB,EAA0B;EACtBjF,MAAAA,CAAC,GAAGqG,EAAE,CAACN,UAAH,GAAgByB,GAAhB,CAAoBnB,EAAE,CAACN,UAAH,EAApB,CAAJ;EACH,KAFD,MAEO;EACH/F,MAAAA,CAAC,GAAGqG,EAAE,CAACmB,GAAH,CAAOnB,EAAP,CAAJ;EACH;;EACD,QAAIC,EAAE,YAAYrB,MAAlB,EAA0B;EACtB8a,MAAAA,CAAC,GAAGzZ,EAAE,CAACP,UAAH,GAAgByB,GAAhB,CAAoBlB,EAAE,CAACP,UAAH,EAApB,CAAJ;EACH,KAFD,MAEO;EACHga,MAAAA,CAAC,GAAGzZ,EAAE,CAACkB,GAAH,CAAOlB,EAAP,CAAJ;EACH;;EACD,WAAOtG,CAAC,CAACZ,GAAF,CAAM2gB,CAAN,CAAP;EACH,GAdD,MAcO;EACH,WAAO,KAAKE,MAAL,CAAYzY,GAAZ,CAAgB,KAAKyY,MAArB,EAA6B7gB,GAA7B,CAAiC,KAAK4gB,MAAL,CAAYxY,GAAZ,CAAgB,KAAKwY,MAArB,CAAjC,CAAP;EACH;EACJ,CAnBD;;;EAqBAvZ,QAAQ,CAACyC,SAAT,CAAmB+iB,OAAnB,GAA6B,YAAW;EACpC,SAAO,KAAK3kB,MAAL,GAAcqkB,IAAd,EAAP;EACH,CAFD;;;EAIAllB,QAAQ,CAACyC,SAAT,CAAmBgjB,SAAnB,GAA+B,YAAW;EACtC,SAAOzlB,QAAQ,CAAC;EAAEJ,IAAAA,EAAE,EAAE,KAAK4Z,MAAX;EAAmB3Z,IAAAA,EAAE,EAAE,KAAK0Z,MAAL,CAAYpF,GAAZ;EAAvB,GAAD,CAAf;EACH,CAFD;;;EAIAnU,QAAQ,CAACyC,SAAT,CAAmByiB,IAAnB,GAA0B,YAAW;EACjC,MAAMzjB,CAAC,GAAG,KAAK+jB,OAAL,EAAV,CADiC;EAGjC;EACA;;EACA,MAAI5lB,EAAJ,EAAQC,EAAR;;EACA,MAAI4B,CAAC,CAAC3B,GAAF,CAAM,CAAN,MAAa,CAAjB,EAAoB;EAChBF,IAAAA,EAAE,GAAGC,EAAE,GAAG4B,CAAV;EACH,GAFD,MAEO,IAAI,KAAK+X,MAAL,CAAY1Z,GAAZ,CAAgB,CAAhB,MAAuB,CAA3B,EAA8B;EACjCF,IAAAA,EAAE,GAAGpB,MAAM,CAAC,GAAD,CAAN,CAAYuC,GAAZ,CAAgBU,CAAC,CAAC9I,GAAF,CAAM,KAAK6gB,MAAX,CAAhB,EAAoC0L,IAApC,EAAL;EACArlB,IAAAA,EAAE,GAAG,KAAK0Z,MAAL,CAAYmM,GAAZ,CAAgB9lB,EAAhB,EAAoB8lB,GAApB,CAAwB,CAAxB,CAAL;EACH,GAHM,MAGA;EACH7lB,IAAAA,EAAE,GAAGrB,MAAM,CAAC,GAAD,CAAN,CAAYuC,GAAZ,CAAgBU,CAAC,CAAC0S,GAAF,CAAM,KAAKqF,MAAX,CAAhB,EAAoC0L,IAApC,EAAL;;EACA,QAAI,KAAK3L,MAAL,CAAYzZ,GAAZ,CAAgB,CAAhB,MAAuB,CAAC,CAA5B,EAA+B;EAC3BD,MAAAA,EAAE,GAAGA,EAAE,CAACsU,GAAH,EAAL;EACH;;EACDvU,IAAAA,EAAE,GAAG,KAAK2Z,MAAL,CAAYmM,GAAZ,CAAgB7lB,EAAhB,EAAoB6lB,GAApB,CAAwB,CAAxB,CAAL;EACH;;EACD,SAAO1lB,QAAQ,CAAC;EAAEH,IAAAA,EAAE,EAAFA,EAAF;EAAMD,IAAAA,EAAE,EAAFA;EAAN,GAAD,CAAf;EACH,CAnBD;;;EAqBAI,QAAQ,CAACyC,SAAT,CAAmBijB,GAAnB,GAAyB,UAASvmB,CAAT,EAAY;EACjC,MAAIf,OAAO,CAACsd,QAAR,CAAiBvc,CAAjB,KAAuB,CAACf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAA5B,EAAkD;EAC9C,QAAI,EAAEA,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,MAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX;EACH;;EACD,QAAMS,GAAE,GAAG,KAAK4Z,MAAL,CAAYkM,GAAZ,CAAgBvmB,CAAhB,CAAX;;EACA,QAAMU,GAAE,GAAG,KAAK0Z,MAAL,CAAYmM,GAAZ,CAAgBvmB,CAAhB,CAAX;;EACA,WAAOa,QAAQ,CAAC;EAAEJ,MAAAA,EAAE,EAAFA,GAAF;EAAMC,MAAAA,EAAE,EAAFA;EAAN,KAAD,CAAf;EACH,GAPD,MAOO,IAAI,CAACzB,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAL,EAA2B;EAC9B,UAAM,IAAIH,KAAJ,CAAU,+BAAV,CAAN;EACH;;EACD,sBAAiB,KAAKmlB,MAAL,CAAYhlB,CAAZ,CAAjB;EAAA;EAAA,MAAQwN,CAAR;EAAA,MAAWC,CAAX;;EACA,MAAMvO,KAAK,GAAGuO,CAAC,CAAC/L,MAAF,EAAd;EACA,MAAM3C,GAAG,GAAGyO,CAAC,CAAC5L,GAAF,CAAM6L,CAAC,CAAC6Y,SAAF,EAAN,CAAZ;;EACA,MAAM7lB,EAAE,GAAG1B,GAAG,CAACsb,MAAJ,CAAWuL,EAAX,CAAc,GAAd,EAAmB1mB,KAAnB,CAAX;;EACA,MAAMwB,EAAE,GAAG3B,GAAG,CAACqb,MAAJ,CAAWwL,EAAX,CAAc,GAAd,EAAmB1mB,KAAnB,CAAX;;EACA,SAAO2B,QAAQ,CAAC;EAAEJ,IAAAA,EAAE,EAAFA,EAAF;EAAMC,IAAAA,EAAE,EAAFA;EAAN,GAAD,CAAf;EACH,CAjBD;;;EAmBAG,QAAQ,CAACyC,SAAT,CAAmB0R,GAAnB,GAAyB,UAAShV,CAAT,EAAY;EACjC,SAAO,KAAKomB,UAAL,CAAgB,KAAhB,EAAuBpmB,CAAvB,EAA0B,UAASilB,IAAT,EAAeC,IAAf,EAAqBC,IAArB,EAA2BC,IAA3B,EAAiC;EAC9D,WAAO;EACH3kB,MAAAA,EAAE,EAAEwkB,IAAI,CAACjQ,GAAL,CAASkQ,IAAT,CADD;EAEHxkB,MAAAA,EAAE,EAAEykB,IAAI,CAACnQ,GAAL,CAASoQ,IAAT;EAFD,KAAP;EAIH,GALM,CAAP;EAMH,CAPD;;;EASAvkB,QAAQ,CAACyC,SAAT,CAAmB1B,GAAnB,GAAyB,UAAS5B,CAAT,EAAY;EACjC,SAAO,KAAKomB,UAAL,CAAgB,KAAhB,EAAuBpmB,CAAvB,EAA0B,UAASilB,IAAT,EAAeC,IAAf,EAAqBC,IAArB,EAA2BC,IAA3B,EAAiC;EAC9D,QAAIzU,GAAG,GAAG;EACNlQ,MAAAA,EAAE,EAAEwkB,IAAI,CAACrjB,GAAL,CAASsjB,IAAT,EAAelQ,GAAf,CAAmBmQ,IAAI,CAACvjB,GAAL,CAASwjB,IAAT,CAAnB,CADE;EAEN1kB,MAAAA,EAAE,EAAEukB,IAAI,CAACrjB,GAAL,CAASwjB,IAAT,EAAe5rB,GAAf,CAAmB0rB,IAAI,CAACtjB,GAAL,CAASujB,IAAT,CAAnB;EAFE,KAAV;EAIA,WAAOxU,GAAP;EACH,GANM,CAAP;EAOH,CARD;;;EAUA9P,QAAQ,CAACyC,SAAT,CAAmB8iB,UAAnB,GAAgC,UAASzgB,IAAT,EAAe3F,CAAf,EAAkBhH,EAAlB,EAAsB;EAAA;;EAClD,MAAMwtB,IAAI,GAAG,SAAPA,IAAO,CAAC/lB,EAAD,EAAKC,EAAL,EAAY;EACrB,QAAIxE,MAAM,GAAGlD,EAAE,CAAC,MAAI,CAACqhB,MAAN,EAAc5Z,EAAd,EAAkB,MAAI,CAAC2Z,MAAvB,EAA+B1Z,EAA/B,CAAf;;EACA,QAAI,QAAQxE,MAAR,IAAkB,QAAQA,MAA9B,EAAsC;EAClC,UAAIA,MAAM,CAACwE,EAAP,CAAUC,GAAV,CAAc,CAAd,MAAqB,CAArB,IAA0B,CAAC1B,OAAO,CAACmlB,OAAR,CAAgBloB,MAAM,CAACwE,EAAvB,CAA/B,EAA2D;EACvD,eAAOxE,MAAM,CAACuE,EAAd;EACH;;EACD,aAAOI,QAAQ,CAAC3E,MAAD,EAAS,IAAT,CAAf;EACH;;EACD,WAAOA,MAAP;EACH,GATD;;EAUA,MAAI,OAAO8D,CAAP,KAAa,WAAjB,EAA8B;EAC1B,WAAOwmB,IAAI,EAAX;EACH;;EACD,MAAIvnB,OAAO,CAACsd,QAAR,CAAiBvc,CAAjB,KAAuB,CAACf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAA5B,EAAkD;EAC9C,QAAI,EAAEA,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,MAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX;EACH;;EACD,QAAMU,IAAE,GAAGV,CAAC,CAAC0kB,MAAF,CAAS,CAAT,CAAX;;EACA1kB,IAAAA,CAAC,GAAG;EAAEoa,MAAAA,MAAM,EAAE1Z,IAAV;EAAc2Z,MAAAA,MAAM,EAAEra;EAAtB,KAAJ;EACH,GAND,MAMO,IAAI,CAACf,OAAO,CAAC6kB,SAAR,CAAkB9jB,CAAlB,CAAL,EAA2B;EAC9B,UAAM,IAAIH,KAAJ,sBAAwB8F,IAAxB,qBAAN;EACH;;EACD,MAAIlF,EAAE,GAAGT,CAAC,CAACqa,MAAF,YAAoBpb,OAApB,GAA8Be,CAAC,CAACqa,MAAhC,GAAyC,KAAKA,MAAL,CAAYqK,MAAZ,CAAmB1kB,CAAC,CAACqa,MAArB,CAAlD;EACA,MAAI3Z,EAAE,GAAGV,CAAC,CAACoa,MAAF,YAAoBnb,OAApB,GAA8Be,CAAC,CAACoa,MAAhC,GAAyC,KAAKA,MAAL,CAAYsK,MAAZ,CAAmB1kB,CAAC,CAACoa,MAArB,CAAlD;EACA,SAAOoM,IAAI,CAAC/lB,EAAD,EAAKC,EAAL,CAAX;EACH,CA1BD;;;EA4BAG,QAAQ,CAACilB,GAAT,GAAe;EACX,OAAK,KADM;EAEX,OAAK,KAFM;EAGX,OAAK,KAHM;EAIX,OAAK;EAJM,CAAf;;EAOAjlB,QAAQ,CAACyC,SAAT,CAAmBwiB,GAAnB,GAAyB,UAASF,EAAT,EAAa5lB,CAAb,EAAgB;EACrC,MAAMhH,EAAE,GAAG6H,QAAQ,CAACilB,GAAT,CAAaF,EAAb,CAAX;EACA,SAAO,KAAK5sB,EAAL,EAASgH,CAAT,CAAP;EACH,CAHD;;;EAKAa,QAAQ,CAACyC,SAAT,CAAmB3C,GAAnB,GAAyB,UAASX,CAAT,EAAY;EACjC,sBAAe,KAAKglB,MAAL,CAAYhlB,CAAZ,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,yBAAqBD,CAAC,CAAC6M,MAAF,CAAS2K,MAAT,CAAgBvX,CAAC,CAAC4M,MAAlB,CAArB;EAAA;EAAA,MAAOoM,IAAP;EAAA,MAAaC,IAAb;;EACA,MAAMC,MAAM,GAAGF,IAAI,CAAC9lB,GAAL,CAAS+lB,IAAT,CAAf;;EACA,MAAIC,MAAM,KAAK,CAAf,EAAkB;EACd,WAAOA,MAAP;EACH,GAFD,MAEO;EACH,2BAAqBnZ,CAAC,CAAC4M,MAAF,CAAS4K,MAAT,CAAgBvX,CAAC,CAAC2M,MAAlB,CAArB;EAAA;EAAA,QAAOwM,IAAP;EAAA,QAAaC,IAAb;;EACA,WAAOD,IAAI,CAACjmB,GAAL,CAASkmB,IAAT,CAAP;EACH;EACJ,CAVD;;;EAYAhmB,QAAQ,CAACyC,SAAT,CAAmBnE,OAAnB,GAA6B,YAAW;EACpC,SAAO,CAAC,KAAKkb,MAAN,EAAc,KAAKD,MAAnB,EAA2B9c,GAA3B,CAA+B,UAAAlD,CAAC;EAAA,WAAIA,CAAC,CAAC+E,OAAF,EAAJ;EAAA,GAAhC,CAAP;EACH,CAFD;;;EAIA0B,QAAQ,CAACyC,SAAT,CAAmBvL,QAAnB,GAA8B,YAAW;EACrC,MAAImE,MAAJ;;EACA,MAAI,KAAKme,MAAL,CAAY1Z,GAAZ,CAAgB,CAAhB,MAAuB,CAA3B,EAA8B;EAC1BzE,IAAAA,MAAM,GAAG,CAACnE,QAAQ,CAAC,KAAKsiB,MAAN,CAAT,CAAT;EACH,GAFD,MAEO;EACHne,IAAAA,MAAM,GAAG,EAAT;EACH,GANoC;;;EAQrC,MAAIwE,EAAE,GAAG,KAAK0Z,MAAL,CAAYjb,OAAZ,EAAT;;EACA,MAAI2nB,GAAG,GAAG,CAACzmB,MAAM,CAACC,iBAAR,EAA2BD,MAAM,CAACE,iBAAlC,EAAqD9B,QAArD,CAA8DiC,EAA9D,CAAV;EACA,MAAIqmB,MAAM,GAAGhvB,QAAQ,CAAC,KAAKqiB,MAAN,CAArB;;EACA,MAAI,CAAC0M,GAAD,IAAQ,CAACzmB,MAAM,CAACuW,KAAP,CAAalW,EAAb,CAAb,EAA+B;EAC3B,QAAIsmB,UAAU,GAAG,KAAK5M,MAAL,CAAYzZ,GAAZ,CAAgB,CAAhB,CAAjB;;EACA,QAAIqmB,UAAU,GAAG,CAAb,IAAmBA,UAAU,KAAK,CAAf,IAAoB,KAAK5M,MAAL,CAAY6M,MAAvD,EAAgE;EAC5D/qB,MAAAA,MAAM,CAACW,IAAP,CAAY,GAAZ;EACH,KAFD,MAEO;EACHX,MAAAA,MAAM,CAACW,IAAP,CAAY,GAAZ;EACH;;EACDkqB,IAAAA,MAAM,GAAGA,MAAM,CAACzoB,OAAP,CAAe,IAAf,EAAqB,EAArB,CAAT;EACH;;EACDpC,EAAAA,MAAM,CAACW,IAAP,CAAYkqB,MAAZ;EACA7qB,EAAAA,MAAM,CAACW,IAAP,CAAY,GAAZ;EACA,SAAOX,MAAM,CAACe,IAAP,CAAY,EAAZ,CAAP;EACH,CAvBD;EAyBA;EACA;;;EACA,SAASoC,MAAT,CAAgBW,CAAhB,EAAmB;EACf,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBX,MAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,MAAJ,CAAWW,CAAX,CAAP;EACH;;EACD,MAAI,CAACf,OAAO,CAACsd,QAAR,CAAiBvc,CAAjB,CAAL,EAA0B;EACtB,UAAM,IAAIH,KAAJ,CAAU,qCAAV,CAAN;EACH;;EACD,MAAIG,CAAC,YAAYf,OAAjB,EAA0B;EACtB,WAAOI,MAAM,CAACW,CAAC,CAACb,OAAF,EAAD,CAAb;EACH;;EACD,MAAI,OAAOa,CAAP,KAAa,QAAjB,EAA2B;EACvB,QAAIjD,MAAM,CAACkJ,EAAP,CAAUjG,CAAV,EAAa,CAAC,CAAd,CAAJ,EAAsB;EAClBjD,MAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,QAA5B,EAAsC;EAClChN,QAAAA,KAAK,EAAE;EAD2B,OAAtC;EAGH;;EACD,SAAKkpB,QAAL,CAAc5jB,CAAd,EAAiB,OAAjB;EACH;EACJ;;;EAEDX,MAAM,CAACiE,SAAP,GAAmBvG,MAAM,CAAC0f,MAAP,CAAcxd,OAAO,CAACqE,SAAtB,CAAnB;EACAjE,MAAM,CAACiE,SAAP,CAAiBsC,WAAjB,GAA+BvG,MAA/B;;EAEAA,MAAM,CAACiE,SAAP,CAAiBvL,QAAjB,GAA4B,YAAW;EACnC,MAAI,KAAKksB,SAAL,KAAmB5jB,MAAM,CAACC,iBAA9B,EAAiD;EAC7C,WAAO,QAAP;EACH;;EACD,MAAI,KAAK2jB,SAAL,KAAmB5jB,MAAM,CAACE,iBAA9B,EAAiD;EAC7C,WAAO,QAAP;EACH;;EACD,MAAIF,MAAM,CAACuW,KAAP,CAAa,KAAKqN,SAAlB,CAAJ,EAAkC;EAC9B,WAAO,QAAP;EACH;;EACD,MAAIjjB,GAAG,GAAG,KAAKijB,SAAL,CAAelsB,QAAf,EAAV;;EACA,MAAI,CAACkH,OAAO,CAACmlB,OAAR,CAAgB,KAAKH,SAArB,CAAD,IAAoC,CAACjjB,GAAG,CAAC5C,KAAJ,CAAU,IAAV,CAAzC,EAA0D;EACtD,QAAIlC,MAAM,GAAG8E,GAAG,GAAG,IAAnB;EACA,WAAO,KAAKimB,MAAL,GAAe,MAAM/qB,MAArB,GAA+BA,MAAtC;EACH;;EACD,SAAO8E,GAAG,CAAC1C,OAAJ,CAAY,YAAZ,EAA0B,OAA1B,CAAP;EACH,CAhBD;;;EAkBAe,MAAM,CAACiE,SAAP,CAAiBwiB,GAAjB,GAAuB,UAASF,EAAT,EAAa5lB,CAAb,EAAgB;EACnC,MAAIA,CAAC,YAAYf,OAAjB,EAA0B;EACtBe,IAAAA,CAAC,GAAGA,CAAC,CAACikB,SAAN;EACH;;EACD,MAAMjrB,EAAE,GAAGiG,OAAO,CAAC4mB,IAAR,CAAaD,EAAb,CAAX;;EACA,MAAIA,EAAE,KAAK,GAAP,IAAc,KAAK3B,SAAL,KAAmB,CAAjC,IAAsCjkB,CAAC,KAAK,CAAhD,EAAmD;EAC/C,WAAOI,GAAP;EACH;;EACD,SAAOf,MAAM,CAACrG,EAAE,CAAC,KAAKirB,SAAN,EAAiBjkB,CAAjB,CAAH,CAAb;EACH,CATD;EAWA;;;EACAX,MAAM,CAACiE,SAAP,CAAiBnD,UAAjB,GAA8B,YAAmB;EAAA,MAAVH,CAAU,uEAAN,IAAM;;EAC7C,MAAIA,CAAC,KAAK,IAAV,EAAgB;EACZ,WAAOG,UAAU,CAAC,KAAK8jB,SAAL,CAAe9kB,OAAf,EAAD,CAAjB;EACH;;EACD,SAAO+nB,WAAW,CAAClnB,CAAC,CAACb,OAAF,EAAD,CAAX,CAAyB,KAAK8kB,SAAL,CAAe9kB,OAAf,EAAzB,CAAP;EACH,CALD;;;EAOAE,MAAM,CAACiE,SAAP,CAAiByiB,IAAjB,GAAwB,YAAW;EAC/B,MAAIrrB,KAAK,GAAG,KAAKyE,OAAL,EAAZ;;EACA,MAAI,KAAKwB,GAAL,CAAS,CAAT,IAAc,CAAlB,EAAqB;EACjB,QAAID,EAAE,GAAGrB,MAAM,CAACiC,IAAI,CAACykB,IAAL,CAAU,CAACrrB,KAAX,CAAD,CAAf;EACA,WAAOmG,QAAQ,CAAC;EAAEJ,MAAAA,EAAE,EAAE,CAAN;EAASC,MAAAA,EAAE,EAAFA;EAAT,KAAD,CAAf;EACH;;EACD,SAAOrB,MAAM,CAACiC,IAAI,CAACykB,IAAL,CAAUrrB,KAAV,CAAD,CAAb;EACH,CAPD;;;EASA2E,MAAM,CAACiE,SAAP,CAAiB/B,GAAjB,GAAuB,YAAW;EAC9B,MAAI7G,KAAK,GAAG,KAAKyE,OAAL,EAAZ;;EACA,MAAIzE,KAAK,GAAG,CAAZ,EAAe;EACXA,IAAAA,KAAK,GAAG,CAACA,KAAT;EACH;;EACD,SAAO2E,MAAM,CAAC3E,KAAD,CAAb;EACH,CAND;EAQA;EACA;;;EACA,IAAIyF,UAAU,GAAG+mB,WAAW,CAAC,KAAD,CAA5B;;EACA,SAASA,WAAT,CAAqBC,GAArB,EAA0B;EACtB,SAAO,UAASnnB,CAAT,EAAY;EACf,QAAMonB,IAAI,GAAG,SAAPA,IAAO,CAACztB,CAAD,EAAIS,CAAJ,EAAO+f,CAAP,EAAa;EAClB,UAAMkN,IAAI,GAAG,SAAPA,IAAO,CAAC7Z,CAAD,EAAIC,CAAJ;EAAA,eAAWA,CAAC,GAAG9T,CAAJ,GAAQ6T,CAAR,GAAY6Z,IAAI,CAAC5Z,CAAD,EAAID,CAAC,GAAGC,CAAR,CAA3B;EAAA,OAAb;;EACA,UAAIpN,MAAM,CAACuW,KAAP,CAAaxc,CAAb,KAAmBiG,MAAM,CAACuW,KAAP,CAAauD,CAAb,CAAvB,EAAwC;EACpC,eAAO/Z,GAAP;EACH;;EACD,aAAOinB,IAAI,CAAC/lB,IAAI,CAACC,GAAL,CAASnH,CAAT,CAAD,EAAckH,IAAI,CAACC,GAAL,CAAS4Y,CAAT,CAAd,CAAX;EACH,KANL;EAAA,QAOImN,CAAC,GAAGF,IAAI,CAACD,GAAG,GAAGA,GAAH,GAAU,IAAI,KAAlB,EAA0B,CAA1B,EAA6BnnB,CAA7B,CAPZ;;EAQA,WAAOhB,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAEuC,IAAI,CAACuZ,KAAL,CAAW7a,CAAC,GAAGsnB,CAAf,CAAP;EAA0BpoB,MAAAA,KAAK,EAAEoC,IAAI,CAACuZ,KAAL,CAAW,IAAIyM,CAAf;EAAjC,KAAD,CAAhB;EACH,GAVD;EAWH;EAED;EACA;EACA;EACA;EACA;;;EACA,SAASC,WAAT,CAAqBntB,CAArB,EAAwB+f,CAAxB,EAA2B;EACvB,MAAI3M,CAAC,GAAGpT,CAAC,CAAC4a,GAAF,CAAMmF,CAAN,CAAR;EACA,MAAI1M,CAAC,GAAGrT,CAAC,CAACZ,GAAF,CAAM2gB,CAAN,CAAR;EACA,MAAIje,MAAJ;;EACA,MAAIsR,CAAC,CAAC7M,GAAF,CAAM8M,CAAN,IAAW,CAAf,EAAkB;EACdvR,IAAAA,MAAM,GAAGsrB,kBAAkB,CAAC/Z,CAAD,EAAID,CAAJ,CAA3B;EACH,GAFD,MAEO,IAAIC,CAAC,CAAC9M,GAAF,CAAM6M,CAAN,KAAY,CAAhB,EAAmB;EACtBtR,IAAAA,MAAM,GAAGsR,CAAT;EACH,GAFM,MAEA,IAAIA,CAAC,CAAC7M,GAAF,CAAM,CAAN,IAAW,CAAf,EAAkB;EACrBzE,IAAAA,MAAM,GAAGsrB,kBAAkB,CAACha,CAAD,EAAIC,CAAJ,CAA3B;EACH,GAFM,MAEA,IAAI0M,CAAC,CAACxZ,GAAF,CAAM,CAAN,IAAW,CAAf,EAAkB;EACrBzE,IAAAA,MAAM,GAAG+C,OAAO,CAACuoB,kBAAkB,CAAC/Z,CAAC,CAACuH,GAAF,EAAD,EAAUxH,CAAC,CAACwH,GAAF,EAAV,CAAnB,CAAP,CAA8CA,GAA9C,EAAT;EACH,GAFM,MAEA;EACH9Y,IAAAA,MAAM,GAAG+C,OAAO,CAAC,CAAD,CAAhB;EACH;;EACD,MAAIA,OAAO,CAACmlB,OAAR,CAAgBjK,CAAhB,KAAsBlb,OAAO,CAACmlB,OAAR,CAAgBhqB,CAAhB,CAA1B,EAA8C;EAC1C,WAAOiF,MAAM,CAACnD,MAAD,CAAb;EACH;;EACD,SAAOA,MAAP;EACH;;;EAED,SAASsrB,kBAAT,CAA4BptB,CAA5B,EAA+B+f,CAA/B,EAAkC;EAC9B,MAAIsN,EAAE,GAAGxoB,OAAO,CAAC7E,CAAD,CAAP,CAAWygB,KAAX,EAAT;EACA,MAAI6M,EAAE,GAAGzoB,OAAO,CAACkb,CAAD,CAAP,CAAWU,KAAX,EAAT;;EACA,MAAIzgB,CAAC,CAACuG,GAAF,CAAM8mB,EAAN,IAAY,CAAhB,EAAmB;EACf,WAAOA,EAAP;EACH,GAFD,MAEO,IAAIA,EAAE,CAAC9mB,GAAH,CAAO+mB,EAAP,MAAe,CAAnB,EAAsB;EACzB,QAAI1nB,CAAC,GAAGf,OAAO,CAAC,CAAD,CAAP,CAAWsnB,GAAX,CAAepM,CAAC,CAACnF,GAAF,CAAM0S,EAAN,CAAf,CAAR;EACA,QAAIC,CAAC,GAAG1oB,OAAO,CAAC,CAAD,CAAP,CAAWsnB,GAAX,CAAensB,CAAC,CAAC4a,GAAF,CAAMyS,EAAN,CAAf,CAAR;EACA,WAAOA,EAAE,CAACjuB,GAAH,CAAOyF,OAAO,CAAC,CAAD,CAAP,CAAWsnB,GAAX,CAAeiB,kBAAkB,CAACxnB,CAAD,EAAI2nB,CAAJ,CAAjC,CAAP,CAAP;EACH,GAJM,MAIA;EACH,WAAOF,EAAE,CAACjuB,GAAH,CAAOyF,OAAO,CAAC,CAAD,CAAd,CAAP;EACH;EACJ;;;EAED,SAASD,SAAT,CAAmBgB,CAAnB,EAAqC;EAAA,MAAfijB,KAAe,uEAAP,KAAO;;EACjC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBjkB,SAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,SAAJ,CAAcgB,CAAd,EAAiBijB,KAAjB,CAAP;EACH;;EACD,MAAI,CAAChkB,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAL,EAA4B;EACxB,UAAM,IAAIH,KAAJ,CAAU,wCAAV,CAAN;EACH;;EACD,MAAId,GAAJ,EAASG,KAAT;;EACA,MAAIc,CAAC,YAAYhB,SAAjB,EAA4B;EACxBD,IAAAA,GAAG,GAAGE,OAAO,CAACe,CAAC,CAAC4nB,OAAH,CAAb;EACA1oB,IAAAA,KAAK,GAAGD,OAAO,CAACe,CAAC,CAAC6nB,SAAH,CAAf;EACH,GAHD,MAGO;EACH9oB,IAAAA,GAAG,GAAGE,OAAO,CAACe,CAAC,CAACjB,GAAH,CAAb;EACAG,IAAAA,KAAK,GAAGD,OAAO,CAACe,CAAC,CAACd,KAAH,CAAf;EACH;;EACD,MAAI,CAAC+jB,KAAD,IAAU/jB,KAAK,CAACyB,GAAN,CAAU,CAAV,MAAiB,CAA/B,EAAkC;EAC9B,QAAImnB,UAAU,GAAG/oB,GAAG,CAAC6mB,EAAJ,CAAO,GAAP,EAAY1mB,KAAZ,EAAmByB,GAAnB,CAAuB,CAAvB,MAA8B,CAA/C;;EACA,QAAImnB,UAAJ,EAAgB;EACZ,aAAO7oB,OAAO,CAACF,GAAG,CAACwnB,GAAJ,CAAQrnB,KAAR,CAAD,CAAd;EACH;EACJ;;EACD,OAAK0kB,QAAL,CAAc7kB,GAAd,EAAmBG,KAAnB;EACH;;;EAEDF,SAAS,CAACsE,SAAV,GAAsBvG,MAAM,CAAC0f,MAAP,CAAcxd,OAAO,CAACqE,SAAtB,CAAtB;EACAtE,SAAS,CAACsE,SAAV,CAAoBsC,WAApB,GAAkC5G,SAAlC;;EAEAA,SAAS,CAACsE,SAAV,CAAoBsgB,QAApB,GAA+B,UAAS7kB,GAAT,EAAcG,KAAd,EAAqB;EAChDnC,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACnChN,IAAAA,KAAK,EAAEqE,GAD4B;EAEnC4I,IAAAA,UAAU,EAAE;EAFuB,GAAvC;EAIA5K,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACrChN,IAAAA,KAAK,EAAEwE,KAD8B;EAErCyI,IAAAA,UAAU,EAAE;EAFyB,GAAzC;EAIA5K,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,UAA5B,EAAwC;EACpChN,IAAAA,KAAK,EAAE,UAD6B;EAEpCiN,IAAAA,UAAU,EAAE;EAFwB,GAAxC;EAIH,CAbD;;;EAeA3I,SAAS,CAACsE,SAAV,CAAoBgD,SAApB,GAAgC,YAAW;EACvC,SAAO;EACHvH,IAAAA,GAAG,EAAE,KAAK6oB,OADP;EAEH1oB,IAAAA,KAAK,EAAE,KAAK2oB;EAFT,GAAP;EAIH,CALD;;;EAOA7oB,SAAS,CAACsE,SAAV,CAAoB3B,GAApB,GAA0B,UAAS3B,CAAT,EAAY;EAClC,MAAIW,GAAG,GAAGX,CAAC,CAACW,GAAF,CAAM,CAAN,CAAV;;EACA,MAAIA,GAAG,KAAK,CAAZ,EAAe;EACX,WAAO1B,OAAO,CAAC,CAAD,CAAd;EACH;;EACD,MAAI0B,GAAG,KAAK,CAAC,CAAb,EAAgB;EACZX,IAAAA,CAAC,GAAGA,CAAC,CAACgV,GAAF,EAAJ;;EACA,QAAIjW,GAAG,GAAG,KAAK8oB,SAAL,CAAelmB,GAAf,CAAmB3B,CAAnB,CAAV;;EACA,QAAId,KAAK,GAAG,KAAK0oB,OAAL,CAAajmB,GAAb,CAAiB3B,CAAjB,CAAZ;;EACA,WAAOhB,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAHA,GAAF;EAAOG,MAAAA,KAAK,EAALA;EAAP,KAAD,CAAhB;EACH;;EACD,MAAIhD,MAAM,GAAG,IAAb;EACA8D,EAAAA,CAAC,GAAGA,CAAC,CAACb,OAAF,EAAJ;;EACA,SAAOa,CAAC,GAAG,CAAX,EAAc;EACV9D,IAAAA,MAAM,GAAGA,MAAM,CAAC0F,GAAP,CAAW,IAAX,CAAT;EACA5B,IAAAA,CAAC;EACJ;;EACD,SAAO9D,MAAP;EACH,CAlBD;;;EAoBA8C,SAAS,CAACsE,SAAV,CAAoByiB,IAApB,GAA2B,YAAW;EAClC,MAAMhnB,GAAG,GAAG,KAAK6oB,OAAL,CAAa7B,IAAb,EAAZ;;EACA,MAAM7mB,KAAK,GAAG,KAAK2oB,SAAL,CAAe9B,IAAf,EAAd;;EACA,MAAIhnB,GAAG,YAAYM,MAAf,IAAyBH,KAAK,YAAYG,MAA9C,EAAsD;EAClD,WAAON,GAAG,CAACwnB,GAAJ,CAAQrnB,KAAR,CAAP;EACH;;EACD,SAAOF,SAAS,CAAC;EAAED,IAAAA,GAAG,EAAHA,GAAF;EAAOG,IAAAA,KAAK,EAALA;EAAP,GAAD,CAAhB;EACH,CAPD;;;EASAF,SAAS,CAACsE,SAAV,CAAoB/B,GAApB,GAA0B,YAAW;EACjC,MAAIxC,GAAG,GAAG,KAAK6oB,OAAf;EACA,MAAI1oB,KAAK,GAAG,KAAK2oB,SAAjB;;EACA,MAAI9oB,GAAG,CAAC4B,GAAJ,CAAQ,CAAR,MAAe,CAAC,CAApB,EAAuB;EACnB5B,IAAAA,GAAG,GAAGA,GAAG,CAACiW,GAAJ,EAAN;EACH;;EACD,MAAI9V,KAAK,CAACyB,GAAN,CAAU,CAAV,MAAiB,CAArB,EAAwB;EACpBzB,IAAAA,KAAK,GAAGA,KAAK,CAAC8V,GAAN,EAAR;EACH;;EACD,SAAOhW,SAAS,CAAC;EAAED,IAAAA,GAAG,EAAHA,GAAF;EAAOG,IAAAA,KAAK,EAALA;EAAP,GAAD,CAAhB;EACH,CAVD;;;EAYAF,SAAS,CAACsE,SAAV,CAAoB3C,GAApB,GAA0B,UAASX,CAAT,EAAY;EAClC,SAAOf,OAAO,CAAC,KAAKE,OAAL,EAAD,EAAiB,IAAjB,CAAP,CAA8BwB,GAA9B,CAAkCX,CAAlC,CAAP;EACH,CAFD;;;EAIAhB,SAAS,CAACsE,SAAV,CAAoBvL,QAApB,GAA+B,YAAW;EACtC,MAAImsB,GAAG,GAAG,KAAK0D,OAAL,CAAa1D,GAAb,CAAiB,KAAK2D,SAAtB,CAAV;;EACA,MAAI9oB,GAAJ,EAASG,KAAT;;EACA,MAAIglB,GAAG,CAACvjB,GAAJ,CAAQ,CAAR,MAAe,CAAnB,EAAsB;EAClB5B,IAAAA,GAAG,GAAG,KAAK6oB,OAAL,CAAarB,GAAb,CAAiBrC,GAAjB,CAAN;;EACA,QAAInlB,GAAG,YAAYC,SAAnB,EAA8B;EAC1BD,MAAAA,GAAG,GAAGE,OAAO,CAACF,GAAG,CAACI,OAAJ,CAAY,IAAZ,CAAD,CAAb;EACH;;EACDD,IAAAA,KAAK,GAAG,KAAK2oB,SAAL,CAAetB,GAAf,CAAmBrC,GAAnB,CAAR;;EACA,QAAIhlB,KAAK,YAAYF,SAArB,EAAgC;EAC5BE,MAAAA,KAAK,GAAGD,OAAO,CAACC,KAAK,CAACC,OAAN,CAAc,IAAd,CAAD,CAAf;EACH;EACJ,GATD,MASO;EACHJ,IAAAA,GAAG,GAAG,KAAK6oB,OAAX;EACA1oB,IAAAA,KAAK,GAAG,KAAK2oB,SAAb;EACH;;EACD,MAAMtE,KAAK,GAAG,KAAK5iB,GAAL,CAAS,CAAT,IAAc,CAA5B;;EACA,MAAI4iB,KAAJ,EAAW;EACP,QAAIxkB,GAAG,CAACwC,GAAJ,GAAUZ,GAAV,CAAczB,KAAK,CAACqC,GAAN,EAAd,MAA+B,CAAnC,EAAsC;EAClC,aAAOxC,GAAG,CAAChH,QAAJ,EAAP;EACH;EACJ,GAJD,MAIO,IAAIgH,GAAG,CAAC4B,GAAJ,CAAQzB,KAAR,MAAmB,CAAvB,EAA0B;EAC7B,WAAOH,GAAG,CAAChH,QAAJ,EAAP;EACH;;EACD,SAAOgH,GAAG,CAAChH,QAAJ,KAAiB,GAAjB,GAAuBmH,KAAK,CAACnH,QAAN,EAA9B;EACH,CAzBD;;;EA2BAiH,SAAS,CAACsE,SAAV,CAAoBnE,OAApB,GAA8B,UAASR,KAAT,EAAgB;EAC1C,MAAI,KAAKkpB,SAAL,CAAelnB,GAAf,CAAmB,CAAnB,MAA0B,CAA9B,EAAiC;EAC7B,QAAI,KAAKinB,OAAL,CAAajnB,GAAb,CAAiB,CAAjB,IAAsB,CAA1B,EAA6B;EACzB,aAAON,MAAM,CAACC,iBAAd;EACH;;EACD,WAAOD,MAAM,CAACE,iBAAd;EACH;;EACD,MAAI5B,KAAJ,EAAW;EACP,WAAOM,OAAO,CAAC4mB,IAAR,CAAa,GAAb,EAAkB,KAAK+B,OAAL,CAAaltB,KAA/B,EAAsC,KAAKmtB,SAAL,CAAentB,KAArD,CAAP;EACH;;EACD,SAAO2E,MAAM,CAAC,KAAKuoB,OAAL,CAAazoB,OAAb,EAAD,CAAN,CAA+BonB,GAA/B,CAAmC,KAAKsB,SAAL,CAAe1oB,OAAf,EAAnC,CAAP;EACH,CAXD;;;EAaAH,SAAS,CAACsE,SAAV,CAAoB1B,GAApB,GAA0B,UAAS5B,CAAT,EAAY;EAClC,MAAI,EAAEA,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX,CADyB;EAE5B;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,QAAIjB,GAAG,GAAG,KAAK6oB,OAAL,CAAahmB,GAAb,CAAiB5B,CAAC,CAAC4nB,OAAnB,CAAV;;EACA,QAAI1oB,KAAK,GAAG,KAAK2oB,SAAL,CAAejmB,GAAf,CAAmB5B,CAAC,CAAC6nB,SAArB,CAAZ;;EACA,WAAO7oB,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAHA,GAAF;EAAOG,MAAAA,KAAK,EAALA;EAAP,KAAD,CAAhB;EACH;;EACD,yBAAeD,OAAO,CAAC+lB,MAAR,CAAe,IAAf,EAAqBhlB,CAArB,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,SAAOD,CAAC,CAAC5L,GAAF,CAAM6L,CAAN,CAAP;EACH,CAXD;;;EAaAzO,SAAS,CAACsE,SAAV,CAAoBijB,GAApB,GAA0B,UAASvmB,CAAT,EAAY;EAClC,MAAI,EAAEA,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX,CADyB;EAE5B;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,QAAIjB,GAAG,GAAG,KAAK6oB,OAAL,CAAahmB,GAAb,CAAiB5B,CAAC,CAAC6nB,SAAnB,CAAV;;EACA,QAAI3oB,KAAK,GAAG,KAAK2oB,SAAL,CAAejmB,GAAf,CAAmB5B,CAAC,CAAC4nB,OAArB,CAAZ;;EACA,WAAO5oB,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAHA,GAAF;EAAOG,MAAAA,KAAK,EAALA;EAAP,KAAD,CAAhB;EACH;;EACD,yBAAeD,OAAO,CAAC+lB,MAAR,CAAe,IAAf,EAAqBhlB,CAArB,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,MAAMkD,GAAG,GAAGnD,CAAC,CAAC+Y,GAAF,CAAM9Y,CAAN,CAAZ;EACA,SAAOkD,GAAP;EACH,CAZD;;;EAcA3R,SAAS,CAACsE,SAAV,CAAoBwiB,GAApB,GAA0B,UAASF,EAAT,EAAa5lB,CAAb,EAAgB;EACtC,SAAO,KAAK2lB,WAAW,CAACC,EAAD,CAAhB,EAAsB5lB,CAAtB,CAAP;EACH,CAFD;;;EAIAhB,SAAS,CAACsE,SAAV,CAAoB0R,GAApB,GAA0B,UAAShV,CAAT,EAAY;EAClC,MAAI,OAAOA,CAAP,KAAa,WAAjB,EAA8B;EAC1B,WAAO,KAAK4B,GAAL,CAAS,CAAC,CAAV,CAAP;EACH;;EACD,MAAI,EAAE5B,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX,CADyB;EAE5B;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,QAAIjB,GAAG,GAAGiB,CAAC,CAAC4nB,OAAF,CAAU5S,GAAV,EAAV;;EACA,QAAI9V,KAAK,GAAGc,CAAC,CAAC6nB,SAAd;EACA,WAAO,KAAKruB,GAAL,CAASwF,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAHA,GAAF;EAAOG,MAAAA,KAAK,EAALA;EAAP,KAAD,CAAlB,CAAP;EACH;;EACD,MAAI,EAAEc,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAP,CAAWgV,GAAX,EAAJ;EACH,GAFD,MAEO;EACHhV,IAAAA,CAAC,GAAGA,CAAC,CAACgV,GAAF,EAAJ;EACH;;EACD,yBAAe/V,OAAO,CAAC+lB,MAAR,CAAe,IAAf,EAAqBhlB,CAArB,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,SAAOD,CAAC,CAAChU,GAAF,CAAMiU,CAAN,CAAP;EACH,CAnBD;;;EAqBAzO,SAAS,CAACsE,SAAV,CAAoB9J,GAApB,GAA0B,UAASwG,CAAT,EAAY;EAClC,MAAI,EAAEA,CAAC,YAAYf,OAAf,CAAJ,EAA6B;EACzBe,IAAAA,CAAC,GAAGf,OAAO,CAACe,CAAD,CAAX,CADyB;EAE5B;;EACD,MAAIf,OAAO,CAAC+kB,UAAR,CAAmBhkB,CAAnB,CAAJ,EAA2B;EACvB,QAAM+nB,OAAO,GAAG,KAAKF,SAArB;EACA,QAAMG,OAAO,GAAGhoB,CAAC,CAAC6nB,SAAlB;EACA,QAAMI,KAAK,GAAG,KAAKL,OAAnB;EACA,QAAMM,KAAK,GAAGloB,CAAC,CAAC4nB,OAAhB;EACA,QAAI1oB,KAAJ,EAAWH,GAAX;;EACA,QAAIgpB,OAAO,KAAKC,OAAhB,EAAyB;EACrBjpB,MAAAA,GAAG,GAAGipB,OAAO,CAACpmB,GAAR,CAAYqmB,KAAZ,EAAmBzuB,GAAnB,CAAuB0uB,KAAK,CAACtmB,GAAN,CAAUmmB,OAAV,CAAvB,CAAN;EACA7oB,MAAAA,KAAK,GAAG6oB,OAAO,CAACnmB,GAAR,CAAYomB,OAAZ,CAAR;EACH,KAHD,MAGO;EACHjpB,MAAAA,GAAG,GAAGkpB,KAAK,CAACzuB,GAAN,CAAU0uB,KAAV,CAAN;EACAhpB,MAAAA,KAAK,GAAG6oB,OAAR;EACH;;EACD,WAAO/oB,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAHA,GAAF;EAAOG,MAAAA,KAAK,EAALA;EAAP,KAAD,CAAhB;EACH;;EACD,MAAID,OAAO,CAACmlB,OAAR,CAAgBpkB,CAAhB,CAAJ,EAAwB;EACpB,WAAOX,MAAM,CAAC,KAAKF,OAAL,EAAD,CAAN,CAAuB3F,GAAvB,CAA2BwG,CAA3B,CAAP;EACH;;EACD,0BAAef,OAAO,CAAC+lB,MAAR,CAAe,IAAf,EAAqBhlB,CAArB,CAAf;EAAA;EAAA,MAAOwN,CAAP;EAAA,MAAUC,CAAV;;EACA,SAAOD,CAAC,CAAChU,GAAF,CAAMiU,CAAN,CAAP;EACH,CAxBD;;;EA0BA,SAASkW,WAAT,CAAqB3jB,CAArB,EAAwB+gB,QAAxB,EAAgC;EAC5B,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB4C,WAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,WAAJ,CAAgB3jB,CAAhB,EAAmB+gB,QAAnB,CAAP;EACH;;EACD,MAAI/gB,CAAC,YAAY2jB,WAAjB,EAA8B;EAC1B,WAAOA,WAAW,CAAC3jB,CAAC,CAACikB,SAAH,EAAcjkB,CAAC,CAACmoB,OAAhB,CAAlB;EACH;;EACD,MAAI,CAAClpB,OAAO,CAACulB,YAAR,CAAqBxkB,CAArB,CAAL,EAA8B;EAC1B,UAAM,IAAIH,KAAJ,CAAU,0CAAV,CAAN;EACH;;EACD,OAAK+jB,QAAL,CAAc5jB,CAAd,EAAiB,QAAjB;EACAjD,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACnChN,IAAAA,KAAK,EAAEqmB;EAD4B,GAAvC;EAGH;;;EAED4C,WAAW,CAACrgB,SAAZ,GAAwBvG,MAAM,CAAC0f,MAAP,CAAcxd,OAAO,CAACqE,SAAtB,CAAxB;EACAqgB,WAAW,CAACrgB,SAAZ,CAAsBsC,WAAtB,GAAoC+d,WAApC;;EAEAA,WAAW,CAACyE,KAAZ,GAAoB;EAChB,OAAK,MADW;EAEhB,OAAK,MAFW;EAGhB,OAAK,MAHW;EAIhB,OAAK,MAJW;EAKhB,OAAK,MALW;EAMhB,OAAK,KANW;EAOhB,OAAK,MAPW;EAQhB,OAAK,MARW;EAShB,QAAM,OATU;EAUhB,QAAM;EAVU,CAApB;;EAYAzE,WAAW,CAACrgB,SAAZ,CAAsBgD,SAAtB,GAAkC,YAAW;EACzC,SAAO,KAAK2d,SAAL,CAAelsB,QAAf,EAAP;EACH,CAFD;;;EAIA4rB,WAAW,CAACrgB,SAAZ,CAAsBwiB,GAAtB,GAA4B,UAASF,EAAT,EAAa5lB,CAAb,EAAgB;EACxC,MAAI,OAAOA,CAAP,KAAa,WAAjB,EAA8B;EAC1B,QAAIf,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,CAAJ,EAAkC;EAC9B2B,MAAAA,EAAE,GAAGjC,WAAW,CAACyE,KAAZ,CAAkBxC,EAAlB,CAAL;EACA,aAAOjC,WAAW,CAAC,KAAKM,SAAL,CAAe5N,KAAf,GAAuBuP,EAAvB,GAAD,EAA+B,KAA/B,CAAlB;EACH;;EACD,WAAOjC,WAAW,CAAC1kB,OAAO,CAAC4mB,IAAR,CAAaD,EAAb,EAAiB,KAAK3B,SAAtB,CAAD,EAAmC,IAAnC,CAAlB;EACH;;EACD,MAAIhlB,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,KAAgChlB,OAAO,CAACqlB,IAAR,CAAatkB,CAAC,CAACikB,SAAf,CAApC,EAA+D;EAC3D2B,IAAAA,EAAE,GAAGjC,WAAW,CAACyE,KAAZ,CAAkBxC,EAAlB,CAAL;EACA,WAAOjC,WAAW,CAAC,KAAKM,SAAL,CAAe5N,KAAf,GAAuBuP,EAAvB,EAA2B5lB,CAA3B,CAAD,EAAgC,KAAhC,CAAlB;EACH;;EACD,MAAM2Q,GAAG,GAAG1R,OAAO,CAAC4mB,IAAR,CAAaD,EAAb,EAAiB,KAAK3B,SAAtB,EAAiCjkB,CAAC,CAACikB,SAAnC,CAAZ;;EACA,MAAI2B,EAAE,KAAK,GAAX,EAAgB;EACZ,QAAIkC,UAAU,GAAG,KAAKlC,EAAL,CAAQ,GAAR,EAAa5lB,CAAb,EAAgBW,GAAhB,CAAoB,CAApB,MAA2B,CAA5C;;EACA,QAAImnB,UAAJ,EAAgB;EACZ,aAAO7oB,OAAO,CAAC0R,GAAD,CAAd;EACH;;EACD,WAAO3R,SAAS,CAAC;EAAED,MAAAA,GAAG,EAAE,IAAP;EAAaG,MAAAA,KAAK,EAAEc;EAApB,KAAD,CAAhB;EACH,GAnBuC;;;EAqBxC,SAAO2jB,WAAW,CAAChT,GAAD,EAAM,IAAN,CAAlB;EACH,CAtBD;;;EAwBAgT,WAAW,CAACrgB,SAAZ,CAAsByiB,IAAtB,GAA6B,YAAW;EACpC,MAAIrrB,KAAJ;EACA,MAAI6oB,KAAK,GAAG,KAAK5iB,GAAL,CAAS,CAAT,IAAc,CAA1B;;EACA,MAAI1B,OAAO,CAAColB,QAAR,CAAiB,KAAKJ,SAAtB,CAAJ,EAAsC;EAClCvpB,IAAAA,KAAK,GAAGuE,OAAO,CAACqC,IAAI,CAACykB,IAAL,CAAUxC,KAAK,GAAG,CAAC,KAAKpkB,OAAL,EAAJ,GAAqB,KAAKA,OAAL,EAApC,CAAD,CAAf;EACH,GAFD,MAEO,IAAIF,OAAO,CAACqlB,IAAR,CAAa,KAAKL,SAAlB,CAAJ,EAAkC;EACrCvpB,IAAAA,KAAK,GAAG6oB,KAAK,GAAG,KAAKU,SAAL,CAAeloB,GAAf,GAAqBgqB,IAArB,EAAH,GAAiC,KAAK9B,SAAL,CAAe8B,IAAf,EAA9C;EACH;;EACD,MAAIxC,KAAJ,EAAW;EACP,WAAO1iB,QAAQ,CAAC;EAAEJ,MAAAA,EAAE,EAAE,CAAN;EAASC,MAAAA,EAAE,EAAEhG;EAAb,KAAD,CAAf;EACH;;EACD,SAAOA,KAAP;EACH,CAZD;;;EAcAuE,OAAO,CAACmB,GAAR,GAAcnB,OAAO,CAACmB,GAAD,CAArB;EAEA;EACA;;EACA,SAAS0Y,SAAT,CAAmBhhB,IAAnB,EAAyB;EAAA;;EACrB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBghB,SAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,SAAJ,CAAchhB,IAAd,CAAP;EACH;;EACDoe,EAAAA,SAAS,CAAC,WAAD,EAAcpe,IAAd,EAAoB,UAApB,CAAT;EACAwP,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmB+gB,SAAnB,CAAT;EACA,MAAI7X,MAAJ;EACAzT,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACtCC,IAAAA,UAAU,EAAE,IAD0B;EAEtC/M,IAAAA,GAAG,EAAE,eAAW;EACZ,aAAO4V,MAAP;EACH,KAJqC;EAKtCvG,IAAAA,GAAG,EAAE,aAASvP,KAAT,EAAgB;EACjBwb,MAAAA,SAAS,CAAC,uBAAD,EAA0Bxb,KAA1B,EAAiC,QAAjC,CAAT;EACA8V,MAAAA,MAAM,GAAG9V,KAAT;EACH;EARqC,GAA1C;EAUA,OAAK4tB,KAAL,GAAaxwB,IAAb;EACA,OAAKywB,YAAL,GAAoB,KAAKC,iBAAL,CAAuB5J,IAAvB,CAA4B,IAA5B,gEAAkC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,gBAC7C,MAAI,CAAC6J,UAAL,EAD6C;EAAA;EAAA;EAAA;;EAAA;EAAA,mBAE3B,MAAI,CAACH,KAAL,EAF2B;;EAAA;EAExC1d,YAAAA,IAFwC;EAG9C4F,YAAAA,MAAM,GAAG,IAAIzC,MAAJ,CAAWnD,IAAX,EAAiB;EAAEoD,cAAAA,GAAG,EAAE;EAAP,aAAjB,CAAT;;EAH8C;EAAA,+CAK3C,MAAI,CAAC0a,UALsC;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,GAAlC,GAApB;;EAOA,OAAKD,UAAL,GAAkB,YAAW;EACzB,WAAO,CAAC,CAAC,KAAKC,UAAP,IAAqB,KAAKA,UAAL,CAAgBva,SAAhB,CAA0BpK,IAA1B,OAAqCC,GAAjE;EACH,GAFD;;EAGA,OAAK2kB,cAAL;EACH;;EACD7P,SAAS,CAACxV,SAAV,CAAoBqlB,cAApB,GAAqC,YAAW;EAC5C,OAAK7wB,IAAL,GAAY,KAAKywB,YAAL,CAAkB,UAAC/X,MAAD,EAAY;EACtC,WAAOA,MAAM,CAACC,WAAP,EAAP;EACH,GAFW,CAAZ;EAGA,OAAKmY,SAAL,GAAiB,KAAKL,YAAL,CAAkB,UAAC/X,MAAD,EAAY;EAC3C,WAAOA,MAAM,CAACrC,SAAP,CAAiBya,SAAjB,EAAP;EACH,GAFgB,CAAjB;EAGA,OAAKC,SAAL,GAAiB,KAAKN,YAAL,CAAkB,UAAC/X,MAAD,EAAY;EAC3C,WAAOA,MAAM,CAACrC,SAAP,CAAiB0a,SAAjB,EAAP;EACH,GAFgB,CAAjB;EAGA,OAAKC,WAAL,GAAmB,KAAKP,YAAL,CAAkB,UAAC/X,MAAD,EAAS5R,MAAT,EAAoB;EACrD,QAAI,CAACK,OAAO,CAACslB,SAAR,CAAkB3lB,MAAlB,CAAL,EAAgC;EAC5B,UAAMhF,MAAI,GAAGqF,OAAO,CAACkkB,OAAR,CAAgBvkB,MAAhB,CAAb;;EACAmqB,MAAAA,gBAAgB,CAAC,aAAD,EAAgBnvB,MAAhB,EAAsB,SAAtB,CAAhB;EACH;;EACD,WAAO4W,MAAM,CAACrC,SAAP,CAAiB2a,WAAjB,CAA6BlqB,MAAM,CAACO,OAAP,EAA7B,CAAP;EACH,GANkB,CAAnB;EAOA,OAAKiM,SAAL,GAAiB,KAAKmd,YAAL,CAAkB,UAAC/X,MAAD,EAAY;EAC3C,WAAOA,MAAM,CAACrC,SAAP,CAAiB/C,SAAjB,EAAP;EACH,GAFgB,CAAjB;EAGH,CApBD;;EAqBA0N,SAAS,CAACxV,SAAV,CAAoBklB,iBAApB,GAAwC,UAASQ,WAAT,EAAsBhwB,EAAtB,EAA0B;EAC9D,MAAIT,IAAI,GAAG,IAAX;EACA;EAAA,kEAAO;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,qBACgBywB,WAAW,CAAClvB,IAAZ,CAAiBvB,IAAjB,CADhB;;EAAA;EACCiY,cAAAA,MADD;;EAAA,4CAAkB/L,IAAlB;EAAkBA,gBAAAA,IAAlB;EAAA;;EAAA,iDAEIzL,EAAE,MAAF,UAAGwX,MAAH,SAAc/L,IAAd,EAFJ;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAP;;EAAA;EAAA;EAAA;EAAA;EAIH,CAND;;EAOAqU,SAAS,CAACxV,SAAV,CAAoB+M,OAApB,GAA8B,YAAW;EACrC,SAAO,KAAKkY,YAAL,KAAsB,IAA7B;EACH,CAFD;;EAGAzP,SAAS,CAACxV,SAAV,CAAoB2lB,KAApB,GAA4B,YAAW;EAAA;;EACnC,OAAKP,UAAL,GAAkB,IAAlB,CADmC;EAGnC;;EACA,OAAKH,YAAL,GAAoB,IAApB;EACA,GAAC,MAAD,EAAS,OAAT,EAAkB,WAAlB,EAA+B,WAA/B,EAA4C,WAA5C,EAAyDpsB,OAAzD,CAAiE,UAAAwJ,IAAI,EAAI;EACrE,IAAA,MAAI,CAACA,IAAD,CAAJ,GAAa,YAAW;EACpB,YAAM,IAAI9F,KAAJ,CAAU,4BAAV,CAAN;EACH,KAFD;EAGH,GAJD;;EAKA,OAAK4oB,UAAL,GAAkB,YAAW;EACzB,WAAO,KAAP;EACH,GAFD;EAGH,CAbD;;EAcA3P,SAAS,CAACxV,SAAV,CAAoBvL,QAApB,GAA+B,YAAW;EACtC,SAAO,eAAP;EACH,CAFD;;;EAIA,SAASghB,UAAT,CAAoBmQ,KAApB,EAA2B;EACvB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBnQ,UAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,UAAJ,CAAemQ,KAAf,CAAP;EACH;;EACDhT,EAAAA,SAAS,CAAC,YAAD,EAAegT,KAAf,EAAsB,UAAtB,CAAT;EACA5hB,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmB+gB,SAAnB,CAAT;EACA,OAAKa,KAAL,GAAaA,KAAb;EACH;;EACDnQ,UAAU,CAACzV,SAAX,CAAqB+M,OAArB,GAA+B,YAAW;EACtC,SAAO,KAAK8Y,OAAL,KAAiB,IAAxB;EACH,CAFD;;EAGApQ,UAAU,CAACzV,SAAX,CAAqB2lB,KAArB,GAA6B,YAAW;EACpClsB,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,SAA5B,EAAuC;EACnC9M,IAAAA,GAAG,EAAE;EAAA,aAAM,IAAN;EAAA,KAD8B;EAEnCqP,IAAAA,GAAG,EAAE,eAAM,EAFwB;EAGnCD,IAAAA,YAAY,EAAE,KAHqB;EAInCrC,IAAAA,UAAU,EAAE;EAJuB,GAAvC;;EAMA,OAAKuhB,KAAL,GAAa,YAAW;EACpB,UAAM,IAAIrpB,KAAJ,CAAU,6BAAV,CAAN;EACH,GAFD;EAGH,CAVD;;EAWAkZ,UAAU,CAACzV,SAAX,CAAqB8lB,KAArB,GAA6B,YAAW;EAEvC,CAFD;;EAGArQ,UAAU,CAACzV,SAAX,CAAqBvL,QAArB,GAAgC,YAAW;EACvC,SAAO,gBAAP;EACH,CAFD;;;MAIMsxB;;;;;EACF,8BAAYrwB,EAAZ,EAAgB;EAAA;;EAAA;;EACZ,iCAAM;EAAA;;EAAA,aAAa,oBAAKswB,MAAL,0BAAb;EAAA,KAAN;EACApT,IAAAA,SAAS,CAAC,oBAAD,EAAuBld,EAAvB,EAA2B,UAA3B,CAAT;EACAsO,IAAAA,SAAS,kCAAO,KAAP,EAActO,EAAd,EAAkB;EAAEuO,MAAAA,MAAM,EAAE;EAAV,KAAlB,CAAT;EACAD,IAAAA,SAAS,kCAAO,SAAP,EAAkB,EAAlB,EAAsB;EAAEC,MAAAA,MAAM,EAAE;EAAV,KAAtB,CAAT;EAJY;EAKf;;;;aACD,iBAAQ;EACJ,UAAI,KAAKgiB,OAAL,CAAa7sB,MAAjB,EAAyB;EACrB,aAAK8sB,GAAL,CAAS,KAAKD,OAAL,CAAatsB,IAAb,CAAkB,EAAlB,CAAT;;EACA,aAAKssB,OAAL,CAAa7sB,MAAb,GAAsB,CAAtB;EACH;EACJ;;;aACD,kBAAgB;EAAA;;EAAA,0CAAN+H,IAAM;EAANA,QAAAA,IAAM;EAAA;;EACZ,UAAIA,IAAI,CAAC/H,MAAT,EAAiB;EACb+H,QAAAA,IAAI,CAACtI,OAAL,CAAa,UAAA+B,GAAG,EAAI;EAChB,UAAA,OAAI,CAACqrB,OAAL,CAAa1sB,IAAb,CAAkBqB,GAAlB;EACH,SAFD;EAGA,YAAMurB,UAAU,GAAG,KAAKF,OAAL,CAAa,KAAKA,OAAL,CAAa7sB,MAAb,GAAsB,CAAnC,CAAnB;;EACA,YAAI+sB,UAAU,CAACrrB,KAAX,CAAiB,KAAjB,CAAJ,EAA6B;EACzB,eAAKmrB,OAAL,CAAa,KAAKA,OAAL,CAAa7sB,MAAb,GAAsB,CAAnC,IAAwC+sB,UAAU,CAACnrB,OAAX,CAAmB,KAAnB,EAA0B,EAA1B,CAAxC;EACA,eAAK8qB,KAAL;EACH;EACJ;EACJ;;;;IAxB4BrQ;;;EA2BjC,SAAS2Q,gBAAT,CAA0B3xB,QAA1B,EAAoC;EAAA;;EAChC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB2xB,gBAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,gBAAJ,CAAqB3xB,QAArB,CAAP;EACH;;EACDme,EAAAA,SAAS,CAAC,kBAAD,EAAqBne,QAArB,EAA+B,UAA/B,CAAT;EACAuP,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmB+gB,SAAnB,CAAT;EACA/gB,EAAAA,SAAS,CAAC,IAAD,EAAO,YAAP,EAAqB,EAArB,CAAT;;EACA,OAAK4hB,KAAL,GAAa,UAAC9uB,CAAD,EAAO;EAChB,QAAI,CAAC6H,OAAO,CAACsE,QAAR,CAAiBnM,CAAjB,CAAL,EAA0B;EACtBA,MAAAA,CAAC,GAAGrC,QAAQ,CAACqC,CAAD,CAAZ;EACH,KAFD,MAEO;EACHA,MAAAA,CAAC,GAAGA,CAAC,CAAC+E,OAAF,EAAJ;EACH;;EACD,IAAA,OAAI,CAACwqB,UAAL,CAAgB9sB,IAAhB,CAAqBzC,CAArB;EACH,GAPD;EAQH;;EACDsvB,gBAAgB,CAACpmB,SAAjB,GAA6BvG,MAAM,CAAC0f,MAAP,CAAc1D,UAAU,CAACzV,SAAzB,CAA7B;EACAomB,gBAAgB,CAACpmB,SAAjB,CAA2BsC,WAA3B,GAAyC8jB,gBAAzC;;EACAA,gBAAgB,CAACpmB,SAAjB,CAA2BvL,QAA3B,GAAsC,YAAW;EAC7C,SAAO,yBAAP;EACH,CAFD;;EAGA2xB,gBAAgB,CAACpmB,SAAjB,CAA2BnE,OAA3B,GAAqC,YAAW;EAC5C,SAAO,KAAKwqB,UAAL,CAAgBrsB,GAAhB,CAAoB,UAAAlD,CAAC;EAAA,WAAIA,CAAC,CAAC+E,OAAF,EAAJ;EAAA,GAArB,EAAsClC,IAAtC,CAA2C,EAA3C,CAAP;EACH,CAFD;;;EAIA,SAAS2sB,cAAT,CAAwBC,QAAxB,EAAkCC,EAAlC,EAAsC;EAAA;;EAClC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBF,cAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,cAAJ,CAAmBC,QAAnB,EAA6BC,EAA7B,CAAP;EACH;;EACD5T,EAAAA,SAAS,CAAC,gBAAD,EAAmB2T,QAAnB,EAA6B,QAA7B,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,cAAP,EAAuBuiB,QAAvB,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,KAAP,EAAcwiB,EAAE,CAAC3qB,OAAH,EAAd,EAA4B;EAAEoI,IAAAA,MAAM,EAAE;EAAV,GAA5B,CAAT;EACAD,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmB+gB,SAAnB,CAAT;;EACA,OAAKa,KAAL,GAAa,UAAC9uB,CAAD,EAAO;EAChB,QAAI,CAAC6H,OAAO,CAACsE,QAAR,CAAiBnM,CAAjB,CAAL,EAA0B;EACtBA,MAAAA,CAAC,GAAGrC,QAAQ,CAACqC,CAAD,CAAZ;EACH,KAFD,MAEO;EACHA,MAAAA,CAAC,GAAGA,CAAC,CAAC+E,OAAF,EAAJ;EACH;;EACD,IAAA,OAAI,CAACzG,EAAL,GAAUwwB,KAAV,CAAgB,OAAI,CAACa,GAArB,EAA0B3vB,CAA1B,EAA6B,UAASqN,GAAT,EAAc;EACvC,UAAIA,GAAJ,EAAS;EACL,cAAMA,GAAN;EACH;EACJ,KAJD;EAKH,GAXD;EAYH;;EACDmiB,cAAc,CAACtmB,SAAf,GAA2BvG,MAAM,CAAC0f,MAAP,CAAc1D,UAAU,CAACzV,SAAzB,CAA3B;EACAsmB,cAAc,CAACtmB,SAAf,CAAyBsC,WAAzB,GAAuCgkB,cAAvC;;EACAA,cAAc,CAACtmB,SAAf,CAAyB5K,EAAzB,GAA8B,YAAW;EACrC,MAAI,CAAC,KAAKsxB,GAAV,EAAe;EACX,SAAKA,GAAL,GAAW,KAAKhjB,QAAL,CAAc,IAAd,CAAX;EACH;;EACD,SAAO,KAAKgjB,GAAZ;EACH,CALD;;EAMAJ,cAAc,CAACtmB,SAAf,CAAyB0D,QAAzB,GAAoC,UAASrB,IAAT,EAAe;EAC/C,SAAOzK,QAAQ,CAACN,GAAT,CAAa,kBAAb,EAAiCA,GAAjC,CAAqC+K,IAArC,CAAP;EACH,CAFD;;EAGAikB,cAAc,CAACtmB,SAAf,CAAyB2lB,KAAzB,GAAiC,YAAW;EAAA;;EACxC,SAAO,IAAI7gB,OAAJ,CAAY,UAAC6hB,OAAD,EAAUC,MAAV,EAAqB;EACpC,IAAA,OAAI,CAACxxB,EAAL,GAAUuwB,KAAV,CAAgB,OAAI,CAACc,GAArB,EAA0B,UAACtiB,GAAD,EAAS;EAC/B,UAAIA,GAAJ,EAAS;EACLyiB,QAAAA,MAAM,CAACziB,GAAD,CAAN;EACH,OAFD,MAEO;EACHH,QAAAA,SAAS,CAAC,OAAD,EAAO,KAAP,EAAc,IAAd,EAAoB;EAAEC,UAAAA,MAAM,EAAE;EAAV,SAApB,CAAT;EACAwR,QAAAA,UAAU,CAACzV,SAAX,CAAqB2lB,KAArB,CAA2BnvB,IAA3B,CAAgC,OAAhC;EACAmwB,QAAAA,OAAO;EACV;EACJ,KARD;EASH,GAVM,CAAP;EAWH,CAZD;;EAaAL,cAAc,CAACtmB,SAAf,CAAyBvL,QAAzB,GAAoC,YAAW;EAC3C,iCAAwB,KAAKoyB,YAA7B;EACH,CAFD;;;EAIA,SAASC,eAAT,CAAyB7tB,MAAzB,EAAiCyR,GAAjC,EAAsC;EAAA;;EAClC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBoc,eAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,eAAJ,CAAoB7tB,MAApB,CAAP;EACH;;EACD2Z,EAAAA,SAAS,CAAC,iBAAD,EAAoB3Z,MAApB,EAA4B,QAA5B,CAAT;EACAyR,EAAAA,GAAG,GAAGA,GAAG,IAAIrT,UAAb;EACA4B,EAAAA,MAAM,GAAGA,MAAM,CAAC4C,OAAP,EAAT;EACA,OAAKopB,YAAL,GAAoB,KAAKC,iBAAL,CAAuB5J,IAAvB,CAA4B,IAA5B,EAAkC,YAAM;EACxD,QAAI,CAAC,OAAI,CAAC8J,UAAV,EAAsB;EAClB,MAAA,OAAI,CAACA,UAAL,GAAkB,IAAI3a,MAAJ,CAAWxR,MAAX,EAAmB;EAAEyR,QAAAA,GAAG,EAAHA;EAAF,OAAnB,CAAlB;EACH;;EACD,WAAO,OAAI,CAAC0a,UAAZ;EACH,GALmB,CAApB;EAMAphB,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmB+gB,SAAnB,CAAT;;EACA,OAAKM,cAAL;EACH;;EACDyB,eAAe,CAAC9mB,SAAhB,CAA0BmlB,UAA1B,GAAuC,YAAW;EAC9C,SAAO,IAAP;EACH,CAFD;;EAGA2B,eAAe,CAAC9mB,SAAhB,GAA4BvG,MAAM,CAAC0f,MAAP,CAAc3D,SAAS,CAACxV,SAAxB,CAA5B;EACA8mB,eAAe,CAAC9mB,SAAhB,CAA0BsC,WAA1B,GAAwCwkB,eAAxC;;EACAA,eAAe,CAAC9mB,SAAhB,CAA0BvL,QAA1B,GAAqC,YAAW;EAC5C;EACH,CAFD;;;EAIA,SAASsyB,mBAAT,CAA6BC,WAA7B,EAA0C;EACtC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBD,mBAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,mBAAJ,CAAwBC,WAAxB,CAAP;EACH;;EACDpU,EAAAA,SAAS,CAAC,qBAAD,EAAwBoU,WAAxB,EAAqC,YAArC,CAAT;EACAhjB,EAAAA,SAAS,CAAC,IAAD,EAAO,YAAP,EAAqBgjB,WAArB,CAAT;EACAhjB,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmBijB,WAAnB,CAAT;EACA,MAAInV,KAAK,GAAG,CAAZ;EACArY,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,WAA5B,EAAyC;EACrCC,IAAAA,UAAU,EAAE,IADyB;EAErC/M,IAAAA,GAAG,EAAE,eAAW;EACZ,aAAOwa,KAAP;EACH,KAJoC;EAKrCnL,IAAAA,GAAG,EAAE,aAASvP,KAAT,EAAgB;EACjBwb,MAAAA,SAAS,CAAC,gCAAD,EAAmCxb,KAAnC,EAA0C,QAA1C,CAAT;;EACA,UAAIA,KAAK,YAAYuE,OAArB,EAA8B;EAC1BvE,QAAAA,KAAK,GAAGA,KAAK,CAACyE,OAAN,EAAR;EACH;;EACD,UAAI,OAAOzE,KAAP,KAAiB,QAArB,EAA+B;EAC3BA,QAAAA,KAAK,GAAG2F,MAAM,CAAC3F,KAAD,CAAd;EACH;;EACD,UAAI4G,IAAI,CAACuZ,KAAL,CAAWngB,KAAX,MAAsBA,KAA1B,EAAiC;EAC7B,cAAM,IAAImF,KAAJ,CAAU,6CACA,aADV,CAAN;EAEH;;EACDuV,MAAAA,KAAK,GAAG1a,KAAR;EACH;EAlBoC,GAAzC;EAoBH;;EACD2vB,mBAAmB,CAAC/mB,SAApB,GAAgCvG,MAAM,CAAC0f,MAAP,CAAc3D,SAAS,CAACxV,SAAxB,CAAhC;EACA+mB,mBAAmB,CAAC/mB,SAApB,CAA8BsC,WAA9B,GAA4CykB,mBAA5C;;EACAA,mBAAmB,CAAC/mB,SAApB,CAA8BvL,QAA9B,GAAyC,YAAW;EAChD;EACH,CAFD;;EAGAsyB,mBAAmB,CAAC/mB,SAApB,CAA8B2lB,KAA9B,GAAsC,YAAW;EAAA;;EAC7C3hB,EAAAA,SAAS,CAAC,IAAD,EAAO,YAAP,EAAqBoH,IAArB,CAAT;EACA,GAAC,SAAD,EAAY,OAAZ,EAAqB,SAArB,EAAgC,gBAAhC,EAAkDvS,OAAlD,CAA0D,UAAAwJ,IAAI,EAAI;EAC9D,IAAA,OAAI,CAACA,IAAD,CAAJ,GAAa,YAAW;EACpB,YAAM,IAAI9F,KAAJ,CAAU,mCAAV,CAAN;EACH,KAFD;EAGH,GAJD;;EAKA,OAAK4oB,UAAL,GAAkB,YAAW;EACzB,WAAO,KAAP;EACH,GAFD;EAGH,CAVD;;EAWA4B,mBAAmB,CAAC/mB,SAApB,CAA8BknB,QAA9B,GAAyC,YAAW;EAChD,SAAO,IAAP;EACH,CAFD;;EAGAH,mBAAmB,CAAC/mB,SAApB,CAA8BmnB,OAA9B,GAAwC,YAAW;EAC/C,MAAI,KAAKC,SAAL,IAAkB,KAAKC,UAAL,CAAgBjuB,MAAtC,EAA8C;EAC1C,WAAOsH,GAAP;EACH;;EACD,SAAO,KAAK2mB,UAAL,CAAgB,KAAKD,SAArB,CAAP;EACH,CALD;;EAMAL,mBAAmB,CAAC/mB,SAApB,CAA8BW,IAA9B,GAAqC,YAAW;EAC5C,MAAI,KAAKymB,SAAL,IAAkB,KAAKC,UAAL,CAAgBjuB,MAAtC,EAA8C;EAC1C,MAAE,KAAKguB,SAAP;EACH;EACJ,CAJD;;EAKAL,mBAAmB,CAAC/mB,SAApB,CAA8BsnB,OAA9B,GAAwC,YAAW;EAC/C,MAAMC,KAAI,GAAG,KAAKJ,OAAL,EAAb;;EACA,OAAKxmB,IAAL;EACA,SAAO4mB,KAAP;EACH,CAJD;;EAKAR,mBAAmB,CAAC/mB,SAApB,CAA8BwnB,cAA9B,GAA+C,UAAS5f,GAAT,EAAc;EACzD,MAAI,OAAOA,GAAP,KAAe,WAAnB,EAAgC;EAC5BA,IAAAA,GAAG,GAAG,KAAKyf,UAAL,CAAgBjuB,MAAtB;EACH,GAFD,MAEO,IAAIwO,GAAG,GAAG,KAAKwf,SAAL,GAAiB,KAAKC,UAAL,CAAgBjuB,MAA3C,EAAmD;EACtDwO,IAAAA,GAAG,GAAG,KAAKwf,SAAL,GAAiB,KAAKC,UAAL,CAAgBjuB,MAAvC;EACH;;EACD,MAAI,KAAK+tB,OAAL,OAAmBzmB,GAAvB,EAA4B;EACxB,WAAOA,GAAP;EACH;;EACD,SAAO,KAAK2mB,UAAL,CAAgBtlB,KAAhB,CAAsB,KAAKqlB,SAA3B,EAAsCxf,GAAtC,CAAP;EACH,CAVD;;;EAYA,SAAS6f,oBAAT,GAAgC;EAC5B,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBA,oBAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,oBAAJ,EAAP;EACH;;EACDzjB,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmBijB,WAAnB,CAAT;EACAjjB,EAAAA,SAAS,CAAC,IAAD,EAAO,SAAP,EAAkB,EAAlB,EAAsB;EAAEC,IAAAA,MAAM,EAAE;EAAV,GAAtB,CAAT;;EACA,OAAK2hB,KAAL,GAAa,UAAS9uB,CAAT,EAAY;EACrB8b,IAAAA,SAAS,CAAC,OAAD,EAAU9b,CAAV,EAAa,CAAC,QAAD,EAAW,YAAX,CAAb,CAAT;;EACA,QAAI6E,OAAO,CAACsd,QAAR,CAAiBniB,CAAjB,CAAJ,EAAyB;EACrB,WAAKmvB,OAAL,CAAa1sB,IAAb,CAAkBzC,CAAC,CAAC+E,OAAF,EAAlB;EACH,KAFD,MAEO;EAAA;;EACH,4BAAKoqB,OAAL,EAAa1sB,IAAb,yCAAqBqL,KAAK,CAACqa,IAAN,CAAWnoB,CAAX,CAArB;EACH;EACJ,GAPD;;EAQA2C,EAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,YAA5B,EAA0C;EACtCC,IAAAA,UAAU,EAAE,IAD0B;EAEtC/M,IAAAA,GAAG,EAAE,eAAW;EACZ,aAAOowB,UAAU,CAACzI,IAAX,CAAgB,KAAKgH,OAArB,CAAP;EACH;EAJqC,GAA1C;EAMH;;EACDwB,oBAAoB,CAACznB,SAArB,GAAiCvG,MAAM,CAAC0f,MAAP,CAAc1D,UAAU,CAACzV,SAAzB,CAAjC;EACAynB,oBAAoB,CAACznB,SAArB,CAA+BsC,WAA/B,GAA6CmlB,oBAA7C;;EACAA,oBAAoB,CAACznB,SAArB,CAA+B2lB,KAA/B,GAAuC,YAAW;EAC9ClQ,EAAAA,UAAU,CAACzV,SAAX,CAAqB2lB,KAArB,CAA2BnvB,IAA3B,CAAgC,IAAhC;EACAwN,EAAAA,SAAS,CAAC,IAAD,EAAO,SAAP,EAAkB,IAAlB,EAAwB;EAAEC,IAAAA,MAAM,EAAE;EAAV,GAAxB,CAAT;EACH,CAHD;;EAIAwjB,oBAAoB,CAACznB,SAArB,CAA+B2nB,YAA/B,GAA8C,YAAW;EACrD,MAAI,KAAK9B,OAAT,EAAkB;EACd,UAAM,IAAItpB,KAAJ,CAAU,oCAAV,CAAN;EACH;EACJ,CAJD;;EAKAkrB,oBAAoB,CAACznB,SAArB,CAA+B4nB,QAA/B,GAA0C,UAASL,MAAT,EAAe;EACrD3U,EAAAA,SAAS,CAAC,gCAAD,EAAmC2U,MAAnC,EAAyC,QAAzC,CAAT;EACA,OAAK3B,KAAL,CAAW2B,MAAX;EACH,CAHD;;EAIAE,oBAAoB,CAACznB,SAArB,CAA+B6nB,eAA/B,GAAiD,UAASC,MAAT,EAAiB;EAC9DlV,EAAAA,SAAS,CAAC,uCAAD,EAA0CkV,MAA1C,EAAkD,YAAlD,CAAT;EACA,OAAKlC,KAAL,CAAWkC,MAAX;EACH,CAHD;;EAIAL,oBAAoB,CAACznB,SAArB,CAA+BvL,QAA/B,GAA0C,YAAW;EACjD,SAAO,6BAAP;EACH,CAFD;;EAGAgzB,oBAAoB,CAACznB,SAArB,CAA+BnE,OAA/B,GAAyC,YAAW;EAChD,SAAO,KAAKwqB,UAAZ;EACH,CAFD;;;EAIA,SAAS0B,aAAT,CAAuBC,OAAvB,EAAgCzB,QAAhC,EAA0C;EACtC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBwB,aAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,aAAJ,CAAkBC,OAAlB,EAA2BzB,QAA3B,CAAP;EACH;;EACDO,EAAAA,eAAe,CAACtwB,IAAhB,CAAqB,IAArB,EAA2BwxB,OAA3B;EACApV,EAAAA,SAAS,CAAC,eAAD,EAAkB2T,QAAlB,EAA4B,QAA5B,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,cAAP,EAAuBuiB,QAAvB,CAAT;EACH;;EACDwB,aAAa,CAAC/nB,SAAd,GAA0BvG,MAAM,CAAC0f,MAAP,CAAc2N,eAAe,CAAC9mB,SAA9B,CAA1B;EACA+nB,aAAa,CAAC/nB,SAAd,CAAwBsC,WAAxB,GAAsCylB,aAAtC;;EACAA,aAAa,CAAC/nB,SAAd,CAAwBvL,QAAxB,GAAmC,YAAW;EAC1C,iCAAwB,KAAKoyB,YAA7B;EACH,CAFD;;;EAIA,SAASoB,mBAAT,CAA6BD,OAA7B,EAAsCzB,QAAtC,EAAgD;EAC5C,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB0B,mBAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,mBAAJ,CAAwBD,OAAxB,EAAiCzB,QAAjC,CAAP;EACH;;EACDQ,EAAAA,mBAAmB,CAACvwB,IAApB,CAAyB,IAAzB,EAA+BwxB,OAA/B;EACApV,EAAAA,SAAS,CAAC,qBAAD,EAAwB2T,QAAxB,EAAkC,QAAlC,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,cAAP,EAAuBuiB,QAAvB,CAAT;EACH;;EACD0B,mBAAmB,CAACjoB,SAApB,GAAgCvG,MAAM,CAAC0f,MAAP,CAAc4N,mBAAmB,CAAC/mB,SAAlC,CAAhC;EACAioB,mBAAmB,CAACjoB,SAApB,CAA8BsC,WAA9B,GAA4C2lB,mBAA5C;;EACAA,mBAAmB,CAACjoB,SAApB,CAA8BvL,QAA9B,GAAyC,YAAW;EAChD,wCAA+B,KAAKoyB,YAApC;EACH,CAFD;;;EAIA,SAASqB,oBAAT,CAA8B3B,QAA9B,EAAwCC,EAAxC,EAA4C;EACxC,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB0B,oBAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,oBAAJ,CAAyB3B,QAAzB,EAAmCC,EAAnC,CAAP;EACH;;EACD5T,EAAAA,SAAS,CAAC,sBAAD,EAAyB2T,QAAzB,EAAmC,QAAnC,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,cAAP,EAAuBuiB,QAAvB,CAAT;EACAviB,EAAAA,SAAS,CAAC,IAAD,EAAO,KAAP,EAAcwiB,EAAE,CAAC3qB,OAAH,EAAd,EAA4B;EAAEoI,IAAAA,MAAM,EAAE;EAAV,GAA5B,CAAT;EACAD,EAAAA,SAAS,CAAC,IAAD,EAAO,UAAP,EAAmBijB,WAAnB,CAAT;EACA,MAAI7xB,EAAJ,EAAQ+yB,MAAR;;EACA,OAAKvC,KAAL,GAAa,UAAS9uB,CAAT,EAAY;EAAA;;EACrB8b,IAAAA,SAAS,CAAC,OAAD,EAAU9b,CAAV,EAAa,CAAC,QAAD,EAAW,YAAX,CAAb,CAAT;EACA,QAAIsxB,MAAJ;;EACA,QAAI,CAAChzB,EAAL,EAAS;EACLA,MAAAA,EAAE,GAAG,KAAKsO,QAAL,CAAc,IAAd,CAAL;EACH;;EACD,QAAI,CAACykB,MAAL,EAAa;EACTA,MAAAA,MAAM,GAAG,KAAKzkB,QAAL,CAAc,QAAd,CAAT;EACH;;EACD,QAAI/H,OAAO,CAACsd,QAAR,CAAiBniB,CAAjB,CAAJ,EAAyB;EACrBsxB,MAAAA,MAAM,GAAGD,MAAM,CAAClJ,IAAP,CAAY,CAACnoB,CAAC,CAAC+E,OAAF,EAAD,CAAZ,CAAT;EACH,KAFD,MAEO;EACHusB,MAAAA,MAAM,GAAGD,MAAM,CAAClJ,IAAP,CAAYra,KAAK,CAACqa,IAAN,CAAWnoB,CAAX,CAAZ,CAAT;EACH;;EACD,WAAO,IAAIgO,OAAJ,CAAY,UAAC6hB,OAAD,EAAUC,MAAV,EAAqB;EACpCxxB,MAAAA,EAAE,CAACwwB,KAAH,CAAS,OAAI,CAACa,GAAd,EAAmB2B,MAAnB,EAA2B,UAASjkB,GAAT,EAAc;EACrC,YAAIA,GAAJ,EAAS;EACLyiB,UAAAA,MAAM,CAACziB,GAAD,CAAN;EACH,SAFD,MAEO;EACHwiB,UAAAA,OAAO;EACV;EACJ,OAND;EAOH,KARM,CAAP;EASH,GAvBD;EAwBH;;EACDuB,oBAAoB,CAACloB,SAArB,GAAiCvG,MAAM,CAAC0f,MAAP,CAAcmN,cAAc,CAACtmB,SAA7B,CAAjC;EACAkoB,oBAAoB,CAACloB,SAArB,CAA+BsC,WAA/B,GAA6C4lB,oBAA7C;;EACAA,oBAAoB,CAACloB,SAArB,CAA+B4nB,QAA/B,GAA0C,UAASL,MAAT,EAAe;EACrD3U,EAAAA,SAAS,CAAC,gCAAD,EAAmC2U,MAAnC,EAAyC,QAAzC,CAAT;EACA,OAAK3B,KAAL,CAAW2B,MAAX;EACH,CAHD;;EAIAW,oBAAoB,CAACloB,SAArB,CAA+B6nB,eAA/B,GAAiD,UAASC,MAAT,EAAiB;EAC9DlV,EAAAA,SAAS,CAAC,uCAAD,EAA0CkV,MAA1C,EAAkD,YAAlD,CAAT;EACA,OAAKlC,KAAL,CAAWkC,MAAX;EACH,CAHD;;;EAKA,IAAMb,WAAW,GAAGxkB,MAAM,OAAN,CAAW,QAAX,CAApB;EACA,IAAMsiB,SAAS,GAAGtiB,MAAM,OAAN,CAAW,MAAX,CAAlB;EACA,IAAI/B,GAAG,GAAG,IAAI2nB,GAAJ,EAAV;;EACA,SAASA,GAAT,GAAe;;EACfA,GAAG,CAACroB,SAAJ,CAAcvL,QAAd,GAAyB,YAAW;EAChC,SAAO,QAAP;EACH,CAFD;EAIA;EACA;;;EACA,SAAS6zB,WAAT,CAAqBjmB,IAArB,EAAmE;EAAA;;EAAA,mFAAJ,EAAI;EAAA,MAAtCkmB,MAAsC,UAAtCA,MAAsC;EAAA,MAA9BC,KAA8B,UAA9BA,KAA8B;EAAA,MAAvBC,MAAuB,UAAvBA,MAAuB;EAAA,MAAZvlB,GAAY;;EAC/D,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBolB,WAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,WAAJ,CAAgBjmB,IAAhB;EAAwBmmB,MAAAA,KAAK,EAALA,KAAxB;EAA+BC,MAAAA,MAAM,EAANA,MAA/B;EAAuCF,MAAAA,MAAM,EAANA;EAAvC,OAAkDrlB,GAAlD,EAAP;EACH;;EACD,MAAI,OAAOb,IAAP,KAAgB,WAApB,EAAiC;EAC7BA,IAAAA,IAAI,GAAG,WAAP;EACH;;EACD,OAAKuI,OAAL,GAAehT,QAAQ,CAACgmB,OAAT,CAAiBvb,IAAjB,EAAuBa,GAAvB,CAAf;;EACA,OAAK0H,OAAL,CAAajE,GAAb,CAAiB,cAAjB,EAAiC9Q,GAAG,CAAC,cAAD,EAAiB,YAAM;EACvD,WAAO,OAAI,CAAC+U,OAAZ;EACH,GAFmC,EAEjCvT,UAAU,CAACuT,OAAX,CAAmB,cAAnB,EAAmCqD,OAFF,CAApC;;EAGA,MAAMya,aAAa,GAAG,sCAAtB;EACA,OAAK/hB,GAAL,CAAS+hB,aAAT,EAAwBhU,SAAS,CAACxR,GAAD,CAAT,CAAe8F,MAAf,CAAsB0f,aAAtB,CAAxB;EACA,MAAIC,KAAK,GAAGC,YAAY,CAAChL,OAAb,oBAAiCvb,IAAjC,EAAZ;;EACA,MAAIwa,OAAO,CAAC2L,KAAD,CAAX,EAAoB;EAChBG,IAAAA,KAAK,CAAChiB,GAAN,CAAU,OAAV,EAAmB6hB,KAAnB;EACH;;EACD,MAAI3L,OAAO,CAAC0L,MAAD,CAAX,EAAqB;EACjBI,IAAAA,KAAK,CAAChiB,GAAN,CAAU,QAAV,EAAoB4hB,MAApB;EACH;;EACD,MAAI1L,OAAO,CAAC4L,MAAD,CAAX,EAAqB;EACjBE,IAAAA,KAAK,CAAChiB,GAAN,CAAU,QAAV,EAAoB8hB,MAApB;EACH;;EACDI,EAAAA,mBAAmB,CAAC,KAAKje,OAAN,EAAe+d,KAAf,CAAnB;EACH;;;EAEDL,WAAW,CAACtoB,SAAZ,CAAsB8d,IAAtB,GAA6B,UAASpS,IAAT,EAA4C;EAAA,MAA7Bod,OAA6B,uEAAnB,KAAmB;EAAA,MAAZpe,GAAY,uEAAN,IAAM;EACrEkI,EAAAA,SAAS,CAAC,mBAAD,EAAsBlH,IAAtB,EAA4B,CAAC,QAAD,EAAW,OAAX,CAA5B,EAAiD,CAAjD,CAAT;EACAkH,EAAAA,SAAS,CAAC,mBAAD,EAAsBkW,OAAtB,EAA+B,SAA/B,EAA0C,CAA1C,CAAT,CAFqE;EAIrE;;EACAzxB,EAAAA,UAAU,CAACsP,GAAX,CAAe,6BAAf,EAA8C,KAAKiE,OAAnD;;EACA,MAAIF,GAAG,KAAK,IAAZ,EAAkB;EACdA,IAAAA,GAAG,GAAG,KAAKE,OAAX;EACH;;EACD,SAAOkT,IAAI,CAACpS,IAAD,EAAOhB,GAAP,EAAYoe,OAAO,GAAGpe,GAAH,GAAS,KAA5B,CAAX;EACH,CAVD;;;EAYA4d,WAAW,CAACtoB,SAAZ,CAAsB1I,GAAtB,GAA4B,UAASF,KAAT,EAAgB;EACxC,MAAMwB,MAAM,GAAG,KAAKgS,OAAL,CAAatT,GAAb,CAAiBF,KAAjB,CAAf;;EACA,MAAI8M,WAAW,CAACtL,MAAD,CAAf,EAAyB;EACrB,WAAOA,MAAM,CAAC0iB,IAAP,CAAY,KAAK1Q,OAAjB,CAAP;EACH;;EACD,SAAOhS,MAAP;EACH,CAND;;;EAQA0vB,WAAW,CAACtoB,SAAZ,CAAsB2G,GAAtB,GAA4B,UAAStE,IAAT,EAAejL,KAAf,EAAsB;EAC9C,SAAO,KAAKwT,OAAL,CAAajE,GAAb,CAAiBtE,IAAjB,EAAuBjL,KAAvB,CAAP;EACH,CAFD;;;EAIAkxB,WAAW,CAACtoB,SAAZ,CAAsBsgB,QAAtB,GAAiC,UAASje,IAAT,EAAejL,KAAf,EAAsB;EACnD,SAAO,KAAKwT,OAAL,CAAa0V,QAAb,CAAsBje,IAAtB,EAA4BjL,KAA5B,CAAP;EACH,CAFD;EAIA;EACA;;;EACA,SAAS2xB,SAAT,CAAmB/T,OAAnB,EAA4B7T,IAA5B,EAAkC;EAC9B,OAAKkB,IAAL,GAAY,WAAZ;EACA,OAAK2S,OAAL,GAAeA,OAAf;EACA,OAAK7T,IAAL,GAAYA,IAAZ;EACA,OAAK6nB,KAAL,GAAc,IAAIzsB,KAAJ,EAAD,CAAcysB,KAA3B;EACH;;EACDD,SAAS,CAAC/oB,SAAV,GAAsB,IAAIzD,KAAJ,EAAtB;EACAwsB,SAAS,CAAC/oB,SAAV,CAAoBsC,WAApB,GAAkCymB,SAAlC;EAEA;EACA;;EACA,SAASrT,WAAT,CAAqBxS,GAArB,EAA0B+lB,MAA1B,EAAkC5mB,IAAlC,EAAwC;EACpC,MAAIpL,SAAS,CAACmC,MAAV,KAAqB,CAAzB,EAA4B;EACxB,QAAI,QAAOnC,SAAS,CAAC,CAAD,CAAhB,MAAwB,QAA5B,EAAsC;EAClCiM,MAAAA,GAAG,GAAGjM,SAAS,CAAC,CAAD,CAAf;EACAgyB,MAAAA,MAAM,GAAG,IAAT;EACH,KAHD,MAGO,IAAI,OAAOhyB,SAAS,CAAC,CAAD,CAAhB,KAAwB,QAA5B,EAAsC;EACzCiM,MAAAA,GAAG,GAAG,EAAN;EACA+lB,MAAAA,MAAM,GAAG,IAAT;EACA5mB,MAAAA,IAAI,GAAGpL,SAAS,CAAC,CAAD,CAAhB;EACH;EACJ;;EACD,OAAKiyB,QAAL,GAAgB,IAAIjW,GAAJ,EAAhB;EACA,OAAKrI,OAAL,GAAe1H,GAAf;EACA,OAAKimB,UAAL,GAAkBF,MAAlB;EACA,OAAKzmB,QAAL,GAAgBH,IAAI,IAAI,WAAxB;EACH;;;EAEDqT,WAAW,CAAC1V,SAAZ,CAAsBuC,IAAtB,GAA6B,YAAW;EACpC,SAAOmS,SAAS,CAAC,KAAK9J,OAAN,CAAhB;EACH,CAFD;;;EAIA8K,WAAW,CAAC1V,SAAZ,CAAsB5K,EAAtB,GAA2B,YAAW;EAClC,SAAO,KAAKkC,GAAL,CAAS,QAAT,CAAP;EACH,CAFD;;;EAIAoe,WAAW,CAAC1V,SAAZ,CAAsBopB,KAAtB,GAA8B,UAAS/mB,IAAT,EAAe;EACzC,MAAIA,IAAI,YAAYlD,OAApB,EAA6B;EACzBkD,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,MAAIwG,IAAI,YAAY1D,OAApB,EAA6B;EACzB0D,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,SAAO,KAAK+O,OAAL,CAAavI,IAAb,CAAP;EACH,CARD;;;EAUAqT,WAAW,CAAC1V,SAAZ,CAAsB4d,OAAtB,GAAgC,UAASvb,IAAT,EAAyB;EAAA,MAAVa,GAAU,uEAAJ,EAAI;;EACrD,MAAI,QAAOb,IAAP,MAAgB,QAApB,EAA8B;EAC1Ba,IAAAA,GAAG,GAAGb,IAAN;EACH;;EACD,MAAI,CAACA,IAAD,IAAS,QAAOA,IAAP,MAAgB,QAA7B,EAAuC;EACnCA,IAAAA,IAAI,GAAG,eAAe,KAAKG,QAAL,IAAiB,SAAhC,CAAP;EACH;;EACD,SAAO,IAAIkT,WAAJ,CAAgBxS,GAAG,IAAI,EAAvB,EAA2B,IAA3B,EAAiCb,IAAjC,CAAP;EACH,CARD;EAUA;EACA;;;EACAqT,WAAW,CAAC1V,SAAZ,CAAsBnK,GAAtB,GAA4B,UAASwM,IAAT,EAA2C;EAAA,MAA5BjL,KAA4B,uEAApB,IAAoB;EAAA,MAAd4W,IAAc,uEAAP,KAAO;;EACnE,MAAI3L,IAAI,YAAYlD,OAApB,EAA6B;EACzBkD,IAAAA,IAAI,GAAGA,IAAI,CAACG,QAAZ;EACH;;EACD,MAAIH,IAAI,YAAY1D,OAApB,EAA6B;EACzB0D,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,MAAIzE,KAAJ,EAAW;EACP,QAAI,CAAC4W,IAAL,EAAW;EACP5W,MAAAA,KAAK,GAAG8W,UAAU,CAAC9W,KAAD,CAAlB;EACH;;EACD,SAAK8xB,QAAL,CAAcviB,GAAd,CAAkBtE,IAAlB,EAAwBjL,KAAxB;;EACA,WAAO,IAAP;EACH;;EACD,MAAI,KAAK8xB,QAAL,CAAchW,GAAd,CAAkB7Q,IAAlB,CAAJ,EAA6B;EACzB,WAAO,KAAK6mB,QAAL,CAAc5xB,GAAd,CAAkB+K,IAAlB,CAAP;EACH;;EACD,MAAI,KAAK8mB,UAAT,EAAqB;EACjB,WAAO,KAAKA,UAAL,CAAgBtzB,GAAhB,CAAoBwM,IAApB,CAAP;EACH;EACJ,CApBD;EAsBA;EACA;EACA;EACA;;;EACAqT,WAAW,CAAC1V,SAAZ,CAAsBqpB,QAAtB,GAAiC,UAAS3zB,EAAT,EAAayL,IAAb,EAAmB;EAChD,MAAImoB,KAAK,GAAG,KAAK1L,OAAL,CAAa,WAAb,CAAZ;EACA0L,EAAAA,KAAK,CAAC3iB,GAAN,CAAU,cAAV,EAA0B9Q,GAAG,CAAC,cAAD,EAAiB,YAAgB;EAAA,QAAP6G,CAAO,uEAAH,CAAG;EAC1DA,IAAAA,CAAC,GAAGA,CAAC,CAACb,OAAF,EAAJ;EACA,QAAIgd,KAAK,GAAGyQ,KAAK,CAACH,UAAlB;;EACA,QAAI,EAAEtQ,KAAK,YAAYnD,WAAnB,CAAJ,EAAqC;EACjC,aAAOtK,IAAP;EACH;;EACD,QAAI1O,CAAC,IAAI,CAAT,EAAY;EACR,aAAOmc,KAAP;EACH;;EACD,QAAI0Q,YAAY,GAAG1Q,KAAK,CAACvhB,GAAN,CAAU,cAAV,CAAnB;EACA,WAAOiyB,YAAY,CAAC7sB,CAAC,GAAG,CAAL,CAAnB;EACH,GAX4B,EAW1BrF,UAAU,CAACuT,OAAX,CAAmB,cAAnB,EAAmCqD,OAXT,CAA7B;EAYA9M,EAAAA,IAAI,CAACqoB,MAAL,GAAc9zB,EAAd;EACA4zB,EAAAA,KAAK,CAAC3iB,GAAN,CAAU,WAAV,EAAuBxF,IAAvB;EACA,SAAOmoB,KAAP;EACH,CAjBD;;;EAmBA5T,WAAW,CAAC1V,SAAZ,CAAsBypB,OAAtB,GAAgC,UAAS7mB,MAAT,EAAiB;EAC7C,MAAIA,MAAM,YAAYzD,OAAtB,EAA+B;EAC3ByD,IAAAA,MAAM,GAAGA,MAAM,CAACJ,QAAhB;EACH;;EACD,MAAII,MAAM,YAAYjE,OAAtB,EAA+B;EAC3BiE,IAAAA,MAAM,GAAGA,MAAM,CAAC/G,OAAP,EAAT;EACH;;EACD,MAAI,KAAK+O,OAAL,CAAatL,cAAb,CAA4BsD,MAA5B,CAAJ,EAAyC;EACrC,WAAOwC,KAAK,CAAC,KAAKwF,OAAL,CAAahI,MAAb,CAAD,CAAZ;EACH;;EACD,MAAI,KAAKumB,UAAT,EAAqB;EACjB,WAAO,KAAKA,UAAL,CAAgBM,OAAhB,CAAwB7mB,MAAxB,CAAP;EACH;EACJ,CAbD;;;EAeA8S,WAAW,CAAC1V,SAAZ,CAAsBvL,QAAtB,GAAiC,YAAW;EACxC,SAAO,mBAAmB,KAAK+N,QAAxB,GAAmC,GAA1C;EACH,CAFD;;;EAIAkT,WAAW,CAAC1V,SAAZ,CAAsB+S,KAAtB,GAA8B,YAAW;EAAA;;EACrC;EACA,MAAIrI,GAAG,GAAG,EAAV,CAFqC;;EAIrCjR,EAAAA,MAAM,CAACC,IAAP,CAAY,KAAKkR,OAAjB,EAA0B/R,OAA1B,CAAkC,UAAAoT,GAAG,EAAI;EACrCvB,IAAAA,GAAG,CAACuB,GAAD,CAAH,GAAW,OAAI,CAACrB,OAAL,CAAaqB,GAAb,CAAX;EACH,GAFD;EAGA,SAAO,IAAIyJ,WAAJ,CAAgBhL,GAAhB,EAAqB,KAAKye,UAA1B,EAAsC,KAAK3mB,QAA3C,CAAP;EACH,CARD;;;EAUAkT,WAAW,CAAC1V,SAAZ,CAAsB0pB,KAAtB,GAA8B,UAAShf,GAAT,EAA8B;EAAA,MAAhBrI,IAAgB,uEAAT,OAAS;EACxDuQ,EAAAA,SAAS,CAAC,oBAAD,EAAuBlI,GAAvB,EAA4B,aAA5B,CAAT;EACA,SAAO,KAAKkT,OAAL,CAAavb,IAAb,EAAmBqI,GAAG,CAACE,OAAvB,CAAP;EACH,CAHD;EAKA;EACA;;;EACA,SAASxF,KAAT,CAAehO,KAAf,EAAsB;EAClB,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBgO,KAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,KAAJ,CAAUhO,KAAV,CAAP;EACH;;EACD,OAAKA,KAAL,GAAaA,KAAb;EACH;;;EAEDgO,KAAK,CAACukB,WAAN,GAAoB,UAAS7yB,CAAT,EAAY;EAC5B,SAAOA,CAAC,YAAYsO,KAAb,IAAsB,OAAOtO,CAAC,CAACM,KAAT,KAAmB,WAAhD;EACH,CAFD;;;EAIAgO,KAAK,CAACpF,SAAN,CAAgBnE,OAAhB,GAA0B,YAAW;EACjC,SAAO,KAAKzE,KAAZ;EACH,CAFD;EAIA;EACA;;;EACA,SAASme,MAAT,CAAgB5H,MAAhB,EAAwB;EACpB,MAAIA,MAAM,CAACvU,MAAX,EAAmB;EACf,QAAIuU,MAAM,CAACvU,MAAP,KAAkB,CAAtB,EAAyB;EACrB,aAAOuU,MAAM,CAAC,CAAD,CAAb;EACH;EACJ;;EACD,MAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgB4H,MAAlB,CAA/B,IACA,OAAO,IAAP,KAAgB,WADpB,EACiC;EAC7B,WAAO,IAAIA,MAAJ,CAAW5H,MAAX,CAAP;EACH;;EACD,OAAKic,UAAL,GAAkBjc,MAAlB;EACH;;EACD4H,MAAM,CAACvV,SAAP,CAAiBvL,QAAjB,GAA4B,YAAW;EACnC,SAAO,KAAKm1B,UAAL,CAAgB5vB,GAAhB,CAAoB,UAAAlD,CAAC;EAAA,WAAIrC,QAAQ,CAACqC,CAAD,CAAZ;EAAA,GAArB,EAAsC6C,IAAtC,CAA2C,IAA3C,CAAP;EACH,CAFD;;EAGA4b,MAAM,CAACvV,SAAP,CAAiBnE,OAAjB,GAA2B,YAAW;EAClC,SAAO,KAAK+tB,UAAZ;EACH,CAFD;;;EAIAlU,WAAW,CAAC1V,SAAZ,CAAsB1I,GAAtB,GAA4B,UAASsL,MAAT,EAA+B;EAAA,MAAd7H,OAAc,uEAAJ,EAAI;EACvD;EACA;EACA6X,EAAAA,SAAS,CAAC,kBAAD,EAAqBhQ,MAArB,EAA6B,CAAC,QAAD,EAAW,QAAX,CAA7B,CAAT;EACA,4BAA8B7H,OAA9B,CAAQlD,UAAR;EAAA,MAAQA,UAAR,oCAAqB,IAArB;EACA,MAAIwK,IAAI,GAAGO,MAAX;;EACA,MAAIP,IAAI,YAAYlD,OAAhB,IAA2BkD,IAAI,YAAY1D,OAA/C,EAAwD;EACpD0D,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,MAAIzE,KAAK,GAAG,KAAKqyB,OAAL,CAAapnB,IAAb,CAAZ;;EACA,MAAIjL,KAAK,YAAYgO,KAArB,EAA4B;EACxB,QAAIA,KAAK,CAACukB,WAAN,CAAkBvyB,KAAlB,CAAJ,EAA8B;EAC1B,aAAO/C,SAAP;EACH;;EACD,WAAOgoB,WAAW,CAACjlB,KAAK,CAACyE,OAAN,EAAD,CAAlB;EACH;;EACD,MAAIhB,KAAJ;;EACA,MAAI+H,MAAM,YAAYzD,OAAlB,IAA6ByD,MAAM,CAACzD,OAAO,CAACuD,MAAT,CAAvC,EAAyD;EACrD;EACA7H,IAAAA,KAAK,GAAG+H,MAAM,CAACzD,OAAO,CAACuD,MAAT,CAAd;EACH,GAHD,MAGO,IAAI,OAAOL,IAAP,KAAgB,QAApB,EAA8B;EACjCxH,IAAAA,KAAK,GAAGwH,IAAI,CAACnH,KAAL,CAAW,GAAX,EAAgBuG,MAAhB,CAAuBgZ,OAAvB,CAAR;EACH;;EACD,MAAI5f,KAAK,IAAIA,KAAK,CAACzB,MAAN,GAAe,CAA5B,EAA+B;EAC3B,iBAAuByB,KAAvB;EAAA;EAAA,QAAKyf,KAAL;EAAA,QAAexZ,IAAf;;EACA1J,IAAAA,KAAK,GAAG,KAAKqyB,OAAL,CAAanP,KAAb,CAAR;;EACA,QAAIxZ,IAAI,CAAC1H,MAAT,EAAiB;EACb,UAAI;EACA,YAAIhC,KAAK,YAAYgO,KAArB,EAA4B;EACxBhO,UAAAA,KAAK,GAAGA,KAAK,CAACyE,OAAN,EAAR;EACH,SAFD,MAEO;EACHzE,UAAAA,KAAK,GAAGE,GAAG,CAACtC,IAAD,EAAOslB,KAAP,CAAX;;EACA,cAAIpW,WAAW,CAAC9M,KAAD,CAAf,EAAwB;EACpBA,YAAAA,KAAK,GAAG4c,MAAM,CAAC5c,KAAD,CAAd;EACH;EACJ;;EACD,YAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;EAC9B;EACA,iBAAOE,GAAG,MAAH,UAAIF,KAAJ,4BAAc0J,IAAd,GAAP;EACH;EACJ,OAbD,CAaE,OAAOzK,CAAP,EAAU;EACR,cAAMA,CAAN;EACH;EACJ,KAjBD,MAiBO,IAAIe,KAAK,YAAYgO,KAArB,EAA4B;EAC/B,aAAOiX,WAAW,CAACjlB,KAAK,CAACyE,OAAN,EAAD,CAAlB;EACH;;EACDzE,IAAAA,KAAK,GAAGE,GAAG,CAACtC,IAAD,EAAOqN,IAAP,CAAX;EACH;;EACD,MAAI,OAAOjL,KAAP,KAAiB,WAArB,EAAkC;EAC9B,WAAOA,KAAP;EACH;;EACD,MAAIS,UAAJ,EAAgB;EACZ,UAAM,IAAI0E,KAAJ,CAAU,uBAAuB8F,IAAI,CAAC5N,QAAL,EAAvB,GAAyC,GAAnD,CAAN;EACH;EACJ,CAtDD;;;EAwDAihB,WAAW,CAAC1V,SAAZ,CAAsB2G,GAAtB,GAA4B,UAAStE,IAAT,EAAejL,KAAf,EAAkC;EAAA,MAAZvB,GAAY,uEAAN,IAAM;EAC1D+c,EAAAA,SAAS,CAAC,kBAAD,EAAqBvQ,IAArB,EAA2B,CAAC,QAAD,EAAW,QAAX,CAA3B,CAAT;;EACA,MAAI1G,OAAO,CAACsd,QAAR,CAAiB7hB,KAAjB,CAAJ,EAA6B;EACzBA,IAAAA,KAAK,GAAGuE,OAAO,CAACvE,KAAD,CAAf;EACH;;EACD,MAAIiL,IAAI,YAAYlD,OAApB,EAA6B;EACzBkD,IAAAA,IAAI,GAAGA,IAAI,CAACG,QAAZ;EACH;;EACD,MAAIH,IAAI,YAAY1D,OAApB,EAA6B;EACzB0D,IAAAA,IAAI,GAAGA,IAAI,CAACxG,OAAL,EAAP;EACH;;EACD,OAAK+O,OAAL,CAAavI,IAAb,IAAqBjL,KAArB;;EACA,MAAIvB,GAAJ,EAAS;EACL,SAAKA,GAAL,CAASwM,IAAT,EAAexM,GAAf,EAAoB,IAApB;EACH;;EACD,SAAO,IAAP;EACH,CAhBD;EAkBA;EACA;;;EACA6f,WAAW,CAAC1V,SAAZ,CAAsBsgB,QAAtB,GAAiC,UAASje,IAAT,EAAejL,KAAf,EAAsB;EAAA;;EACnD,MAAI,KAAKwT,OAAL,CAAatL,cAAb,CAA4B+C,IAA5B,CAAJ,EAAuC;EACnC,UAAM,IAAI9F,KAAJ,kCAAoC8F,IAApC,qBAAN;EACH;;EACD,MAAIpL,SAAS,CAACmC,MAAV,KAAqB,CAArB,IAA0B4S,eAAe,CAAC/U,SAAS,CAAC,CAAD,CAAV,CAA7C,EAA6D;EACzD,QAAIiM,GAAG,GAAGjM,SAAS,CAAC,CAAD,CAAnB;EACAwC,IAAAA,MAAM,CAACC,IAAP,CAAYwJ,GAAZ,EAAiBrK,OAAjB,CAAyB,UAAAoT,GAAG,EAAI;EAC5B,MAAA,OAAI,CAACqU,QAAL,CAAcje,IAAd,EAAoBa,GAAG,CAAC+I,GAAD,CAAvB;EACH,KAFD;EAGH,GALD,MAKO;EACHxS,IAAAA,MAAM,CAAC2K,cAAP,CAAsB,KAAKwG,OAA3B,EAAoCvI,IAApC,EAA0C;EACtCjL,MAAAA,KAAK,EAALA,KADsC;EAEtCiN,MAAAA,UAAU,EAAE;EAF0B,KAA1C;EAIH;;EACD,SAAO,IAAP;EACH,CAhBD;;;EAkBAqR,WAAW,CAAC1V,SAAZ,CAAsBkT,GAAtB,GAA4B,UAAS7Q,IAAT,EAAe;EACvC,SAAO,KAAKuI,OAAL,CAAatL,cAAb,CAA4B+C,IAA5B,CAAP;EACH,CAFD;;;EAIAqT,WAAW,CAAC1V,SAAZ,CAAsB2M,GAAtB,GAA4B,UAAStK,IAAT,EAAe;EACvC,MAAIqI,GAAG,GAAG,IAAV;;EACA,SAAO,IAAP,EAAa;EACT,QAAI,CAACA,GAAL,EAAU;EACN;EACH;;EACD,QAAIA,GAAG,CAACwI,GAAJ,CAAQ7Q,IAAR,CAAJ,EAAmB;EACf,aAAOqI,GAAP;EACH;;EACDA,IAAAA,GAAG,GAAGA,GAAG,CAACye,UAAV;EACH;EACJ,CAXD;;;EAaAzT,WAAW,CAAC1V,SAAZ,CAAsBmW,OAAtB,GAAgC,YAAW;EACvC,MAAIzL,GAAG,GAAG,IAAV;EACA,MAAI9R,MAAM,GAAG,EAAb;;EACA,SAAO8R,GAAP,EAAY;EACR9R,IAAAA,MAAM,CAACixB,OAAP,CAAenf,GAAf;EACAA,IAAAA,GAAG,GAAGA,GAAG,CAACye,UAAV;EACH;;EACD,SAAOvwB,MAAP;EACH,CARD;EAUA;EACA;;;EACA,SAASiK,KAAT,CAAezL,KAAf,EAAsB;EAClB,MAAIM,UAAU,CAACN,KAAD,CAAd,EAAuB;EACnB,WAAOA,KAAK,CAACO,IAAN,CAAWkL,KAAX,CAAP;EACH;;EACD,MAAIzL,KAAK,YAAYoU,IAAjB,IAAyBpU,KAAK,YAAY+H,OAA9C,EAAuD;EACnD/H,IAAAA,KAAK,CAACic,QAAD,CAAL,GAAkB,IAAlB;EACH;;EACD,SAAOjc,KAAP;EACH;;;EAaD,IAAI0yB,aAAa,GAAGtuB,KAAK,CAAC+F,QAAQ,sJAAT,CAAL,CAEuD,CAFvD,CAApB;;EAIA,IAAIjK,GAAG,GAAGzB,GAAG,CAAC,KAAD,EAAQ,SAASyB,GAAT,CAAaoL,MAAb,EAA8B;EAC/C,MAAItL,KAAJ;;EAD+C,sCAAN+J,IAAM;EAANA,IAAAA,IAAM;EAAA;;EAE/C,MAAIyG,GAAG,GAAGzG,IAAI,CAAC/H,MAAf;;EACA,SAAO+H,IAAI,CAAC/H,MAAZ,EAAoB;EAChB;EACA,QAAI8K,WAAW,CAACxB,MAAD,CAAX,IAAuB,QAAOvB,IAAI,CAAC,CAAD,CAAX,MAAmB,QAA9C,EAAwD;EACpDuB,MAAAA,MAAM,GAAGsR,MAAM,CAACtR,MAAD,CAAf;EACH;;EACD,QAAI9H,GAAG,GAAGuG,IAAI,CAACwO,KAAL,EAAV;EACA,QAAItN,IAAI,GAAG8Z,KAAK,CAACvhB,GAAD,CAAhB,CANgB;EAQhB;;EACA,QAAIyH,IAAI,KAAK,MAAT,IAAmBK,MAAM,YAAYc,aAAzC,EAAwD;EACpDpM,MAAAA,KAAK,GAAGoM,aAAa,CAACxD,SAAd,CAAwBrI,IAAhC;EACH,KAFD,MAEO,IAAI0K,IAAI,KAAK,UAAT,IAAuB6B,WAAW,CAACxB,MAAD,CAAlC,IACA,OAAOA,MAAM,CAAC6M,QAAd,KAA2B,WAD/B,EAC4C;EAC/CnY,MAAAA,KAAK,GAAG0yB,aAAR;EACH,KAHM,MAGA;EACH1yB,MAAAA,KAAK,GAAGsL,MAAM,CAACL,IAAD,CAAd;EACH;;EACD,QAAI,OAAOjL,KAAP,KAAiB,WAArB,EAAkC;EAC9B,UAAI+J,IAAI,CAAC/H,MAAT,EAAiB;EACb,cAAM,IAAImD,KAAJ,sBAAwB4E,IAAI,CAAC,CAAD,CAA5B,qBAAN;EACH;;EACD,aAAO/J,KAAP;EACH,KALD,MAKO;EACH,UAAIklB,OAAJ;;EACA,UAAInb,IAAI,CAAC/H,MAAL,GAAc,CAAd,GAAkBwO,GAAtB,EAA2B;EACvB0U,QAAAA,OAAO,GAAG5Z,MAAV;EACH;;EACDtL,MAAAA,KAAK,GAAGilB,WAAW,CAACjlB,KAAD,EAAQklB,OAAR,CAAnB;EACH;;EACD5Z,IAAAA,MAAM,GAAGtL,KAAT;EACH;;EACD,SAAOA,KAAP;EACH,CAnCY,miBAAb;EA+CA;EACA;;EACA,SAASsM,QAAT,CAAkBgH,GAAlB,EAAuBrI,IAAvB,EAA6B;EACzB,MAAIumB,YAAY,GAAGmB,WAAW,CAACrf,GAAD,EAAM,kBAAN,CAA9B;EACA,SAAOke,YAAY,CAACtxB,GAAb,CAAiB+K,IAAjB,CAAP;EACH;EAED;EACA;;;EACA,SAAS0nB,WAAT,CAAqBrf,GAArB,EAA0BrI,IAA1B,EAAgC;EAC5B,MAAI2nB,eAAe,GAAGtf,GAAG,CAACpT,GAAJ,CAAQ,6BAAR,CAAtB;EACA,SAAO0yB,eAAe,CAAC1yB,GAAhB,CAAoB+K,IAApB,CAAP;EACH;;;EAED,IAAIumB,YAAY,GAAG,IAAIlT,WAAJ,CAAgB;EAC/B+S,EAAAA,MAAM,EAAE,IAAI1C,kBAAJ,CAAuB,YAAkB;EAAA;;EAC7C,gBAAAtuB,OAAO,EAACZ,GAAR;EACH,GAFO,CADuB;EAI/B;EACA0xB,EAAAA,MAAM,EAAE,IAAIxC,kBAAJ,CAAuB,YAAkB;EAAA;;EAC7C,iBAAAtuB,OAAO,EAACmU,KAAR;EACH,GAFO,CALuB;EAQ/B;EACA4c,EAAAA,KAAK,EAAEhT,SAAS,CAAC,YAAW;EACxB,WAAO1Q,OAAO,CAAC6hB,OAAR,CAAgBsD,MAAM,CAAC,EAAD,CAAtB,CAAP;EACH,GAFe,CATe;EAY/B;EACA,0BAAwB,6qPAbO;EAc/B,2BAAyB,szDAdM;EAe/B,yBAAuB;EAfQ,CAAhB,EAgBhB51B,SAhBgB,EAgBL,UAhBK,CAAnB;;EAkBA,IAAI0nB,GAAG,GAAGpgB,OAAO,CAACmB,GAAD,CAAjB;EACA,IAAIuC,SAAS,GAAG;EACZ,UAAQ,IADI;EAEZ,WAAS,KAFG;EAGZ,WAAS,IAHG;EAIZ,YAAU,KAJE;EAKZ,QAAM,IALM;EAMZ,QAAM,KANM;EAOZ+L,EAAAA,GAAG,EAAHA,IAPY;EAQZ,eAAa/W,SARD;EASZ,UAAQ,IATI;EAUZ,SAAO0nB,GAVK;EAWZ,YAAUA,GAXE;EAYZ,YAAUA;EAZE,CAAhB;;EAeA,IAAI1kB,UAAU,GAAG,IAAIqe,WAAJ,CAAgB;EAC7BhV,EAAAA,GAAG,EAAHA,GAD6B;EAE7BrM,EAAAA,SAAS,EAATA,SAF6B;EAElB;EACX;EACA,eAAawB,GAAG,CAAC,WAAD,EAAc,YAAsB;EAAA,QAAbq0B,IAAa,uEAAN,IAAM;;EAChD,QAAIA,IAAI,KAAK,IAAb,EAAmB;EACfA,MAAAA,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,OAAP,CAAf;EACH;;EACDymB,IAAAA,mBAAmB,CAAC,WAAD,EAAcD,IAAd,EAAoB,YAApB,CAAnB;EACA,WAAOA,IAAI,CAACpiB,SAAL,EAAP;EACH,GANe,uIAJa;EAc7B;EACA,eAAajS,GAAG,CAAC,WAAD,EAAc,YAAsB;EAAA,QAAbq0B,IAAa,uEAAN,IAAM;;EAChD,QAAIA,IAAI,KAAK,IAAb,EAAmB;EACfA,MAAAA,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,OAAP,CAAf;EACH;;EACDymB,IAAAA,mBAAmB,CAAC,WAAD,EAAcD,IAAd,EAAoB,YAApB,CAAnB;EACA,WAAOA,IAAI,CAAC5E,SAAL,EAAP;EACH,GANe,kFAfa;EAwB7B;EACA,eAAazvB,GAAG,CAAC,WAAD,EAAc,YAAsB;EAAA,QAAbq0B,IAAa,uEAAN,IAAM;;EAChD,QAAIA,IAAI,KAAK,IAAb,EAAmB;EACfA,MAAAA,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,OAAP,CAAf;EACH;;EACDymB,IAAAA,mBAAmB,CAAC,WAAD,EAAcD,IAAd,EAAoB,YAApB,CAAnB;EACA,WAAOA,IAAI,CAAC3E,SAAL,EAAP;EACH,GANe,kFAzBa;EAkC7B;EACA/wB,EAAAA,IAAI,EAAEqB,GAAG,CAAC,MAAD;EAAA,kEAAS;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAoB+E,cAAAA,GAApB,iEAA0B,IAA1B;;EAAA,mBACV+D,OAAO,CAACsE,QAAR,CAAiBrI,GAAjB,CADU;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA,0CAEcY,KAAK,CAACZ,GAAD,EAAM,IAAN,CAFnB;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAEKxD,cAAAA,KAFL;EAAA,iDAGCA,KAHD;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAOd,kBAAIwD,GAAG,KAAK,IAAZ,EAAkB;EACdsvB,gBAAAA,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,OAAP,CAAf;EACH,eAFD,MAEO;EACHwmB,gBAAAA,IAAI,GAAGtvB,GAAP;EACH;;EACDuvB,cAAAA,mBAAmB,CAAC,MAAD,EAASD,IAAT,EAAe,YAAf,CAAnB;EAZc,iDAaPA,IAAI,CAAC11B,IAAL,CAAUgC,IAAV,CAAe,IAAf,CAbO;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAT;;EAAA,aAAwBhC,IAAxB;EAAA;EAAA;;EAAA,WAAwBA,IAAxB;EAAA,saAnCoB;EAyD7B;EACA41B,EAAAA,MAAM,EAAEv0B,GAAG,CAAC,QAAD,EAAW,SAASu0B,MAAT,CAAgBxvB,GAAhB,EAAqB;EACvC,QAAIA,GAAG,YAAY4Q,IAAnB,EAAyB;EACrB5Q,MAAAA,GAAG,GAAG,IAAIwU,IAAI,CAACE,SAAT,CAAmB1U,GAAG,CAACnG,QAAJ,CAAa,IAAb,CAAnB,aAA+Cud,MAA/C,EAAN;EACA3a,MAAAA,UAAU,CAACC,GAAX,CAAe,SAAf,EAA0Bd,IAA1B,CAA+Ba,UAA/B,EAA2CuD,GAA3C;EACH,KAHD,MAGO;EACHvD,MAAAA,UAAU,CAACC,GAAX,CAAe,OAAf,EAAwBd,IAAxB,CAA6Ba,UAA7B,EAAyCuD,GAAzC;EACH;;EACDvD,IAAAA,UAAU,CAACC,GAAX,CAAe,SAAf,EAA0Bd,IAA1B,CAA+Ba,UAA/B;EACH,GARU,0JA1DkB;EAsE7B;EACAgzB,EAAAA,KAAK,EAAEx0B,GAAG,CAAC,OAAD,EAAU,SAASw0B,KAAT,GAAwB;EACxC,QAAMC,OAAO,GAAGjzB,UAAU,CAACC,GAAX,CAAe,SAAf,CAAhB;EACA,QAAMmR,OAAO,GAAGpR,UAAU,CAACC,GAAX,CAAe,SAAf,CAAhB;;EAFwC,wCAAN6J,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAGxCA,IAAAA,IAAI,CAACtI,OAAL,CAAa,UAAA+B,GAAG,EAAI;EAChB0vB,MAAAA,OAAO,CAAC9zB,IAAR,CAAaa,UAAb,EAAyBuD,GAAzB;EACA6N,MAAAA,OAAO,CAACjS,IAAR,CAAaa,UAAb;EACH,KAHD;EAIH,GAPS,8PAvEmB;EAmF7B;EACA2a,EAAAA,MAAM,EAAEnc,GAAG,CAAC,QAAD,EAAW,SAASmc,MAAT,CAAgBtU,GAAhB,EAA8B;EAAA,wCAANyD,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAChDyR,IAAAA,SAAS,CAAC,QAAD,EAAWlV,GAAX,EAAgB,QAAhB,CAAT;EACA,QAAMP,EAAE,GAAG,YAAX;EACA,QAAIlD,CAAC,GAAGyD,GAAG,CAAC5C,KAAJ,CAAU,UAAV,CAAR;;EACA,QAAIb,CAAC,IAAIA,CAAC,CAACb,MAAF,GAAW+H,IAAI,CAAC/H,MAAzB,EAAiC;EAC7B,YAAM,IAAImD,KAAJ,CAAU,sBAAV,CAAN;EACH;;EACD,QAAIuF,CAAC,GAAG,CAAR;EACA,QAAI6R,IAAI,GAAGtc,UAAU,CAACC,GAAX,CAAe,MAAf,CAAX;EACAoG,IAAAA,GAAG,GAAGA,GAAG,CAAC1C,OAAJ,CAAYmC,EAAZ,EAAgB,UAACrG,CAAD,EAAO;EACzB,UAAMmI,GAAG,GAAGnI,CAAC,CAAC,CAAD,CAAb;;EACA,UAAImI,GAAG,KAAK,GAAZ,EAAiB;EACb,eAAO,GAAP;EACH,OAFD,MAEO,IAAIA,GAAG,KAAK,GAAZ,EAAiB;EACpB,eAAO,IAAP;EACH,OAFM,MAEA;EACH,YAAMrE,GAAG,GAAGuG,IAAI,CAACW,CAAC,EAAF,CAAhB;;EACA,YAAI7C,GAAG,KAAK,GAAZ,EAAiB;EACb,iBAAO0U,IAAI,CAAC/Y,GAAD,CAAX;EACH,SAFD,MAEO;EACH,iBAAO+Y,IAAI,CAAC/Y,GAAD,EAAM,IAAN,CAAX;EACH;EACJ;EACJ,KAdK,CAAN;EAeAX,IAAAA,CAAC,GAAGyD,GAAG,CAAC5C,KAAJ,CAAU,SAAV,CAAJ;;EACA,QAAIb,CAAJ,EAAO;EACH,YAAM,IAAIsC,KAAJ,+CAAiDtC,CAAC,CAAC,CAAD,CAAlD,EAAN;EACH;;EACD,WAAOyD,GAAP;EACH,GA7BU,8ZApFkB;EA4H7B;EACA4sB,EAAAA,OAAO,EAAEz0B,GAAG,CAAC,SAAD,EAAY,SAASy0B,OAAT,CAAiB1vB,GAAjB,EAAmC;EAAA,QAAbsvB,IAAa,uEAAN,IAAM;;EACvD,QAAIA,IAAI,KAAK,IAAb,EAAmB;EACfA,MAAAA,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,QAAP,CAAf;EACH,KAFD,MAEO;EACHkP,MAAAA,SAAS,CAAC,SAAD,EAAYsX,IAAZ,EAAkB,aAAlB,CAAT;EACH;;EACD,QAAM9yB,KAAK,GAAGC,UAAU,CAACC,GAAX,CAAe,MAAf,EAAuBsD,GAAvB,CAAd;EACAsvB,IAAAA,IAAI,CAACtE,KAAL,CAAWpvB,IAAX,CAAgBa,UAAhB,EAA4BD,KAA5B;EACH,GARW,iGA7HiB;EAwI7B;EACA,mBAAiBvB,GAAG,CAAC,eAAD,EAAkB,SAAS+V,KAAT,GAAwB;EAC1D,QAAMse,IAAI,GAAGxmB,QAAQ,CAAC,IAAD,EAAO,QAAP,CAArB;EACA,QAAMiQ,IAAI,GAAGtc,UAAU,CAACC,GAAX,CAAe,MAAf,CAAb;;EAF0D,wCAAN6J,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAG1D,QAAM/J,KAAK,GAAG+J,IAAI,CAACnH,GAAL,CAAS2Z,IAAT,EAAeha,IAAf,CAAoB,GAApB,CAAd;EACAuwB,IAAAA,IAAI,CAACtE,KAAL,CAAWpvB,IAAX,CAAgBa,UAAhB,EAA4BD,KAA5B;EACAC,IAAAA,UAAU,CAACC,GAAX,CAAe,SAAf,EAA0B4yB,IAA1B;EACH,GANmB,iEAzIS;EAkJ7B;EACA,qBAAmBr0B,GAAG,CAAC,iBAAD,EAAoB,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EACrD,QAAI,CAACjG,WAAW,CAACgG,CAAD,CAAhB,EAAqB;EACjB,aAAO,KAAP;EACH;;EACD,QAAI,CAAChG,WAAW,CAACiG,CAAD,CAAhB,EAAqB;EACjB,aAAO,KAAP;EACH;;EACD,WAAO6J,MAAM,CAAC9J,CAAD,CAAN,KAAc8J,MAAM,CAAC7J,CAAD,CAA3B;EACH,GARqB,wGAnJO;EA8J7B;EACAogB,EAAAA,IAAI,EAAE10B,GAAG,CAAC,IAAI4W,KAAJ,CAAU,MAAV,EAAkB,UAASf,IAAT,UAAyC;EAAA,QAAxBoM,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,KAAS,UAATA,KAAS;EACjE,QAAIhJ,MAAJ;;EACA,QAAI8I,IAAI,CAACU,GAAL,YAAoBjN,OAAxB,EAAiC;EAC7ByD,MAAAA,MAAM,GAAG8I,IAAI,CAACU,GAAd;EACH,KAFD,MAEO,IAAIV,IAAI,CAACU,GAAL,YAAoBZ,IAApB,IAA4BE,IAAI,CAACU,GAAL,CAASA,GAAT,YAAwBjN,OAAxD,EAAiE;EACpEyD,MAAAA,MAAM,GAAG8I,IAAI,CAACU,GAAL,CAASA,GAAlB;EACH,KAFM,MAEA;EACH,UAAI1B,GAAG,GAAG,IAAV;;EACA,UAAIoN,aAAJ,EAAmB;EACfA,QAAAA,aAAa,GAAG,IAAhB;EACH;;EACD,UAAIzK,GAAG,GAAG1B,SAAQ,CAACD,IAAI,CAACU,GAAN,EAAW;EAAE1B,QAAAA,GAAG,EAAHA,GAAF;EAAOkB,QAAAA,KAAK,EAALA,KAAP;EAAckM,QAAAA,aAAa,EAAbA;EAAd,OAAX,CAAlB;;EACA,UAAIzK,GAAG,IAAIA,GAAG,CAACY,OAAf,EAAwB;EACpB,eAAOZ,GAAG,CAACY,OAAX;EACH;;EACD;EACH;;EACD,QAAIA,OAAJ;;EACA,QAAI7W,KAAK,GAAG,KAAKE,GAAL,CAASsL,MAAT,CAAZ;EACAqL,IAAAA,OAAO,GAAG7W,KAAK,IAAIA,KAAK,CAAC6W,OAAzB;;EACA,QAAIA,OAAJ,EAAa;EACT,aAAOA,OAAP;EACH;;EACD,QAAItB,GAAG,GAAG,KAAKA,GAAL,CAAS/J,MAAT,CAAV;;EACA,QAAI+J,GAAJ,EAAS;EACLsB,MAAAA,OAAO,GAAGtB,GAAG,CAAC9W,GAAJ,CAAQ+M,MAAR,CAAV;;EACA,UAAIqL,OAAJ,EAAa;EACT,eAAOA,OAAP;EACH;EACJ;EACJ,GA9BS,CAAD,gPA/JoB;EAkM7B;EACAuc,EAAAA,IAAI,EAAE30B,GAAG,CAAC,MAAD,EAAS,SAAS20B,IAAT,CAAcpe,GAAd,EAAmBb,GAAnB,EAAwB;EACtC,WAAO,IAAIC,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH,GAFQ,oFAnMoB;EAwM7B;EACAa,EAAAA,GAAG,EAAEvW,GAAG,CAAC,KAAD,EAAQ,SAASuW,GAAT,CAAa7J,IAAb,EAAmB;EAC/BqQ,IAAAA,SAAS,CAAC,KAAD,EAAQrQ,IAAR,EAAc,MAAd,CAAT;EACA,WAAOA,IAAI,CAAC6J,GAAZ;EACH,GAHO,4EAzMqB;EA+M7B;EACAb,EAAAA,GAAG,EAAE1V,GAAG,CAAC,KAAD,EAAQ,SAAS0V,GAAT,CAAahJ,IAAb,EAAmB;EAC/BqQ,IAAAA,SAAS,CAAC,KAAD,EAAQrQ,IAAR,EAAc,MAAd,CAAT;EACA,WAAOA,IAAI,CAACgJ,GAAZ;EACH,GAHO,4EAhNqB;EAsN7B;EACA,UAAQ1V,GAAG,CAAC,IAAI4W,KAAJ,CAAU,MAAV,EAAkB,UAASf,IAAT,EAA8C;EAAA;;EAAA,qFAAJ,EAAI;EAAA,QAA7BoM,aAA6B,UAA7BA,aAA6B;EAAA,QAAdlM,KAAc,UAAdA,KAAc;;EACxE,QAAIkM,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG,IAAhB;EACH;;EACD,QAAIpN,GAAG,GAAG,IAAV;EACA,QAAIiC,GAAJ;;EACA,QAAIvV,KAAK,GAAGuU,SAAQ,CAACD,IAAI,CAACH,GAAL,CAASa,GAAV,EAAe;EAAE1B,MAAAA,GAAG,EAAE,IAAP;EAAaoN,MAAAA,aAAa,EAAbA,aAAb;EAA4BlM,MAAAA,KAAK,EAALA;EAA5B,KAAf,CAApB;;EACAxU,IAAAA,KAAK,GAAGqzB,gBAAgB,CAACrzB,KAAD,CAAxB;;EACA,aAASuP,GAAT,CAAajE,MAAb,EAAqBuJ,GAArB,EAA0B7U,KAA1B,EAAiC;EAC7B,UAAIM,UAAU,CAACgL,MAAD,CAAd,EAAwB;EACpB,eAAOA,MAAM,CAAC/K,IAAP,CAAY,UAAAsU,GAAG;EAAA,iBAAItF,GAAG,CAACjE,MAAD,EAASuJ,GAAT,EAAc7U,KAAd,CAAP;EAAA,SAAf,CAAP;EACH;;EACD,UAAIM,UAAU,CAACuU,GAAD,CAAd,EAAqB;EACjB,eAAOA,GAAG,CAACtU,IAAJ,CAAS,UAAAsU,GAAG;EAAA,iBAAItF,GAAG,CAACjE,MAAD,EAASuJ,GAAT,EAAc7U,KAAd,CAAP;EAAA,SAAZ,CAAP;EACH;;EACD,UAAIM,UAAU,CAACN,KAAD,CAAd,EAAuB;EACnB,eAAOA,KAAK,CAACO,IAAN,CAAW,UAAAP,KAAK;EAAA,iBAAIuP,GAAG,CAACjE,MAAD,EAASuJ,GAAT,EAAc7U,KAAd,CAAP;EAAA,SAAhB,CAAP;EACH;;EACDsT,MAAAA,GAAG,CAACpT,GAAJ,CAAQ,UAAR,EAAoBd,IAApB,CAAyBkU,GAAzB,EAA8BhI,MAA9B,EAAsCuJ,GAAtC,EAA2C7U,KAA3C;EACA,aAAOA,KAAP;EACH;;EACD,QAAIsU,IAAI,CAACU,GAAL,YAAoBZ,IAApB,IAA4BrM,OAAO,CAACwD,EAAR,CAAW+I,IAAI,CAACU,GAAL,CAASA,GAApB,EAAyB,GAAzB,CAAhC,EAA+D;EAC3D,UAAIuM,MAAM,GAAGjN,IAAI,CAACU,GAAL,CAASb,GAAT,CAAaa,GAA1B;EACA,UAAIse,KAAK,GAAGhf,IAAI,CAACU,GAAL,CAASb,GAAT,CAAaA,GAAb,CAAiBa,GAA7B;;EACA,UAAI1J,MAAM,GAAGiJ,SAAQ,CAACgN,MAAD,EAAS;EAAEjO,QAAAA,GAAG,EAAE,IAAP;EAAaoN,QAAAA,aAAa,EAAbA,aAAb;EAA4BlM,QAAAA,KAAK,EAALA;EAA5B,OAAT,CAArB;;EACA,UAAIK,GAAG,GAAGN,SAAQ,CAAC+e,KAAD,EAAQ;EAAEhgB,QAAAA,GAAG,EAAE,IAAP;EAAaoN,QAAAA,aAAa,EAAbA,aAAb;EAA4BlM,QAAAA,KAAK,EAALA;EAA5B,OAAR,CAAlB;;EACA,aAAOjF,GAAG,CAACjE,MAAD,EAASuJ,GAAT,EAAc7U,KAAd,CAAV;EACH;;EACD,QAAI,EAAEsU,IAAI,CAACU,GAAL,YAAoBjN,OAAtB,CAAJ,EAAoC;EAChC,YAAM,IAAI5C,KAAJ,CAAU,gDACA,uCADV,CAAN;EAEH;;EACD,QAAIqG,MAAM,GAAG8I,IAAI,CAACU,GAAL,CAASvQ,OAAT,EAAb;EACA8Q,IAAAA,GAAG,GAAG,KAAKA,GAAL,CAASjB,IAAI,CAACU,GAAL,CAAS5J,QAAlB,CAAN,CAjCwE;EAmCxE;;EACA,WAAO4K,SAAS,CAAChW,KAAD,EAAQ,UAAAA,KAAK,EAAI;EAC7B,UAAI,CAACuV,GAAL,EAAU;EACN;EACA,YAAI9R,KAAK,GAAG+H,MAAM,CAAC1H,KAAP,CAAa,GAAb,CAAZ;;EACA,YAAIL,KAAK,CAACzB,MAAN,GAAe,CAAnB,EAAsB;EAClB,cAAI6S,GAAG,GAAGpR,KAAK,CAACqF,GAAN,EAAV;EACA,cAAImC,IAAI,GAAGxH,KAAK,CAAClB,IAAN,CAAW,GAAX,CAAX;;EACA,cAAIuJ,GAAG,GAAG,OAAI,CAAC5L,GAAL,CAAS+K,IAAT,EAAe;EAAExK,YAAAA,UAAU,EAAE;EAAd,WAAf,CAAV;;EACA,cAAIqL,GAAJ,EAAS;EACLyD,YAAAA,GAAG,CAACzD,GAAD,EAAM+I,GAAN,EAAW7U,KAAX,CAAH;EACA;EACH;EACJ;;EACD,cAAM,IAAImF,KAAJ,CAAU,uBAAuBqG,MAAvB,GAAgC,IAA1C,CAAN;EACH;;EACD+J,MAAAA,GAAG,CAAChG,GAAJ,CAAQ/D,MAAR,EAAgBxL,KAAhB;EACH,KAhBe,CAAhB;EAiBH,GArDW,CAAD,6LAvNkB;EAgR7B;EACA,YAAUvB,GAAG,CAAC,IAAI4W,KAAJ,CAAU,MAAV,EAAkB,UAASf,IAAT,EAAe;EAC3C,QAAI,EAAEA,IAAI,CAACU,GAAL,YAAoBjN,OAAtB,CAAJ,EAAoC;EAChC,YAAM,IAAI5C,KAAJ,CAAU,kDACA,uCADV,CAAN;EAEH;;EACD,QAAMqG,MAAM,GAAG8I,IAAI,CAACU,GAApB;EACA,QAAIO,GAAG,GAAG,KAAKA,GAAL,CAAS/J,MAAT,CAAV;;EACA,QAAI+J,GAAJ,EAAS;EACL,aAAOA,GAAG,CAAC/B,OAAJ,CAAYhI,MAAM,CAACJ,QAAnB,CAAP;EACH;EACJ,GAVa,CAAD,kFAjRgB;EA8R7B;EACA,cAAY3M,GAAG,CAAC,UAAD,EAAa,UAAS80B,IAAT,EAAevzB,KAAf,EAAsB;EAC9Cwb,IAAAA,SAAS,CAAC,UAAD,EAAa+X,IAAb,EAAmB,MAAnB,CAAT;EACAA,IAAAA,IAAI,CAACve,GAAL,GAAWhV,KAAX;EACH,GAHc,mKA/Rc;EAsS7B;EACA,cAAYvB,GAAG,CAAC,UAAD,EAAa,UAAS80B,IAAT,EAAevzB,KAAf,EAAsB;EAC9Cwb,IAAAA,SAAS,CAAC,UAAD,EAAa+X,IAAb,EAAmB,MAAnB,CAAT;EACAA,IAAAA,IAAI,CAACpf,GAAL,GAAWnU,KAAX;EACH,GAHc,mKAvSc;EA8S7B;EACA,YAAUvB,GAAG,CAAC,QAAD,EAAW,UAASiB,CAAT,EAAY;EAChC,WAAO,OAAOA,CAAP,KAAa,WAAb,IAA4BA,CAAC,KAAKsU,IAAzC;EACH,GAFY,yFA/SgB;EAoT7B;EACAjI,EAAAA,MAAM,EAAEtN,GAAG,CACP,QADO,EAEPsN,MAFO,+FArTkB;EA2T7B;EACA;EACA;EACAynB,EAAAA,IAAI,EAAE/0B,GAAG,CAAC,MAAD,EAAS,SAAS+0B,IAAT,CAAcC,IAAd,EAAoBngB,GAApB,EAAyB;EACvCkI,IAAAA,SAAS,CAAC,MAAD,EAASiY,IAAT,EAAe,QAAf,CAAT;EACA,QAAIC,KAAK,GAAG,IAAZ;;EACA,QAAIA,KAAK,CAACtoB,QAAN,KAAmB,WAAvB,EAAoC;EAChCsoB,MAAAA,KAAK,GAAGA,KAAK,CAAC3B,UAAd;EACH;;EACD,QAAI,EAAEze,GAAG,YAAYgL,WAAjB,CAAJ,EAAmC;EAC/B,UAAIoV,KAAK,KAAKzzB,UAAd,EAA0B;EACtB;EACA;EACAqT,QAAAA,GAAG,GAAGogB,KAAN;EACH,OAJD,MAIO;EACHpgB,QAAAA,GAAG,GAAG,KAAKpT,GAAL,CAAS,6BAAT,CAAN;EACH;EACJ;;EACD,QAAMyzB,IAAI,GAAG,iBAAb;EACA,QAAIC,WAAW,GAAG3zB,UAAU,CAACC,GAAX,CAAeyzB,IAAf,EAAqB;EAAElzB,MAAAA,UAAU,EAAE;EAAd,KAArB,CAAlB;EACAgzB,IAAAA,IAAI,GAAGA,IAAI,CAAChvB,OAAL,EAAP;;EACA,QAAI,CAACgvB,IAAI,CAAC/vB,KAAL,CAAW,SAAX,CAAL,EAA4B;EACxB+vB,MAAAA,IAAI,IAAI,MAAR;EACH;;EACD,QAAMI,MAAM,GAAGJ,IAAI,CAAC/vB,KAAL,CAAW,QAAX,CAAf;;EACA,aAASowB,GAAT,CAAaxf,IAAb,EAAmB;EACf,UAAIuf,MAAJ,EAAY;EACRvf,QAAAA,IAAI,GAAGyf,eAAe,CAACzf,IAAD,CAAtB;EACH,OAFD,MAEO;EACH,YAAIpV,IAAI,CAACoV,IAAD,CAAJ,KAAe,QAAnB,EAA6B;EACzBA,UAAAA,IAAI,GAAGA,IAAI,CAACjX,QAAL,EAAP;EACH;;EACDiX,QAAAA,IAAI,GAAGA,IAAI,CAAC1Q,OAAL,CAAa,OAAb,EAAsB,EAAtB,CAAP;;EACA,YAAI0Q,IAAI,CAAC5Q,KAAL,CAAW,KAAX,CAAJ,EAAuB;EACnB4Q,UAAAA,IAAI,GAAG0f,WAAW,CAAC1f,IAAD,CAAlB;EACH;EACJ;;EACD,aAAOoS,IAAI,CAACpS,IAAD,EAAOhB,GAAP,CAAX;EACH;;EACD,aAASxV,KAAT,CAAe21B,IAAf,EAAqB;EACjB,aAAO71B,IAAI,CAACE,KAAL,CAAW21B,IAAX,EACFlzB,IADE,CACG,UAAA0zB,GAAG;EAAA,eAAIJ,MAAM,GAAGI,GAAG,CAACC,WAAJ,EAAH,GAAuBD,GAAG,CAACE,IAAJ,EAAjC;EAAA,OADN,EAEF5zB,IAFE,CAEG,UAAC+T,IAAD,EAAU;EACZ,YAAIuf,MAAJ,EAAY;EACRvf,UAAAA,IAAI,GAAG,IAAIgc,UAAJ,CAAehc,IAAf,CAAP;EACH;;EACD,eAAOA,IAAP;EACH,OAPE,CAAP;EAQH;;EACD,QAAI8f,OAAO,EAAX,EAAe;EACX,aAAO,IAAI1mB,OAAJ,CAAY,UAAC6hB,OAAD,EAAUC,MAAV,EAAqB;EACpC,YAAIvxB,IAAI,GAAGC,WAAW,CAAC,MAAD,CAAtB;;EACA,YAAI01B,WAAJ,EAAiB;EACbA,UAAAA,WAAW,GAAGA,WAAW,CAACnvB,OAAZ,EAAd;EACAgvB,UAAAA,IAAI,GAAGx1B,IAAI,CAACsE,IAAL,CAAUqxB,WAAV,EAAuBH,IAAvB,CAAP;EACH;;EACDxzB,QAAAA,UAAU,CAACsP,GAAX,CAAeokB,IAAf,EAAqB11B,IAAI,CAACo2B,OAAL,CAAaZ,IAAb,CAArB;EACAv1B,QAAAA,WAAW,CAAC,IAAD,CAAX,CAAkBo2B,QAAlB,CAA2Bb,IAA3B,EAAiC,UAAS1mB,GAAT,EAAcpE,IAAd,EAAoB;EACjD,cAAIoE,GAAJ,EAAS;EACLyiB,YAAAA,MAAM,CAACziB,GAAD,CAAN;EACA9M,YAAAA,UAAU,CAACsP,GAAX,CAAeokB,IAAf,EAAqBC,WAArB;EACH,WAHD,MAGO;EACH,gBAAI;EACAE,cAAAA,GAAG,CAACnrB,IAAD,CAAH,CAAUpI,IAAV,CAAe,YAAM;EACjBgvB,gBAAAA,OAAO;EACPtvB,gBAAAA,UAAU,CAACsP,GAAX,CAAeokB,IAAf,EAAqBC,WAArB;EACH,eAHD,WAGSpE,MAHT;EAIH,aALD,CAKE,OAAOvwB,CAAP,EAAU;EACRuwB,cAAAA,MAAM,CAACvwB,CAAD,CAAN;EACH;EACJ;EACJ,SAdD;EAeH,OAtBM,CAAP;EAuBH;;EACD,QAAI20B,WAAJ,EAAiB;EACbA,MAAAA,WAAW,GAAGA,WAAW,CAACnvB,OAAZ,EAAd;EACAgvB,MAAAA,IAAI,GAAGG,WAAW,GAAG,GAAd,GAAoBH,IAAI,CAAC7vB,OAAL,CAAa,SAAb,EAAwB,EAAxB,CAA3B;EACH;;EACD,WAAO9F,KAAK,CAAC21B,IAAD,CAAL,CAAYlzB,IAAZ,CAAiB,UAAA+T,IAAI,EAAI;EAC5BrU,MAAAA,UAAU,CAACsP,GAAX,CAAeokB,IAAf,EAAqBF,IAAI,CAAC7vB,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAArB;EACA,aAAOkwB,GAAG,CAACxf,IAAD,CAAV;EACH,KAHM,EAGJ/T,IAHI,CAGC,YAAM,EAHP,aAGmB,YAAM;EAC5BN,MAAAA,UAAU,CAACsP,GAAX,CAAeokB,IAAf,EAAqBC,WAArB;EACH,KALM,CAAP;EAMH,GAjFQ,yQA9ToB;EAqZ7B;EACA,QAAMn1B,GAAG,CAAC,IAAI4W,KAAJ,CAAU,IAAV;EAAA,kEAAgB,mBAAef,IAAf;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAuBoM,cAAAA,aAAvB,UAAuBA,aAAvB,EAAsClM,KAAtC,UAAsCA,KAAtC;EAClB3W,cAAAA,IADkB,GACX,IADW;;EAEtB,kBAAI6iB,aAAJ,EAAmB;EACfA,gBAAAA,aAAa,GAAG7iB,IAAhB;EACH;;EACG4jB,cAAAA,KALkB,GAKV5jB,IAAI,CAAC2oB,OAAL,CAAa,IAAb,CALU;EAMlB+N,cAAAA,IANkB,GAMXjgB,IAAI,CAACU,GANM;EAOlB5U,cAAAA,IAPkB,GAOXkU,IAAI,CAACH,GAAL,CAASa,GAPE;EAQlBwf,cAAAA,IARkB,GAQXlgB,IAAI,CAACH,GAAL,CAASA,GARE;;EAStB,kBAAIqgB,IAAI,KAAKxgB,IAAb,EAAkB;EACdwgB,gBAAAA,IAAI,GAAG,IAAIpgB,IAAJ,CAASrM,OAAO,CAAC,OAAD,CAAhB,EAA2BysB,IAA3B,CAAP;EACH;;EACGC,cAAAA,SAZkB,GAYN;EAAEnhB,gBAAAA,GAAG,EAAEzV,IAAP;EAAa6iB,gBAAAA,aAAa,EAAbA,aAAb;EAA4BlM,gBAAAA,KAAK,EAALA;EAA5B,eAZM;EAalB2G,cAAAA,IAbkB,GAaXoZ,IAbW;;EAAA;EAAA,oBAcfpZ,IAAI,KAAKnH,IAdM;EAAA;EAAA;EAAA;;EAeZnL,cAAAA,IAfY,GAeLsS,IAAI,CAACnG,GAfA;EAAA,8BAgBlByM,KAhBkB;EAAA,8BAgBR5Y,IAAI,CAACmM,GAhBG;EAAA;EAAA,qBAgBQT,SAAQ,CAAC1L,IAAI,CAACsL,GAAL,CAASa,GAAV,EAAeyf,SAAf,CAhBhB;;EAAA;EAAA;;EAAA,4BAgBZllB,GAhBY;;EAiBlB4L,cAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EAjBkB;EAAA;;EAAA;EAmBtBsgB,cAAAA,SAAS,GAAG;EAAEnhB,gBAAAA,GAAG,EAAEmO,KAAP;EAAcf,gBAAAA,aAAa,EAAbA,aAAd;EAA6BlM,gBAAAA,KAAK,EAALA;EAA7B,eAAZ;EAnBsB;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA,8BAqBdggB,IAAI,KAAKxgB,IArBK;EAAA;EAAA;EAAA;;EAAA;EAAA,+BAsBRgE,IAAI,CAACzD,QAAL,CAAcigB,IAAd,EAAoBC,SAApB,CAtBQ;;EAAA;EAwBdtZ,wBAAAA,IAxBc,GAwBPoZ,IAxBO;EAyBZ9Z,wBAAAA,IAzBY,GAyBL,EAzBK;;EAAA;EAAA,8BA0BXU,IAAI,KAAKnH,IA1BE;EAAA;EAAA;EAAA;;EA2BRnL,wBAAAA,KA3BQ,GA2BDsS,IAAI,CAACnG,GA3BJ;;EAAA,8BA4BVnM,KAAI,CAACsL,GAAL,CAASA,GAAT,KAAiBH,IA5BP;EAAA;EAAA;EAAA;;EAAA;EAAA,+BA6BUO,SAAQ,CAAC1L,KAAI,CAACsL,GAAL,CAASA,GAAT,CAAaa,GAAd,EAAmByf,SAAnB,CA7BlB;;EAAA;EA6BJz0B,wBAAAA,KA7BI;EA8BVya,wBAAAA,IAAI,CAAC5R,KAAI,CAACmM,GAAL,CAASvQ,OAAT,EAAD,CAAJ,GAA2BzE,KAA3B;;EA9BU;EAgCdmb,wBAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EAhCc;EAAA;;EAAA;EAkCZ2F,wBAAAA,OAlCY,GAkCFzX,MAAM,CAAC+a,qBAAP,CAA6B3C,IAA7B,CAlCE;EAmClBpY,wBAAAA,MAAM,CAACC,IAAP,CAAYmY,IAAZ,EAAkB7I,MAAlB,CAAyBkI,OAAzB,EAAkCrY,OAAlC,CAA0C,UAAAoT,GAAG,EAAI;EAC7C4M,0BAAAA,KAAK,CAAClS,GAAN,CAAUsF,GAAV,EAAe4F,IAAI,CAAC5F,GAAD,CAAnB;EACH,yBAFD;;EAnCkB;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA,qBAoBRN,SAAQ,CAACnU,IAAI,CAAC4U,GAAN,EAAWyf,SAAX,CApBA;;EAAA;EAAA;;EAAA,sCAoB2B,KApB3B;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA,oBAuClBr0B,IAAI,CAAC+T,GAAL,KAAaH,IAvCK;EAAA;EAAA;EAAA;;EAAA;EAAA,qBAwCLO,SAAQ,CAACnU,IAAI,CAAC+T,GAAL,CAASa,GAAV,EAAeyf,SAAf,CAxCH;;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAhB;;EAAA;EAAA;EAAA;EAAA,MAAD,6dAtZoB;EAuc7B;EACA,QAAMh2B,GAAG,CAAC,IAAI4W,KAAJ,CAAU,IAAV,EAAgB,UAASf,IAAT,UAAyC;EAAA,QAAxBoM,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,KAAS,UAATA,KAAS;;EAC/D,QAAIkM,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG,IAAhB;EACH;;EACD,QAAIpN,GAAG,GAAG,IAAV;;EACA,QAAIic,OAAO,GAAG,SAAVA,OAAU,CAACmF,IAAD,EAAU;EACpB,UAAIA,IAAI,KAAK,KAAb,EAAoB;EAChB,eAAOngB,SAAQ,CAACD,IAAI,CAACH,GAAL,CAASA,GAAT,CAAaa,GAAd,EAAmB;EAC9B1B,UAAAA,GAAG,EAAHA,GAD8B;EAE9BoN,UAAAA,aAAa,EAAbA,aAF8B;EAG9BlM,UAAAA,KAAK,EAALA;EAH8B,SAAnB,CAAf;EAKH,OAND,MAMO;EACH,eAAOD,SAAQ,CAACD,IAAI,CAACH,GAAL,CAASa,GAAV,EAAe;EAC1B1B,UAAAA,GAAG,EAAHA,GAD0B;EAE1BoN,UAAAA,aAAa,EAAbA,aAF0B;EAG1BlM,UAAAA,KAAK,EAALA;EAH0B,SAAf,CAAf;EAKH;EACJ,KAdD;;EAeA,QAAIF,IAAI,KAAKN,IAAb,EAAkB;EACd,YAAM,IAAI7O,KAAJ,CAAU,8BAAV,CAAN;EACH;;EACD,QAAIuvB,IAAI,GAAGngB,SAAQ,CAACD,IAAI,CAACU,GAAN,EAAW;EAAE1B,MAAAA,GAAG,EAAHA,GAAF;EAAOoN,MAAAA,aAAa,EAAbA,aAAP;EAAsBlM,MAAAA,KAAK,EAALA;EAAtB,KAAX,CAAnB;;EACA,WAAOwB,SAAS,CAAC0e,IAAD,EAAOnF,OAAP,CAAhB;EACH,GAzBS,CAAD,gOAxcoB;EAse7B;EACA,aAAW,IAAIla,KAAJ,CAAU,SAAV,EAAqB,UAASf,IAAT,EAA6B;EAAA,QAAd3Q,OAAc,uEAAJ,EAAI;EACzD,QAAQ+c,aAAR,GAAiC/c,OAAjC,CAAQ+c,aAAR;EAAA,QAAuBlM,KAAvB,GAAiC7Q,OAAjC,CAAuB6Q,KAAvB;EACAgH,IAAAA,SAAS,CAAC,SAAD,EAAYlH,IAAZ,EAAkB,MAAlB,CAAT;;EACA,QAAI2B,GAAG,GAAG1B,SAAQ,CAACD,IAAI,CAACU,GAAN,EAAW;EAAE1B,MAAAA,GAAG,EAAE,IAAP;EAAaoN,MAAAA,aAAa,EAAbA,aAAb;EAA4BlM,MAAAA,KAAK,EAALA;EAA5B,KAAX,CAAlB;;EACA,WAAOwB,SAAS,CAACC,GAAD,EAAM,UAASjW,KAAT,EAAgB;EAClCwb,MAAAA,SAAS,CAAC,SAAD,EAAYxb,KAAZ,EAAmB,aAAnB,CAAT;EACA,aAAOuU,SAAQ,CAACH,IAAI,CAACrM,OAAO,CAAC,OAAD,CAAR,EAAmBuM,IAAI,CAACH,GAAxB,CAAL,EAAmC;EAC9Cb,QAAAA,GAAG,EAAEtT,KADyC;EAClC0gB,QAAAA,aAAa,EAAbA,aADkC;EACnBlM,QAAAA,KAAK,EAALA;EADmB,OAAnC,CAAf;EAGH,KALe,CAAhB;EAMH,GAVU,8HAvekB;EAqf7B;EACA,YAAU/V,GAAG,CACT6nB,SAAS,CAACjb,MAAM,OAAN,CAAW,QAAX,CAAD,CADA,mUAtfgB;EA8f7B;EACA,aAAW5M,GAAG,CACV6nB,SAAS,CAACjb,MAAM,OAAN,CAAW,QAAX,CAAD,CADC,uRA/fe;EAsgB7B;EACA,UAAQ5M,GAAG,CACP6nB,SAAS,CAACjb,MAAM,OAAN,CAAW,MAAX,CAAD,CADF,0OAvgBkB;EA8gB7B;EACA,SAAO5M,GAAG,CACN6nB,SAAS,CAACjb,MAAM,OAAN,CAAW,KAAX,CAAD,CADH,iZA/gBmB;EAwhB7B;EACA,YAAU5M,GAAG,CAACmoB,OAAO,CAAC,QAAD,EAAW,UAASrQ,MAAT,EAAiB;EAC7C,WAAOA,MAAM,CAACzN,GAAP,EAAP;EACH,GAFoB,CAAR,gOAzhBgB;EAgiB7B;EACA,WAASrK,GAAG,CAAC,IAAI4W,KAAJ,CAAU,OAAV,EAAmB,UAASf,IAAT,EAAe3Q,OAAf,EAAwB;EACpD,QAAIoG,IAAI,GAAG1H,MAAM,CAACoW,MAAP,CAAc,EAAd,EAAmB9U,OAAnB,CAAX;EACA,QAAIwL,GAAG,GAAGlP,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BoU,IAA9B,CAAV;;EACA,QAAIvK,IAAI,CAAC2W,aAAT,EAAwB;EACpB3W,MAAAA,IAAI,CAAC2W,aAAL,GAAqB,IAArB;EACH;;EACD3W,IAAAA,IAAI,CAACuJ,GAAL,GAAW,IAAX;EACA,QAAI9R,MAAJ;EACA,WAAQ,SAAS4P,IAAT,GAAgB;EACpB,UAAIjC,GAAG,CAACnN,MAAR,EAAgB;EACZ,YAAIsS,IAAI,GAAGnF,GAAG,CAACoJ,KAAJ,EAAX;;EACA,YAAItC,GAAG,GAAG1B,SAAQ,CAACD,IAAD,EAAOvK,IAAP,CAAlB;;EACA,eAAOiM,SAAS,CAACC,GAAD,EAAM,UAAAjW,KAAK,EAAI;EAC3BwB,UAAAA,MAAM,GAAGxB,KAAT;EACA,iBAAOoR,IAAI,EAAX;EACH,SAHe,CAAhB;EAIH,OAPD,MAOO;EACH,eAAO5P,MAAP;EACH;EACJ,KAXM,EAAP;EAYH,GApBY,CAAD,uNAjiBiB;EA0jB7B;EACA,YAAU,IAAI6T,KAAJ,CAAU,QAAV,EAAoB,UAASf,IAAT,UAAyC;EAAA,QAAxBoM,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,KAAS,UAATA,KAAS;EACnE,QAAIzK,IAAI,GAAG;EAAEuJ,MAAAA,GAAG,EAAE,IAAP;EAAakB,MAAAA,KAAK,EAALA;EAAb,KAAX;;EACA,QAAIkM,aAAJ,EAAmB;EACf3W,MAAAA,IAAI,CAAC2W,aAAL,GAAqB,IAArB;EACH;;EACDnM,IAAAA,SAAQ,CAAC,IAAIH,IAAJ,CAAS,IAAIrM,OAAJ,CAAY,OAAZ,CAAT,EAA+BuM,IAA/B,CAAD,EAAuCvK,IAAvC,CAAR;EACH,GANS,+TA3jBmB;EAukB7B;EACA,aAAWtL,GAAG,CAAC4W,KAAK,CAACgL,QAAN,CAAe,SAAf,EAA0B,UAAS/L,IAAT,EAA+B;EAAA,QAAhBmgB,SAAgB,uEAAJ,EAAI;;EACpE,QAAM1qB,IAAI;EACNuJ,MAAAA,GAAG,EAAE;EADC,OAEHmhB,SAFG,CAAV;;EAIA,WAAOze,SAAS,CAACzB,SAAQ,CAACD,IAAI,CAACU,GAAN,EAAWjL,IAAX,CAAT,EAA2B,UAACvI,MAAD,EAAY;EACnD,UAAIsL,WAAW,CAACtL,MAAD,CAAf,EAAyB;EACrB,eAAOA,MAAM,CAAC,IAAIgjB,YAAJ,CAAiB,IAAjB,CAAD,CAAb;EACH;EACJ,KAJe,CAAhB;EAKH,GAVc,CAAD,yCAxkBe;EAqlB7B;EACA7C,EAAAA,MAAM,EAAEljB,GAAG,CAAC4W,KAAK,CAACgL,QAAN,CAAe,QAAf,EAAyB,UAAS/L,IAAT,EAAemgB,SAAf,EAA0B;EAC3D,QAAInhB,GAAG,GAAG,IAAV;;EACA,QAAIgB,IAAI,CAACU,GAAL,YAAoBZ,IAApB,IACAE,IAAI,CAACU,GAAL,CAASA,GAAT,YAAwBjN,OAD5B,EACqC;EACjC,UAAI4sB,QAAQ,GAAG,IAAIvgB,IAAJ,CACX,IAAIrM,OAAJ,CAAY,QAAZ,CADW,EAEX,IAAIqM,IAAJ,CACIE,IAAI,CAACU,GAAL,CAASA,GADb,EAEI,IAAIZ,IAAJ,CACI,IAAIA,IAAJ,CACI,IAAIrM,OAAJ,CAAY,QAAZ,CADJ,EAEI,IAAIqM,IAAJ,CACIE,IAAI,CAACU,GAAL,CAASb,GADb,EAEIG,IAAI,CAACH,GAFT,CAFJ,CADJ,CAFJ,CAFW,CAAf;EAeA,aAAOwgB,QAAP;EACH,KAlBD,MAkBO,IAAIF,SAAS,CAAChU,YAAd,EAA4B;EAC/B;EACA;EACH;;EACD,QAAIgU,SAAS,CAAC/T,aAAd,EAA6B;EACzB+T,MAAAA,SAAS,CAAC/T,aAAV,GAA0B,IAA1B;EACH;;EACD+T,IAAAA,SAAS,CAACnhB,GAAV,GAAgBA,GAAhB;EACA,QAAItT,KAAK,GAAGsU,IAAI,CAACH,GAAL,CAASa,GAArB;EACA,QAAIiP,QAAJ;;EACA,QAAIjkB,KAAK,YAAYoU,IAArB,EAA2B;EACvBpU,MAAAA,KAAK,GAAGuU,SAAQ,CAACvU,KAAD,EAAQy0B,SAAR,CAAhB;EACAxQ,MAAAA,QAAQ,GAAG,IAAX;EACH,KAHD,MAGO,IAAIjkB,KAAK,YAAY+H,OAArB,EAA8B;EACjC/H,MAAAA,KAAK,GAAGsT,GAAG,CAACpT,GAAJ,CAAQF,KAAR,CAAR;EACH;;EACDwb,IAAAA,SAAS,CAAC,QAAD,EAAWlH,IAAI,CAACU,GAAhB,EAAqB,QAArB,CAAT;EACA,WAAOgB,SAAS,CAAChW,KAAD,EAAQ,UAAAA,KAAK,EAAI;EAC7B,UAAIsT,GAAG,CAAClI,QAAJ,KAAiBoW,MAAM,CAACM,aAA5B,EAA2C;EACvCxO,QAAAA,GAAG,GAAGA,GAAG,CAACye,UAAV;EACH;;EACD,UAAI9N,QAAQ,KACNnX,WAAW,CAAC9M,KAAD,CAAX,IAAsB+W,SAAS,CAAC/W,KAAD,CAAhC,IACCA,KAAK,YAAYwhB,MAFX,CAAZ,EAEiC;EAC7BxhB,QAAAA,KAAK,CAACoL,QAAN,GAAiBkJ,IAAI,CAACU,GAAL,CAASvQ,OAAT,EAAjB;;EACA,YAAIzE,KAAK,CAACoL,QAAN,YAA0B7D,OAA9B,EAAuC;EACnCvH,UAAAA,KAAK,CAACoL,QAAN,GAAiBpL,KAAK,CAACoL,QAAN,CAAe3G,OAAf,EAAjB;EACH;EACJ;;EACD,UAAIoS,OAAJ;;EACA,UAAIvC,IAAI,CAACH,GAAL,CAASA,GAAT,YAAwBC,IAAxB,IACA7M,OAAO,CAACsE,QAAR,CAAiByI,IAAI,CAACH,GAAL,CAASA,GAAT,CAAaa,GAA9B,CADJ,EACwC;EACpC6B,QAAAA,OAAO,GAAGvC,IAAI,CAACH,GAAL,CAASA,GAAT,CAAaa,GAAb,CAAiBvQ,OAAjB,EAAV;EACH;;EACD6O,MAAAA,GAAG,CAAC/D,GAAJ,CAAQ+E,IAAI,CAACU,GAAb,EAAkBhV,KAAlB,EAAyB6W,OAAzB,EAAkC,IAAlC;EACH,KAlBe,CAAhB;EAmBH,GAxDW,CAAD,waAtlBkB;EAspB7B;EACA,cAAYpY,GAAG,CAAC,UAAD,EAAa,UAASqN,GAAT,EAAc+I,GAAd,EAAmB7U,KAAnB,EAA0B;EAClD,QAAI40B,QAAQ,WAAU9oB,GAAV,CAAZ;;EACA,QAAIsY,OAAO,CAACtY,GAAD,CAAP,IAAiB8oB,QAAQ,KAAK,QAAb,IAAyBA,QAAQ,KAAK,UAA3D,EAAwE;EACpE,UAAI90B,GAAG,GAAGuuB,gBAAgB,CAAC,UAAD,EAAanvB,IAAI,CAAC4M,GAAD,CAAjB,EAAwB,CAAC,QAAD,EAAW,UAAX,CAAxB,CAA1B;EACA,YAAM,IAAI3G,KAAJ,CAAUrF,GAAV,CAAN;EACH;;EACD0b,IAAAA,SAAS,CAAC,UAAD,EAAa3G,GAAb,EAAkB,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,CAAlB,CAAT;EACA/I,IAAAA,GAAG,GAAG8Q,MAAM,CAAC9Q,GAAD,CAAZ;EACA+I,IAAAA,GAAG,GAAGA,GAAG,CAACpQ,OAAJ,EAAN;;EACA,QAAI5E,SAAS,CAACmC,MAAV,KAAqB,CAAzB,EAA4B;EACxB,aAAO8J,GAAG,CAAC+I,GAAD,CAAV;EACH,KAFD,MAEO,IAAI2J,YAAY,CAAC1S,GAAD,CAAZ,IAAqBgB,WAAW,CAAC9M,KAAD,CAApC,EAA6C;EAChD8L,MAAAA,GAAG,CAAC+I,GAAD,CAAH,GAAW+H,MAAM,CAAC5c,KAAD,CAAjB;EACA8L,MAAAA,GAAG,CAAC+I,GAAD,CAAH,CAAS+Q,aAAT,IAA0B,IAA1B;EACH,KAHM,MAGA,IAAI9Y,WAAW,CAAC9M,KAAD,CAAX,IAAsBmc,SAAS,CAACnc,KAAD,CAA/B,IAA0CA,KAAK,KAAKgU,IAAxD,EAA6D;EAChElI,MAAAA,GAAG,CAAC+I,GAAD,CAAH,GAAW7U,KAAX;EACH,KAFM,MAEA;EACH8L,MAAAA,GAAG,CAAC+I,GAAD,CAAH,GAAW7U,KAAK,IAAI,CAACwe,YAAY,CAACxe,KAAD,CAAtB,GAAgCA,KAAK,CAACyE,OAAN,EAAhC,GAAkDzE,KAA7D;EACH;EACJ,GAnBc,uFAvpBc;EA6qB7B;EACA,sBAAoBvB,GAAG,CAAC,kBAAD,EAAqB,YAAW;EACnD,WAAOwB,UAAU,CAACumB,OAAX,CAAmB,MAAnB,CAAP;EACH,GAFsB,yFA9qBM;EAmrB7B;EACA,YAAU/nB,GAAG,CAAC,QAAD,EAAW,SAAS8X,MAAT,GAAyB;EAAA,wCAANxM,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC7C,WAAOoU,MAAM,CAACpU,IAAD,CAAb;EACH,GAFY,0KAprBgB;EA0rB7B;EACA,sBAAoBtL,GAAG,CAAC,kBAAD,EAAqB,UAASo2B,QAAT,EAAmBC,QAAnB,EAA6B;EACrEtZ,IAAAA,SAAS,CAAC,kBAAD,EAAqBqZ,QAArB,EAA+B,UAA/B,EAA2C,CAA3C,CAAT;EACArZ,IAAAA,SAAS,CAAC,kBAAD,EAAqBsZ,QAArB,EAA+B,UAA/B,EAA2C,CAA3C,CAAT;EACA,QAAIC,KAAK,GAAGF,QAAQ,EAApB;;EACA,QAAIE,KAAK,YAAY5W,MAArB,EAA6B;EACzB,aAAO2W,QAAQ,MAAR,4BAAYC,KAAK,CAACtwB,OAAN,EAAZ,EAAP;EACH;;EACD,WAAOqwB,QAAQ,CAACC,KAAD,CAAf;EACH,GARsB,4OA3rBM;EAwsB7B;EACA,yBAAuBt2B,GAAG,CAAC,qBAAD,EAAwB,YAAW;EACzD,QAAI,KAAK2M,QAAL,KAAkB,WAAtB,EAAmC;EAC/B,aAAO,KAAK2mB,UAAZ;EACH;;EACD,WAAO,IAAP;EACH,GALyB,+EAzsBG;EAitB7B;EACA,kBAAgBtzB,GAAG,CAAC,cAAD,EAAiB,YAAW;EAC3C,WAAO+B,QAAP;EACH,GAFkB,iJAltBU;EAwtB7B;EACA,UAAQ/B,GAAG,CAAC,MAAD,EAAS,UAAS6V,IAAT,EAAehB,GAAf,EAAoB;EAAA;;EACpCA,IAAAA,GAAG,GAAGA,GAAG,IAAI,KAAKpT,GAAL,CAAS,qBAAT,EAAgCd,IAAhC,CAAqC,IAArC,CAAb;EACA,WAAOmV,SAAQ,CAACD,IAAD,EAAO;EAClBhB,MAAAA,GAAG,EAAHA,GADkB;EAElB;EACAkB,MAAAA,KAAK,EAAE,eAAAvV,CAAC,EAAI;EACR,YAAIuV,KAAK,GAAGvU,UAAU,CAACC,GAAX,CAAe,eAAf,CAAZ;EACAsU,QAAAA,KAAK,CAACpV,IAAN,CAAW,OAAX,EAAiBH,CAAC,CAAC2e,OAAnB;;EACA,YAAI3e,CAAC,CAACqV,IAAN,EAAY;EACR,cAAIsd,KAAK,GAAG3yB,CAAC,CAACqV,IAAF,CAAO1R,GAAP,CAAW,UAACsN,IAAD,EAAOxF,CAAP,EAAa;EAChC,8BAAWA,CAAC,GAAG,CAAf,gBAAsBwF,IAAtB;EACH,WAFW,EAET3N,IAFS,CAEJ,IAFI,CAAZ;EAGAiS,UAAAA,KAAK,CAACpV,IAAN,CAAW,OAAX,EAAiBwyB,KAAjB;EACH;EACJ;EAZiB,KAAP,CAAf;EAcH,GAhBU,uGAztBkB;EA6uB7B;EACAlQ,EAAAA,MAAM,EAAE,IAAIrM,KAAJ,CAAU,QAAV,EAAoB,UAASf,IAAT,EAA8C;EAAA,qFAAJ,EAAI;EAAA,QAA7BoM,aAA6B,UAA7BA,aAA6B;EAAA,QAAdlM,KAAc,UAAdA,KAAc;;EACtE,QAAI3W,IAAI,GAAG,IAAX;;EACA,QAAIgZ,OAAJ;;EACA,QAAIvC,IAAI,CAACH,GAAL,YAAoBC,IAApB,IACA7M,OAAO,CAACsE,QAAR,CAAiByI,IAAI,CAACH,GAAL,CAASa,GAA1B,CADA,IAEAV,IAAI,CAACH,GAAL,CAASA,GAAT,KAAiBH,IAFrB,EAE0B;EACtB6C,MAAAA,OAAO,GAAGvC,IAAI,CAACH,GAAL,CAASa,GAAT,CAAavQ,OAAb,EAAV;EACH;;EACD,aAASid,MAAT,GAAyB;EACrB,UAAIpO,GAAJ,CADqB;EAGrB;;EACA,UAAIoN,aAAJ,EAAmB;EACf,YAAI,EAAE,gBAAgBpC,WAAlB,CAAJ,EAAoC;EAChChL,UAAAA,GAAG,GAAGzV,IAAN;EACH,SAFD,MAEO;EACHyV,UAAAA,GAAG,GAAG,IAAN;EACH;EACJ,OAND,MAMO;EACHA,QAAAA,GAAG,GAAGzV,IAAN;EACH;;EACDyV,MAAAA,GAAG,GAAGA,GAAG,CAACkT,OAAJ,CAAY,QAAZ,CAAN;EACA,UAAIvb,IAAI,GAAGqJ,IAAI,CAACU,GAAhB;EACA,UAAItK,CAAC,GAAG,CAAR;EACA,UAAI1K,KAAJ;;EACA,UAAI,OAAO,IAAP,KAAgB,WAAhB,IAA+B,EAAE,gBAAgBse,WAAlB,CAAnC,EAAmE;EAC/D,YAAI,QAAQ,CAAC,KAAK0W,YAAlB,EAAgC;EAC5B3yB,UAAAA,MAAM,CAAC2K,cAAP,CAAsB,IAAtB,EAA4B,cAA5B,EAA4C;EACxCC,YAAAA,UAAU,EAAE,KAD4B;EAExC/M,YAAAA,GAAG,EAAE;EAAA,qBAAM,IAAN;EAAA,aAFmC;EAGxCqP,YAAAA,GAAG,EAAE,eAAM,EAH6B;EAIxCD,YAAAA,YAAY,EAAE;EAJ0B,WAA5C;EAMH;;EACDgE,QAAAA,GAAG,CAAC/D,GAAJ,CAAQ,MAAR,EAAgB,IAAhB;EACH,OA3BoB;;;EAAA,0CAANxF,IAAM;EAANA,QAAAA,IAAM;EAAA;;EA6BrB,UAAI,gBAAgBuU,WAApB,EAAiC;EAC7B,YAAI3a,OAAO,GAAG;EAAElD,UAAAA,UAAU,EAAE;EAAd,SAAd;EACA6S,QAAAA,GAAG,CAAC/D,GAAJ,CAAQ,WAAR,EAAqB,KAAKrP,GAAL,CAAS,WAAT,EAAsByD,OAAtB,CAArB;EACA2P,QAAAA,GAAG,CAAC/D,GAAJ,CAAQ,cAAR,EAAwB,KAAKrP,GAAL,CAAS,cAAT,EAAyByD,OAAzB,CAAxB;EACH,OAJD,MAIO;EACH;EACA,YAAIsxB,KAAK,GAAGlrB,IAAI,CAACY,KAAL,EAAZ;;EACAsqB,QAAAA,KAAK,CAAC7C,MAAN,GAAe1Q,MAAf;EACAuT,QAAAA,KAAK,CAAC3hB,GAAN,GAAYA,GAAZ;EACAA,QAAAA,GAAG,CAAC/D,GAAJ,CAAQ,WAAR,EAAqB0lB,KAArB;EACH;;EACD,UAAIhqB,IAAI,YAAYlD,OAAhB,IAA2BkD,IAAI,KAAK+I,IAAxC,EAA6C;EACzC,eAAO,IAAP,EAAa;EACT,cAAI/I,IAAI,CAAC+J,GAAL,KAAahB,IAAjB,EAAsB;EAClB,gBAAI/I,IAAI,YAAYlD,OAApB,EAA6B;EACzB;EACA/H,cAAAA,KAAK,GAAGyL,KAAK,CAAC2I,IAAI,CAACkB,SAAL,CAAevL,IAAI,CAACY,KAAL,CAAWD,CAAX,CAAf,EAA8B,KAA9B,CAAD,CAAb;EACA4I,cAAAA,GAAG,CAACE,OAAJ,CAAYvI,IAAI,CAACG,QAAjB,IAA6BpL,KAA7B;EACA;EACH,aALD,MAKO;EACHA,cAAAA,KAAK,GAAG+J,IAAI,CAACW,CAAD,CAAZ;EACA4I,cAAAA,GAAG,CAACE,OAAJ,CAAYvI,IAAI,CAAC+J,GAAL,CAAS5J,QAArB,IAAiCpL,KAAjC;EACH;EACJ;;EACD,cAAIiL,IAAI,CAACkJ,GAAL,KAAaH,IAAjB,EAAsB;EAClB;EACH;;EACDtJ,UAAAA,CAAC;EACDO,UAAAA,IAAI,GAAGA,IAAI,CAACkJ,GAAZ;EACH;EACJ;;EACD,UAAIuM,aAAJ,EAAmB;EACfA,QAAAA,aAAa,GAAGpN,GAAhB;EACH;;EACD,UAAI5J,IAAI,GAAGmN,OAAO,GAAGvC,IAAI,CAACH,GAAL,CAASA,GAAZ,GAAkBG,IAAI,CAACH,GAAzC;EACA,UAAIrS,MAAM,GAAG,IAAIsS,IAAJ,CAAS,IAAIrM,OAAJ,CAAY,OAAZ,CAAT,EAA+B2B,IAA/B,CAAb;EACA,aAAO6K,SAAQ,CAACzS,MAAD,EAAS;EAAEwR,QAAAA,GAAG,EAAHA,GAAF;EAAOoN,QAAAA,aAAa,EAAbA,aAAP;EAAsBlM,QAAAA,KAAK,EAALA;EAAtB,OAAT,CAAf;EACH;;EACD,QAAIxS,MAAM,GAAGsS,IAAI,CAACU,GAAL,YAAoBZ,IAApB,GAA2BE,IAAI,CAACU,GAAL,CAAShT,MAAT,EAA3B,GAA+C,IAA5D;EACA0f,IAAAA,MAAM,CAACvJ,QAAP,GAAkB,IAAI/D,IAAJ,CAAS,IAAIrM,OAAJ,CAAY,QAAZ,CAAT,EAAgCuM,IAAhC,CAAlB;EACAoN,IAAAA,MAAM,CAACmE,UAAD,CAAN,GAAqB,IAArB;;EACA,QAAI,EAAEvR,IAAI,CAACU,GAAL,YAAoBZ,IAAtB,CAAJ,EAAiC;EAC7B,aAAO3V,GAAG,CAACijB,MAAD,EAAS7K,OAAT,EAAkB,IAAlB,CAAV,CAD6B;EAEhC,KAhFqE;;;EAkFtE,WAAOpY,GAAG,CAACsnB,aAAa,CAACrE,MAAD,EAAS1f,MAAT,CAAd,EAAgC6U,OAAhC,EAAyC,IAAzC,CAAV;EACH,GAnFO,kTA9uBqB;EAw0B7B,iBAAe,IAAIxB,KAAJ,CAAU,aAAV,EAAyBoL,YAAY,EAArC,CAx0Bc;EAy0B7B,mBAAiB,IAAIpL,KAAJ,CAAU,eAAV,EAA2BoL,YAAY,CAAC,IAAD,CAAvC,CAz0BY;EA00B7B;EACA,kBAAgBhiB,GAAG,CAAC,IAAI4W,KAAJ,CAAUiL,KAAV,EAAiB,UAASA,KAAT,UAA0C;EAAA,QAAxBI,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,KAAS,UAATA,KAAS;;EAC3E,QAAI8L,KAAK,CAACtL,GAAN,YAAqBZ,IAArB,IAA6BkM,KAAK,CAACtL,GAAN,CAAUA,GAAV,YAAyBjN,OAA1D,EAAmE;EAC/D,UAAIkD,IAAI,GAAGqV,KAAK,CAACtL,GAAN,CAAUA,GAAV,CAAc5J,QAAzB;;EACA,UAAIyL,OAAJ;;EACA,UAAItP,OAAO,CAACsE,QAAR,CAAiByU,KAAK,CAACnM,GAAN,CAAUa,GAA3B,KAAmCsL,KAAK,CAACnM,GAAN,CAAUA,GAAV,YAAyBC,IAAhE,EAAsE;EAClEyC,QAAAA,OAAO,GAAGyJ,KAAK,CAACnM,GAAN,CAAUa,GAAV,CAAcvQ,OAAd,EAAV;EACH;;EACD,UAAIywB,cAAc,GAAG7f,KAAK,CAACgL,QAAN,CAAepV,IAAf,EAAqB,UAASqJ,IAAT,EAAe;EACrD,YAAIhB,GAAG,GAAG,IAAIgL,WAAJ,CAAgB,EAAhB,EAAoB,IAApB,EAA0B,UAA1B,CAAV;EACA,YAAIrT,IAAI,GAAGqV,KAAK,CAACtL,GAAN,CAAUb,GAArB;EACA,YAAI3Q,GAAG,GAAG8Q,IAAV;;EACA,eAAO,IAAP,EAAa;EACT,cAAIrJ,IAAI,KAAK+I,IAAb,EAAkB;EACd;EACH;;EACD,cAAI/I,IAAI,YAAYlD,OAApB,EAA6B;EACzBuL,YAAAA,GAAG,CAACE,OAAJ,CAAYvI,IAAI,CAACG,QAAjB,IAA6B5H,GAA7B;EACA;EACH,WAHD,MAGO,IAAIyH,IAAI,CAAC+J,GAAL,KAAahB,IAAjB,EAAsB;EACzB,gBAAIxQ,GAAG,KAAKwQ,IAAZ,EAAiB;EACbV,cAAAA,GAAG,CAACE,OAAJ,CAAYvI,IAAI,CAAC+J,GAAL,CAAS5J,QAArB,IAAiC4I,IAAjC;EACH,aAFD,MAEO;EACH,kBAAIxQ,GAAG,CAACwR,GAAJ,YAAmBZ,IAAvB,EAA6B;EACzB5Q,gBAAAA,GAAG,CAACwR,GAAJ,CAAQiH,QAAR,IAAoB,IAApB;EACH;;EACD3I,cAAAA,GAAG,CAACE,OAAJ,CAAYvI,IAAI,CAAC+J,GAAL,CAAS5J,QAArB,IAAiC5H,GAAG,CAACwR,GAArC;EACH;EACJ;;EACD,cAAI/J,IAAI,CAACkJ,GAAL,KAAaH,IAAjB,EAAsB;EAClB;EACH;;EACD,cAAIxQ,GAAG,KAAKwQ,IAAZ,EAAiB;EACbxQ,YAAAA,GAAG,GAAGA,GAAG,CAAC2Q,GAAV;EACH;;EACDlJ,UAAAA,IAAI,GAAGA,IAAI,CAACkJ,GAAZ;EACH;;EACD,YAAIuM,aAAJ,EAAmB;EACfA,UAAAA,aAAa,GAAGpN,GAAhB;EACH;;EACD,YAAImhB,SAAS,GAAG;EACZnhB,UAAAA,GAAG,EAAHA,GADY;EAEZoN,UAAAA,aAAa,EAAbA,aAFY;EAGZlM,UAAAA,KAAK,EAALA;EAHY,SAAhB,CAhCqD;;EAsCrD,YAAI8L,KAAK,CAACnM,GAAN,YAAqBC,IAAzB,EAA+B;EAC3B;EACA,cAAI1K,IAAI,GAAGmN,OAAO,GAAGyJ,KAAK,CAACnM,GAAN,CAAUA,GAAb,GAAmBmM,KAAK,CAACnM,GAA3C;EACA,cAAI3S,MAAM,GAAGkI,IAAI,CAACwJ,MAAL,CAAY,UAAS1R,MAAT,EAAiB2Z,IAAjB,EAAuB;EAC5C,mBAAO5G,SAAQ,CAAC4G,IAAD,EAAOsZ,SAAP,CAAf;EACH,WAFY,CAAb;EAGA,iBAAOze,SAAS,CAACxU,MAAD,EAAS,UAASA,MAAT,EAAiB;EACtC,gBAAI,QAAOA,MAAP,MAAkB,QAAtB,EAAgC;EAC5B,qBAAOA,MAAM,CAACya,QAAD,CAAb;EACH;;EACD,mBAAOza,MAAP;EACH,WALe,CAAhB;EAMH;EACJ,OAnDoB,EAmDlBqV,OAnDkB,EAmDT,IAnDS,CAArB;EAoDAqe,MAAAA,cAAc,CAAC/c,QAAf,GAA0B,IAAI/D,IAAJ,CAAS,IAAIrM,OAAJ,CAAY,cAAZ,CAAT,EAAsCuY,KAAtC,CAA1B;EACA,WAAK/Q,GAAL,CAAStE,IAAT,EAAeiqB,cAAf;EACH;EACJ,GA9DmB,CAAD,yjBA30BU;EAi5B7B;EACA,kBAAgB,IAAI7f,KAAJ,CAAU,cAAV,EAA0B,UAASiL,KAAT,EAAgB3c,OAAhB,EAAyB;EAC/D,QAAM+c,aAAN,GAA+B/c,OAA/B,CAAM+c,aAAN;EAAA,QAAqBlM,KAArB,GAA+B7Q,OAA/B,CAAqB6Q,KAArB;EACA,QAAIlB,GAAG,GAAG,IAAV;;EACA,aAAS6hB,eAAT,CAAyBha,IAAzB,EAA+B;EAC3B,UAAIrB,OAAO,GAAG,EAAd;;EACA,aAAOqB,IAAI,KAAKnH,IAAhB,EAAqB;EACjB,YAAMtU,CAAC,GAAGyb,IAAI,CAACnG,GAAf;EACA8E,QAAAA,OAAO,CAAC3X,IAAR,CAAazC,CAAC,CAAC+E,OAAF,EAAb;EACA0W,QAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;;EACD,aAAO2F,OAAP;EACH;;EACD,aAASsb,oBAAT,CAA8Bja,IAA9B,EAAoC;EAChC,aAAOA,IAAI,KAAKnH,IAAhB,EAAqB;EACjB,YAAMtU,CAAC,GAAGyb,IAAI,CAACnG,GAAf;;EACA,YAAI,EAAEtV,CAAC,YAAYqI,OAAf,CAAJ,EAA6B;EACzB,gBAAM,IAAI5C,KAAJ,CAAU,gCAAV,CAAN;EACH;;EACDgW,QAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;EACJ;;EACD,QAAImM,KAAK,CAACtL,GAAN,YAAqBjN,OAAzB,EAAkC;EAC9BqtB,MAAAA,oBAAoB,CAAC9U,KAAK,CAACnM,GAAN,CAAUa,GAAX,CAApB;EACH,KAFD,MAEO;EACHogB,MAAAA,oBAAoB,CAAC9U,KAAK,CAACtL,GAAP,CAApB;EACH;;EACD,QAAMqgB,MAAM,GAAG,IAAI7T,MAAJ,CAAW,UAASlN,IAAT,UAAiC;EAAA,UAAhBmM,YAAgB,UAAhBA,YAAgB;EACvD,UAAIgB,KAAK,GAAGnO,GAAG,CAACkT,OAAJ,CAAY,QAAZ,CAAZ;;EACA,UAAI9F,aAAJ,EAAmB;EACfA,QAAAA,aAAa,GAAGe,KAAhB;EACH;;EACD,UAAI6T,SAAS,GAAG,IAAhB,CALuD;;EAOvD,UAAIA,SAAS,CAAClqB,QAAV,KAAuBoW,MAAM,CAACM,aAAlC,EAAiD;EAC7C;EACA,YAAMtF,OAAK,GAAGna,MAAM,CAAC+a,qBAAP,CAA6BkY,SAAS,CAAC9hB,OAAvC,CAAd;;EACAgJ,QAAAA,OAAK,CAAC/a,OAAN,CAAc,UAAA+J,MAAM,EAAI;EACpB8pB,UAAAA,SAAS,CAACvD,UAAV,CAAqBxiB,GAArB,CAAyB/D,MAAzB,EAAiC8pB,SAAS,CAAC9hB,OAAV,CAAkBhI,MAAlB,CAAjC;EACH,SAFD;;EAGA8pB,QAAAA,SAAS,GAAGA,SAAS,CAACvD,UAAtB;EACH;;EACD,UAAI0C,SAAS,GAAG;EAAEnhB,QAAAA,GAAG,EAAEmO,KAAP;EAAcf,QAAAA,aAAa,EAAbA,aAAd;EAA6BlM,QAAAA,KAAK,EAALA;EAA7B,OAAhB;EACA,UAAI+N,QAAJ,EAAcjR,KAAd,EAAqBwI,OAArB;;EACA,UAAIwG,KAAK,CAACtL,GAAN,YAAqBjN,OAAzB,EAAkC;EAC9Bwa,QAAAA,QAAQ,GAAGjC,KAAK,CAACtL,GAAjB;EACA8E,QAAAA,OAAO,GAAGqb,eAAe,CAAC7U,KAAK,CAACnM,GAAN,CAAUa,GAAX,CAAzB;EACA1D,QAAAA,KAAK,GAAGgP,KAAK,CAACnM,GAAN,CAAUA,GAAlB;EACH,OAJD,MAIO;EACHoO,QAAAA,QAAQ,GAAG,KAAX;EACAzI,QAAAA,OAAO,GAAGqb,eAAe,CAAC7U,KAAK,CAACtL,GAAP,CAAzB;EACA1D,QAAAA,KAAK,GAAGgP,KAAK,CAACnM,GAAd;EACH;;EACD,UAAI;EACA,eAAO7C,KAAK,KAAK0C,IAAjB,EAAsB;EAClB,cAAIpD,IAAI,GAAGU,KAAK,CAAC0D,GAAN,CAAUA,GAArB;EACA,cAAII,IAAI,GAAG9D,KAAK,CAAC0D,GAAN,CAAUb,GAAV,CAAca,GAAzB;EACAvV,UAAAA,GAAG,CAACmR,IAAD,CAAH;EACA,cAAI0Q,QAAQ,GAAGY,gBAAgB,CAACtR,IAAD,EAAO0D,IAAP,EAAawF,OAAb,EAAsByI,QAAtB,EAAgC;EAC3DF,YAAAA,SAAS,EAAE,IADgD;EAC1CV,YAAAA,MAAM,EAAErO;EADkC,WAAhC,CAA/B;;EAGA,cAAIgO,QAAJ,EAAc;EACV;EACA,gBAAIvhB,QAAQ,EAAZ,EAAgB;EACZM,cAAAA,OAAO,CAACZ,GAAR,CAAY+H,IAAI,CAACwW,SAAL,CAAeb,SAAS,CAACmE,QAAD,CAAxB,EAAoC,IAApC,EAA0C,CAA1C,CAAZ;EACAjhB,cAAAA,OAAO,CAACZ,GAAR,CAAY,cAAcmR,IAAI,CAACvT,QAAL,CAAc,IAAd,CAA1B;EACAgD,cAAAA,OAAO,CAACZ,GAAR,CAAY,YAAY6U,IAAI,CAACjX,QAAL,CAAc,IAAd,CAAxB;EACH,aANS;;;EAQV,gBAAIgL,KAAK,GAAG,EAAZ;EACA,gBAAM4b,QAAQ,GAAGlB,gBAAgB,CAAC;EAC9BzB,cAAAA,QAAQ,EAARA,QAD8B;EAE9BlM,cAAAA,IAAI,EAAJA,IAF8B;EAG9B0E,cAAAA,OAAO,EAAPA,OAH8B;EAI9B2H,cAAAA,KAAK,EAALA,KAJ8B;EAK9B8T,cAAAA,SAAS,EAAED,SALmB;EAM9BjtB,cAAAA,KAAK,EAALA,KAN8B;EAO9Bka,cAAAA,QAAQ,EAARA;EAP8B,aAAD,CAAjC;EASA9iB,YAAAA,GAAG,CAAC,cAAcwkB,QAAQ,CAAC5mB,QAAT,EAAf,CAAH;;EACA,gBAAI4mB,QAAJ,EAAc;EACV7O,cAAAA,IAAI,GAAG6O,QAAP;EACH;;EACD,gBAAIuR,OAAO,GAAGF,SAAS,CAAChD,KAAV,CAAgB7Q,KAAhB,EAAuBD,MAAM,CAACM,aAA9B,CAAd;;EACA,gBAAIrB,YAAJ,EAAkB;EACd,qBAAO;EAAErL,gBAAAA,IAAI,EAAJA,IAAF;EAAQqM,gBAAAA,KAAK,EAAE+T;EAAf,eAAP;EACH;;EACD,gBAAIh0B,MAAM,GAAG+S,SAAQ,CAACa,IAAD,kCAAYqf,SAAZ;EAAuBnhB,cAAAA,GAAG,EAAEkiB;EAA5B,eAArB,CA1BU;EA4BV;EACA;EACA;;;EACA,mBAAO5S,aAAa,CAACphB,MAAD,EAAS6G,KAAT,CAApB;EACH;;EACDiJ,UAAAA,KAAK,GAAGA,KAAK,CAAC6C,GAAd;EACH;EACJ,OA3CD,CA2CE,OAAOlV,CAAP,EAAU;EACRA,QAAAA,CAAC,CAAC2e,OAAF,yBAA2B0C,KAAK,CAACjjB,QAAN,CAAe,IAAf,CAA3B;EACA,cAAM4B,CAAN;EACH;;EACD,YAAM,IAAIkG,KAAJ,0BAA4BmP,IAAI,CAACjX,QAAL,CAAc,IAAd,CAA5B,EAAN;EACH,KA1Ec,EA0EZiW,GA1EY,CAAf;EA2EA+hB,IAAAA,MAAM,CAACld,QAAP,GAAkBmI,KAAlB;EACA,WAAO+U,MAAP;EACH,GAvGe,mKAl5Ba;EA6/B7B;EACA5pB,EAAAA,KAAK,EAAEhN,GAAG,CAAC,IAAI4W,KAAJ,CAAU,OAAV,EAAmB,UAAS7R,GAAT,EAAc;EACxC,WAAOiI,KAAK,CAACjI,GAAG,CAACwR,GAAL,CAAZ;EACH,GAFU,CAAD,4TA9/BmB;EAsgC7B,sBAAoBvW,GAAG,CAAC,kBAAD,EAAqB,YAAW;EACnD,UAAM,IAAI0G,KAAJ,2DAAN;EACH,GAFsB,gWAtgCM;EA8gC7B,aAAW1G,GAAG,CAAC,SAAD,EAAY,YAAW;EACjC,UAAM,IAAI0G,KAAJ,kDAAN;EACH,GAFa,8UA9gCe;EAshC7B;EACAswB,EAAAA,UAAU,EAAEpgB,KAAK,CAACgL,QAAN,CAAe,YAAf,EAA6B,UAAS7c,GAAT,EAAc8P,GAAd,EAAmB;EACxD,QAAMoN,aAAN,GAA+BpN,GAA/B,CAAMoN,aAAN;EAAA,QAAqBlM,KAArB,GAA+BlB,GAA/B,CAAqBkB,KAArB;EACA,QAAI3W,IAAI,GAAG,IAAX,CAFwD;;EAIxD,QAAI6iB,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG7iB,IAAhB;EACH,KANuD;;;EAQxD,aAAS63B,SAAT,CAAmB11B,KAAnB,EAA0B;EACtB,aAAOA,KAAK,YAAYoU,IAAjB,IACHQ,eAAe,CAAC5U,KAAD,CADZ,IAEHwN,KAAK,CAACC,OAAN,CAAczN,KAAd,CAFJ;EAGH,KAZuD;;;EAcxD,aAAS21B,YAAT,CAAsB5gB,IAAtB,EAA4BzW,EAA5B,EAAkD;EAAA,UAAlB8B,IAAkB,uEAAXs1B,SAAW;;EAC9C,UAAI3gB,IAAI,YAAYX,IAApB,EAA0B;EACtB,YAAIY,GAAG,GAAGD,IAAI,CAACC,GAAf;EACA,YAAIb,GAAG,GAAGY,IAAI,CAACZ,GAAf;;EACA,YAAI/T,IAAI,CAAC4U,GAAD,CAAR,EAAe;EACXA,UAAAA,GAAG,GAAG1W,EAAE,CAAC0W,GAAD,CAAR;EACH;;EACD,YAAI5U,IAAI,CAAC+T,GAAD,CAAR,EAAe;EACXA,UAAAA,GAAG,GAAG7V,EAAE,CAAC6V,GAAD,CAAR;EACH;;EACD,YAAI7T,UAAU,CAAC0U,GAAD,CAAV,IAAmB1U,UAAU,CAAC6T,GAAD,CAAjC,EAAwC;EACpC,iBAAO5G,WAAW,CAAC,CAACyH,GAAD,EAAMb,GAAN,CAAD,CAAX,CAAwB5T,IAAxB,CAA6B,kBAAgB;EAAA;EAAA,gBAAdyU,GAAc;EAAA,gBAATb,GAAS;;EAChD,mBAAO,IAAIC,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH,WAFM,CAAP;EAGH,SAJD,MAIO;EACH,iBAAO,IAAIC,IAAJ,CAASY,GAAT,EAAcb,GAAd,CAAP;EACH;EACJ;;EACD,aAAOY,IAAP;EACH,KAjCuD;;;EAmCxD,aAASxS,IAAT,CAAcqzB,SAAd,EAAyB51B,KAAzB,EAAgC;;EAI5B,UAAI41B,SAAS,YAAYxhB,IAAzB,EAA+B;EAC3B,YAAIpU,KAAK,KAAKgU,IAAd,EAAmB;EACf4hB,UAAAA,SAAS,CAACjnB,MAAV,CAAiB3O,KAAjB;EACH;EACJ,OAJD,MAIO;EACH41B,QAAAA,SAAS,GAAG,IAAIxhB,IAAJ,CACRwhB,SADQ,EAER51B,KAFQ,CAAZ;EAIH;;EACD,aAAO41B,SAAP;EACH,KAlDuD;;;EAoDxD,aAASC,YAAT,CAAsB1mB,GAAtB,EAA2B;EACvB,aAAO,CAAC,CAACA,GAAG,CAAC9E,MAAJ,CAAW,UAAArK,KAAK,EAAI;EACzB,eAAOA,KAAK,YAAYoU,IAAjB,IACHrM,OAAO,CAACwD,EAAR,CAAWvL,KAAK,CAACgV,GAAjB,EAAsB,8BAAtB,CADJ;EAEH,OAHQ,EAGNhT,MAHH;EAIH,KAzDuD;;;EA2DxD,aAAS8zB,YAAT,CAAsB3mB,GAAtB,EAA2B4mB,WAA3B,EAAwCC,OAAxC,EAAiD;EAC7C,aAAO7mB,GAAG,CAAC+D,MAAJ,CAAW,UAACC,GAAD,EAAMzT,CAAN,EAAY;EAC1B,YAAI,EAAEA,CAAC,YAAY0U,IAAf,CAAJ,EAA0B;EACtBjB,UAAAA,GAAG,CAAChR,IAAJ,CAASzC,CAAT;EACA,iBAAOyT,GAAP;EACH;;EACD,YAAIpL,OAAO,CAACwD,EAAR,CAAW7L,CAAC,CAACsV,GAAb,EAAkB,kBAAlB,CAAJ,EAA2C;EACvC,cAAIxT,MAAJ;;EACA,cAAIu0B,WAAW,GAAG,CAAd,GAAkBC,OAAtB,EAA+B;EAC3Bx0B,YAAAA,MAAM,GAAG+Z,KAAK,CAAC7b,CAAC,CAACyU,GAAH,EAAQ4hB,WAAW,GAAG,CAAtB,EAAyBC,OAAzB,CAAd;EACH,WAFD,MAEO;EACHx0B,YAAAA,MAAM,GAAG+S,SAAQ,CAAC7U,CAAC,CAACyU,GAAF,CAAMa,GAAP,EAAY;EACzB1B,cAAAA,GAAG,EAAEzV,IADoB;EAEzB6iB,cAAAA,aAAa,EAAbA,aAFyB;EAGzBlM,cAAAA,KAAK,EAALA;EAHyB,aAAZ,CAAjB;EAKH;;EACD,cAAI,EAAEhT,MAAM,YAAY4S,IAApB,CAAJ,EAA+B;EAC3B,kBAAM,IAAIjP,KAAJ,0BAA4BjG,IAAI,CAACQ,CAAD,CAAhC,YAAN;EACH;;EACD,iBAAOyT,GAAG,CAACvB,MAAJ,CAAWpQ,MAAM,CAAC2T,QAAP,EAAX,CAAP;EACH;;EACDhC,QAAAA,GAAG,CAAChR,IAAJ,CAASoZ,KAAK,CAAC7b,CAAD,EAAIq2B,WAAJ,EAAiBC,OAAjB,CAAd;EACA,eAAO7iB,GAAP;EACH,OAvBM,EAuBJ,EAvBI,CAAP;EAwBH,KApFuD;;;EAsFxD,aAAS8iB,YAAT,CAAsB3qB,MAAtB,EAA8ByqB,WAA9B,EAA2CC,OAA3C,EAAoD;EAChD,UAAMx0B,MAAM,GAAG,EAAf;EACAu0B,MAAAA,WAAW;EACX1zB,MAAAA,MAAM,CAACC,IAAP,CAAYgJ,MAAZ,EAAoB7J,OAApB,CAA4B,UAAAoT,GAAG,EAAI;EAC/B,YAAM7U,KAAK,GAAGsL,MAAM,CAACuJ,GAAD,CAApB;;EACA,YAAI7U,KAAK,YAAYoU,IAArB,EAA2B;EACvB,cAAIrM,OAAO,CAACwD,EAAR,CAAWvL,KAAK,CAACgV,GAAjB,EAAsB,kBAAtB,CAAJ,EAA+C;EAC3C,kBAAM,IAAI7P,KAAJ,CAAU,uCACA,eADV,CAAN;EAEH;;EACD,cAAIrD,MAAJ;;EACA,cAAIi0B,WAAW,GAAGC,OAAlB,EAA2B;EACvBl0B,YAAAA,MAAM,GAAGyZ,KAAK,CAACvb,KAAK,CAACmU,GAAN,CAAUa,GAAX,EAAgB+gB,WAAhB,EAA6BC,OAA7B,CAAd;EACH,WAFD,MAEO;EACHl0B,YAAAA,MAAM,GAAGyS,SAAQ,CAACvU,KAAK,CAACmU,GAAN,CAAUa,GAAX,EAAgB;EAC7B1B,cAAAA,GAAG,EAAEzV,IADwB;EAE7B6iB,cAAAA,aAAa,EAAbA,aAF6B;EAG7BlM,cAAAA,KAAK,EAALA;EAH6B,aAAhB,CAAjB;EAKH;;EACDhT,UAAAA,MAAM,CAACqT,GAAD,CAAN,GAAc/S,MAAd;EACH,SAhBD,MAgBO;EACHN,UAAAA,MAAM,CAACqT,GAAD,CAAN,GAAc7U,KAAd;EACH;EACJ,OArBD;;EAsBA,UAAIqC,MAAM,CAACgU,QAAP,CAAgB/K,MAAhB,CAAJ,EAA6B;EACzBjJ,QAAAA,MAAM,CAACiU,MAAP,CAAc9U,MAAd;EACH;;EACD,aAAOA,MAAP;EACH,KAnHuD;;;EAqHxD,aAAS00B,cAAT,CAAwBnhB,IAAxB,EAA8BghB,WAA9B,EAA2CC,OAA3C,EAAoD;EAChD,UAAID,WAAW,GAAGC,OAAlB,EAA2B;EACvB,eAAO,IAAI5hB,IAAJ,CACH,IAAIA,IAAJ,CACIW,IAAI,CAACC,GAAL,CAASA,GADb,EAEIuG,KAAK,CAACxG,IAAI,CAACC,GAAL,CAASb,GAAV,EAAe4hB,WAAf,EAA4BC,OAA5B,CAFT,CADG,EAKHhiB,IALG,CAAP;EAOH;;EACD,UAAIoO,KAAK,GAAG,EAAZ;EACA,aAAQ,SAAS3H,IAAT,CAAcU,IAAd,EAAoB;EACxB,YAAInb,KAAK,GAAGuU,SAAQ,CAAC4G,IAAI,CAACnG,GAAN,EAAW;EAC3B1B,UAAAA,GAAG,EAAEzV,IADsB;EAE3B6iB,UAAAA,aAAa,EAAbA,aAF2B;EAG3BlM,UAAAA,KAAK,EAALA;EAH2B,SAAX,CAApB;;EAKA4N,QAAAA,KAAK,CAACjgB,IAAN,CAAWnC,KAAX;;EACA,YAAImb,IAAI,CAAChH,GAAL,YAAoBC,IAAxB,EAA8B;EAC1B,iBAAOqG,IAAI,CAACU,IAAI,CAAChH,GAAN,CAAX;EACH;;EACD,eAAO6B,SAAS,CAACoM,KAAD,EAAQ,UAASjT,GAAT,EAAc;EAClC,cAAIA,GAAG,CAACuM,IAAJ,CAAS,UAAAhc,CAAC;EAAA,mBAAI,EAAEA,CAAC,YAAY0U,IAAf,CAAJ;EAAA,WAAV,CAAJ,EAAyC;EACrC,gBAAIW,IAAI,CAACZ,GAAL,YAAoBC,IAApB,IACArM,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACZ,GAAL,CAASa,GAApB,EAAyB,GAAzB,CADA,IAEAD,IAAI,CAACZ,GAAL,CAASA,GAAT,YAAwBC,IAFxB,IAGAW,IAAI,CAACZ,GAAL,CAASA,GAAT,CAAaA,GAAb,KAAqBH,IAHzB,EAG8B;EAC1B,qBAAOe,IAAI,CAACZ,GAAL,CAASA,GAAT,CAAaa,GAApB;EACH;;EACD,gBAAI,EAAED,IAAI,CAACZ,GAAL,KAAaH,IAAb,IAAoBe,IAAI,CAACZ,GAAL,YAAoBC,IAA1C,CAAJ,EAAqD;EACjD,kBAAMtU,GAAG,GAAG,mCAAZ;EACA,oBAAM,IAAIqF,KAAJ,CAAUrF,GAAV,CAAN;EACH;;EACD,gBAAIqP,GAAG,CAACnN,MAAJ,GAAa,CAAjB,EAAoB;EAChB,kBAAMlC,IAAG,GAAG,6CAAZ;EACA,oBAAM,IAAIqF,KAAJ,CAAUrF,IAAV,CAAN;EACH;;EACD,gBAAI,EAAEiV,IAAI,CAACZ,GAAL,YAAoBC,IAApB,IAA4BjF,GAAG,CAAC,CAAD,CAAH,KAAW6E,IAAzC,CAAJ,EAAmD;EAC/C,qBAAO7E,GAAG,CAAC,CAAD,CAAV;EACH;EACJ,WAnBiC;;;EAqBlCA,UAAAA,GAAG,GAAGA,GAAG,CAACvM,GAAJ,CAAQ,UAAAgzB,SAAS,EAAI;EACvB,gBAAIO,OAAO,CAACra,GAAR,CAAY8Z,SAAZ,CAAJ,EAA4B;EACxB,qBAAOA,SAAS,CAACja,KAAV,EAAP;EACH,aAFD,MAEO;EACHwa,cAAAA,OAAO,CAACr3B,GAAR,CAAY82B,SAAZ;EACA,qBAAOA,SAAP;EACH;EACJ,WAPK,CAAN;EAQA,cAAM51B,KAAK,GAAGub,KAAK,CAACxG,IAAI,CAACZ,GAAN,EAAW,CAAX,EAAc,CAAd,CAAnB;;EACA,cAAInU,KAAK,KAAKgU,IAAV,IAAiB7E,GAAG,CAAC,CAAD,CAAH,KAAW6E,IAAhC,EAAqC;EACjC,mBAAO/W,SAAP;EACH;;EACD,iBAAO+Y,SAAS,CAAChW,KAAD,EAAQ,UAAAA,KAAK,EAAI;EAC7B,gBAAImP,GAAG,CAAC,CAAD,CAAH,KAAW6E,IAAf,EAAoB;EAChB,qBAAOhU,KAAP;EACH;;EACD,gBAAImP,GAAG,CAACnN,MAAJ,KAAe,CAAnB,EAAsB;EAClB,qBAAOO,IAAI,CAAC4M,GAAG,CAAC,CAAD,CAAJ,EAASnP,KAAT,CAAX;EACH;;EACD,gBAAIwB,MAAM,GAAG2N,GAAG,CAAC+D,MAAJ,CAAW,UAAC1R,MAAD,EAASo0B,SAAT,EAAuB;EAC3C,qBAAOrzB,IAAI,CAACf,MAAD,EAASo0B,SAAT,CAAX;EACH,aAFY,CAAb;EAGA,mBAAOrzB,IAAI,CAACf,MAAD,EAASxB,KAAT,CAAX;EACH,WAXe,CAAhB;EAYH,SA7Ce,CAAhB;EA8CH,OAxDM,CAwDJ+U,IAAI,CAACC,GAAL,CAASb,GAxDL,CAAP;EAyDH,KAzLuD;;;EA2LxD,QAAIgiB,OAAO,GAAG,IAAIC,GAAJ,EAAd;;EACA,aAAS7a,KAAT,CAAexG,IAAf,EAAqBghB,WAArB,EAAkCC,OAAlC,EAA2C;EACvC,UAAIjhB,IAAI,YAAYX,IAApB,EAA0B;EACtB,YAAIW,IAAI,CAACC,GAAL,YAAoBZ,IAAxB,EAA8B;EAC1B,cAAIrM,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAL,CAASA,GAApB,EAAyB,kBAAzB,CAAJ,EAAkD;EAC9C,mBAAOkhB,cAAc,CAACnhB,IAAD,EAAOghB,WAAW,GAAG,CAArB,EAAwBC,OAAxB,CAArB;EACH;;EACD,cAAIjuB,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAL,CAASA,GAApB,EAAyB,SAAzB,CAAJ,EAAyC;EACrC;EACA,gBAAI+gB,WAAW,GAAG,CAAd,KAAoBC,OAApB,IACAjhB,IAAI,CAACC,GAAL,CAASb,GAAT,YAAwBC,IADxB,IAEAW,IAAI,CAACC,GAAL,CAASb,GAAT,CAAaa,GAAb,YAA4BZ,IAF5B,IAGArM,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAL,CAASb,GAAT,CAAaa,GAAb,CAAiBA,GAA5B,EAAiC,kBAAjC,CAHJ,EAG0D;EACtD,kBAAMtL,IAAI,GAAGqL,IAAI,CAACC,GAAL,CAASb,GAAtB;EACA,qBAAO,IAAIC,IAAJ,CACH,IAAIA,IAAJ,CACI,IAAIrM,OAAJ,CAAY,SAAZ,CADJ,EAEImuB,cAAc,CAACxsB,IAAD,EAAOqsB,WAAW,GAAG,CAArB,EAAwBC,OAAxB,CAFlB,CADG,EAKHhiB,IALG,CAAP;EAOH,aAZD,MAYO,IAAIe,IAAI,CAACC,GAAL,CAASb,GAAT,YAAwBC,IAAxB,IACAW,IAAI,CAACC,GAAL,CAASb,GAAT,CAAaA,GAAb,KAAqBH,IADzB,EAC8B;EACjC,kBAAIe,IAAI,CAACC,GAAL,CAASb,GAAT,CAAaa,GAAb,YAA4BZ,IAAhC,EAAsC;EAClC;EACA,oBAAM5S,MAAM,GAAG,EAAf;EACA,uBAAQ,SAAS+Z,KAAT,CAAeJ,IAAf,EAAqB;EACzB,sBAAIA,IAAI,KAAKnH,IAAb,EAAkB;EACd,2BAAOI,IAAI,CAACkB,SAAL,CAAe9T,MAAf,CAAP;EACH;;EACD,yBAAOwU,SAAS,CAACzB,SAAQ,CAAC4G,IAAI,CAACnG,GAAN,EAAW;EAChC1B,oBAAAA,GAAG,EAAEzV,IAD2B;EAEhC6iB,oBAAAA,aAAa,EAAbA,aAFgC;EAGhClM,oBAAAA,KAAK,EAALA;EAHgC,mBAAX,CAAT,EAIZ,UAASiG,IAAT,EAAe;EACfjZ,oBAAAA,MAAM,CAACW,IAAP,CAAYsY,IAAZ;EACA,2BAAOc,KAAK,CAACJ,IAAI,CAAChH,GAAN,CAAZ;EACH,mBAPe,CAAhB;EAQH,iBAZM,CAYJY,IAAI,CAACC,GAAL,CAASb,GAZL,CAAP;EAaH,eAhBD,MAgBO;EACH;EACA;EACA;EACA,uBAAOY,IAAI,CAACC,GAAL,CAASb,GAAhB;EACH;EACJ;EACJ;EACJ;;EACD,YAAIpM,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAhB,EAAqB,YAArB,CAAJ,EAAwC;EACpC,cAAIb,GAAG,GAAGoH,KAAK,CAACxG,IAAI,CAACZ,GAAN,EAAW4hB,WAAX,EAAwBC,OAAO,GAAG,CAAlC,CAAf;EACA,iBAAO,IAAI5hB,IAAJ,CAASW,IAAI,CAACC,GAAd,EAAmBb,GAAnB,CAAP;EACH;;EACD,YAAIpM,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAhB,EAAqB,OAArB,CAAJ,EAAmC;EAC/B,iBAAO,IAAIZ,IAAJ,CACHW,IAAI,CAACC,GADF,EAEHuG,KAAK,CAACxG,IAAI,CAACZ,GAAN,EAAW4hB,WAAX,EAAwBC,OAAxB,CAFF,CAAP;EAIH;;EACD,YAAIjuB,OAAO,CAACwD,EAAR,CAAWwJ,IAAI,CAACC,GAAhB,EAAqB,SAArB,CAAJ,EAAqC;EACjC+gB,UAAAA,WAAW;;EACX,cAAIA,WAAW,GAAGC,OAAlB,EAA2B;EACvB,mBAAO,IAAI5hB,IAAJ,CACH,IAAIrM,OAAJ,CAAY,SAAZ,CADG,EAEHwT,KAAK,CAACxG,IAAI,CAACZ,GAAN,EAAW4hB,WAAX,EAAwBC,OAAxB,CAFF,CAAP;EAIH;;EACD,cAAID,WAAW,GAAGC,OAAlB,EAA2B;EACvB,kBAAM,IAAI7wB,KAAJ,CAAU,sCACA,eADV,CAAN;EAEH;;EACD,cAAI4P,IAAI,CAACZ,GAAL,YAAoBC,IAAxB,EAA8B;EAC1B,gBAAIW,IAAI,CAACZ,GAAL,CAASA,GAAT,KAAiBH,IAArB,EAA0B;EACtB,kBAAIe,IAAI,CAACZ,GAAL,CAASa,GAAT,YAAwBZ,IAA5B,EAAkC;EAC9B;EACA;EACA;EACA;EACA,oBAAM5S,QAAM,GAAG,EAAf,CAL8B;;EAO9B,uBAAQ,SAAS+Z,KAAT,CAAeJ,IAAf,EAAqB;EACzB,sBAAIA,IAAI,KAAKnH,IAAb,EAAkB;EACd,2BAAOI,IAAI,CAACkB,SAAL,CAAe9T,QAAf,CAAP;EACH;;EACD,yBAAOwU,SAAS,CAACzB,SAAQ,CAAC4G,IAAI,CAACnG,GAAN,EAAW;EAChC1B,oBAAAA,GAAG,EAAEzV,IAD2B;EAEhC6iB,oBAAAA,aAAa,EAAbA,aAFgC;EAGhClM,oBAAAA,KAAK,EAALA;EAHgC,mBAAX,CAAT,EAIZ,UAASiG,IAAT,EAAe;EACfjZ,oBAAAA,QAAM,CAACW,IAAP,CAAYsY,IAAZ;;EACA,2BAAOc,KAAK,CAACJ,IAAI,CAAChH,GAAN,CAAZ;EACH,mBAPe,CAAhB;EAQH,iBAZM,CAYJY,IAAI,CAACZ,GAZD,CAAP;EAaH,eApBD,MAoBO;EACH,uBAAOY,IAAI,CAACZ,GAAZ;EACH;EACJ,aAxBD,MAwBO;EACH,qBAAOI,SAAQ,CAACQ,IAAI,CAACZ,GAAL,CAASa,GAAV,EAAe;EAC1B1B,gBAAAA,GAAG,EAAEzV,IADqB;EAE1B6iB,gBAAAA,aAAa,EAAbA,aAF0B;EAG1BlM,gBAAAA,KAAK,EAALA;EAH0B,eAAf,CAAf;EAKH;EACJ,WAhCD,MAgCO;EACH,mBAAOO,IAAI,CAACZ,GAAZ;EACH;EACJ;;EACD,eAAOwhB,YAAY,CAAC5gB,IAAD,EAAO,UAACA,IAAD,EAAU;EAChC,iBAAOwG,KAAK,CAACxG,IAAD,EAAOghB,WAAP,EAAoBC,OAApB,CAAZ;EACH,SAFkB,CAAnB;EAGH,OA3GD,MA2GO,IAAIphB,eAAe,CAACG,IAAD,CAAnB,EAA2B;EAC9B,eAAOkhB,YAAY,CAAClhB,IAAD,EAAOghB,WAAP,EAAoBC,OAApB,CAAnB;EACH,OAFM,MAEA,IAAIjhB,IAAI,YAAYvH,KAApB,EAA2B;EAC9B,eAAOsoB,YAAY,CAAC/gB,IAAD,EAAOghB,WAAP,EAAoBC,OAApB,CAAnB;EACH;;EACD,aAAOjhB,IAAP;EACH,KA9SuD;;;EAgTxD,aAASshB,KAAT,CAAelb,IAAf,EAAqB;EACjB,UAAIA,IAAI,YAAY/G,IAApB,EAA0B;EACtB,eAAO+G,IAAI,CAACc,QAAD,CAAX;;EACA,YAAI,CAACd,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAL,EAA6B;EACzB4a,UAAAA,KAAK,CAAClb,IAAI,CAACnG,GAAN,CAAL;EACH;;EACD,YAAI,CAACmG,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAL,EAA6B;EACzB4a,UAAAA,KAAK,CAAClb,IAAI,CAAChH,GAAN,CAAL;EACH;EACJ;EACJ,KA1TuD;;;EA4TxD,QAAIS,eAAe,CAACpR,GAAG,CAACwR,GAAL,CAAf,IAA4B,CAAC6gB,YAAY,CAACxzB,MAAM,CAACkU,MAAP,CAAc/S,GAAG,CAACwR,GAAlB,CAAD,CAA7C,EAAuE;EACnE,aAAOvJ,KAAK,CAACjI,GAAG,CAACwR,GAAL,CAAZ;EACH;;EACD,QAAIxH,KAAK,CAACC,OAAN,CAAcjK,GAAG,CAACwR,GAAlB,KAA0B,CAAC6gB,YAAY,CAACryB,GAAG,CAACwR,GAAL,CAA3C,EAAsD;EAClD,aAAOvJ,KAAK,CAACjI,GAAG,CAACwR,GAAL,CAAZ;EACH;;EACD,QAAIxR,GAAG,CAACwR,GAAJ,YAAmBZ,IAAnB,IACA,CAAC5Q,GAAG,CAACwR,GAAJ,CAAQoB,IAAR,CAAa,SAAb,CADD,IAEA,CAAC5S,GAAG,CAACwR,GAAJ,CAAQoB,IAAR,CAAa,kBAAb,CAFD,IAGA,CAAC5S,GAAG,CAACwR,GAAJ,CAAQoB,IAAR,CAAa,YAAb,CAHL,EAGiC;EAC7B,aAAO3K,KAAK,CAACjI,GAAG,CAACwR,GAAL,CAAZ;EACH;;EACD,QAAItV,CAAC,GAAG6b,KAAK,CAAC/X,GAAG,CAACwR,GAAL,EAAU,CAAV,EAAa,CAAb,CAAb;EACA,WAAOgB,SAAS,CAACtW,CAAD,EAAI,UAAAM,KAAK,EAAI;EACzB;EACAq2B,MAAAA,KAAK,CAACr2B,KAAD,CAAL;EACA,aAAOyL,KAAK,CAACzL,KAAD,CAAZ;EACH,KAJe,CAAhB;EAKH,GA9UW,mcAvhCiB;EA42C7B;EACA2b,EAAAA,KAAK,EAAEld,GAAG,CAAC,OAAD,EAAU,SAASkd,KAAT,CAAexQ,IAAf,EAAqB;EACrCqQ,IAAAA,SAAS,CAAC,OAAD,EAAUrQ,IAAV,EAAgB,MAAhB,CAAT;EACA,WAAOA,IAAI,CAACwQ,KAAL,EAAP;EACH,GAHS,mEA72CmB;EAm3C7B;EACAhN,EAAAA,MAAM,EAAElQ,GAAG,CAAC,QAAD,EAAW,SAASkQ,MAAT,GAA0B;EAAA;;EAAA,wCAAP2nB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EAC5CA,IAAAA,KAAK,GAAGA,KAAK,CAAC1zB,GAAN,CAAU,UAAAiG,IAAI,EAAI;EACtB,UAAIA,IAAI,YAAYuL,IAApB,EAA0B;EACtB,eAAOvL,IAAI,CAAC8S,KAAL,EAAP;EACH;;EACD,aAAO9S,IAAP;EACH,KALO,CAAR;EAMA,WAAO,mBAAA5I,UAAU,CAACC,GAAX,CAAe,SAAf,GAA0Bd,IAA1B,yBAA+B,IAA/B,4BAAwCk3B,KAAxC,GAAP;EACH,GARU,qLAp3CkB;EAg4C7B;EACA,aAAW73B,GAAG,CAAC,SAAD,EAAY,YAAmB;EACzC,QAAI83B,OAAO,GAAGt2B,UAAU,CAACC,GAAX,CAAe,OAAf,CAAd;;EADyC,wCAAPo2B,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EAEzC,WAAOA,KAAK,CAACpjB,MAAN,CAAa,UAACC,GAAD,EAAMtK,IAAN,EAAe;EAC/B2S,MAAAA,SAAS,CAAC,SAAD,EAAYrI,GAAZ,EAAiB,CAAC,KAAD,EAAQ,MAAR,CAAjB,CAAT;;EACA,UAAI,CAACtK,IAAI,YAAYuL,IAAhB,IAAwBvL,IAAI,KAAKmL,IAAlC,KAA0C,CAACuiB,OAAO,CAAC1tB,IAAD,CAAtD,EAA8D;EAC1D,cAAM,IAAI1D,KAAJ,CAAU,gDAAV,CAAN;EACH;;EACD,UAAIif,OAAO,CAACvb,IAAD,CAAX,EAAmB;EACf,eAAOsK,GAAP;EACH;;EACD,UAAIA,GAAG,KAAKa,IAAZ,EAAiB;EACb,YAAInL,IAAI,KAAKmL,IAAb,EAAkB;EACd,iBAAOA,IAAP;EACH;;EACD,eAAOnL,IAAP;EACH;;EACD,aAAOsK,GAAG,CAACxE,MAAJ,CAAW9F,IAAX,CAAP;EACH,KAfM,EAeJmL,IAfI,CAAP;EAgBH,GAlBa,qOAj4Ce;EAw5C7B;EACApJ,EAAAA,OAAO,EAAEnM,GAAG,CAAC,SAAD,EAAY,SAASmM,OAAT,CAAiBpH,GAAjB,EAAsB;EAC1CgY,IAAAA,SAAS,CAAC,SAAD,EAAYhY,GAAZ,EAAiB,CAAC,OAAD,EAAU,MAAV,EAAkB,KAAlB,CAAjB,CAAT;;EACA,QAAIA,GAAG,KAAKwQ,IAAZ,EAAiB;EACb,aAAOA,IAAP;EACH;;EACD,QAAIxQ,GAAG,YAAY4Q,IAAnB,EAAyB;EACrB,UAAIjF,GAAG,GAAGlP,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BsD,GAA9B,EAAmCoH,OAAnC,EAAV;EACA,aAAO3K,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BiP,GAA9B,CAAP;EACH,KAHD,MAGO,IAAI,EAAE3L,GAAG,YAAYgK,KAAjB,CAAJ,EAA6B;EAChC,YAAM,IAAIrI,KAAJ,CAAUkpB,gBAAgB,CAAC,SAAD,EAAYnvB,IAAI,CAACsE,GAAD,CAAhB,EAAuB,eAAvB,CAA1B,CAAN;EACH,KAFM,MAEA;EACH,aAAOA,GAAG,CAACoH,OAAJ,EAAP;EACH;EACJ,GAbW,iJAz5CiB;EA06C7B;EACA4rB,EAAAA,GAAG,EAAE/3B,GAAG,CAAC,KAAD,EAAQ,SAAS+3B,GAAT,CAAa9b,KAAb,EAAoB5O,GAApB,EAAyB;EACrC0P,IAAAA,SAAS,CAAC,KAAD,EAAQd,KAAR,EAAe,QAAf,CAAT;EACAc,IAAAA,SAAS,CAAC,KAAD,EAAQ1P,GAAR,EAAa,CAAC,OAAD,EAAU,MAAV,CAAb,CAAT;;EACA,QAAIA,GAAG,YAAYsI,IAAnB,EAAyB;EACrB,UAAI+G,IAAI,GAAGrP,GAAX;EACA,UAAIE,KAAK,GAAG,CAAZ;;EACA,aAAOA,KAAK,GAAG0O,KAAf,EAAsB;EAClB,YAAI,CAACS,IAAI,CAAChH,GAAN,IAAagH,IAAI,CAAChH,GAAL,KAAaH,IAA1B,IAAiCmH,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAArC,EAA6D;EACzD,iBAAOzH,IAAP;EACH;;EACDmH,QAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACAnI,QAAAA,KAAK;EACR;;EACD,aAAOmP,IAAI,CAACnG,GAAZ;EACH,KAXD,MAWO,IAAIlJ,GAAG,YAAY0B,KAAnB,EAA0B;EAC7B,aAAO1B,GAAG,CAAC4O,KAAD,CAAV;EACH,KAFM,MAEA;EACH,YAAM,IAAIvV,KAAJ,CAAUkpB,gBAAgB,CAAC,KAAD,EAAQnvB,IAAI,CAAC4M,GAAD,CAAZ,EAAmB,eAAnB,EAAoC,CAApC,CAA1B,CAAN;EACH;EACJ,GAnBO,uJA36CqB;EAk8C7B;EACAX,EAAAA,IAAI,EAAE1M,GAAG,CAAC,MAAD,EAAS,SAAS0M,IAAT,GAAuB;EAAA,wCAANpB,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACrC,WAAOA,IAAI,CAACa,OAAL,GAAesI,MAAf,CAAsB,UAAC/H,IAAD,EAAOtC,IAAP;EAAA,aAAgB,IAAIuL,IAAJ,CAASvL,IAAT,EAAesC,IAAf,CAAhB;EAAA,KAAtB,EAA4D6I,IAA5D,CAAP;EACH,GAFQ,gFAn8CoB;EAw8C7B;EACAzD,EAAAA,SAAS,EAAE9R,GAAG,CAAC,WAAD,EAAc,SAAS8R,SAAT,CAAmB1O,MAAnB,EAA2BsP,KAA3B,EAAkCrG,GAAlC,EAAuC;EAC/D0Q,IAAAA,SAAS,CAAC,WAAD,EAAc3Z,MAAd,EAAsB,QAAtB,CAAT;EACA2Z,IAAAA,SAAS,CAAC,WAAD,EAAcrK,KAAd,EAAqB,QAArB,CAAT;EACAqK,IAAAA,SAAS,CAAC,WAAD,EAAc1Q,GAAd,EAAmB,CAAC,QAAD,EAAW,WAAX,CAAnB,CAAT;EACA,WAAOjJ,MAAM,CAAC0O,SAAP,CAAiBY,KAAK,CAAC1M,OAAN,EAAjB,EAAkCqG,GAAG,IAAIA,GAAG,CAACrG,OAAJ,EAAzC,CAAP;EACH,GALa,sHAz8Ce;EAi9C7B;EACAmN,EAAAA,MAAM,EAAEnT,GAAG,CAAC,QAAD,EAAW,SAASmT,MAAT,GAAyB;EAAA,wCAAN7H,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC3CA,IAAAA,IAAI,CAACtI,OAAL,CAAa,UAAC+B,GAAD,EAAMkH,CAAN;EAAA,aAAY8Q,SAAS,CAAC,QAAD,EAAWhY,GAAX,EAAgB,QAAhB,EAA0BkH,CAAC,GAAG,CAA9B,CAArB;EAAA,KAAb;EACA,WAAOX,IAAI,CAACxH,IAAL,CAAU,EAAV,CAAP;EACH,GAHU,0FAl9CkB;EAw9C7B;EACAA,EAAAA,IAAI,EAAE9D,GAAG,CAAC,MAAD,EAAS,SAAS8D,IAAT,CAAck0B,SAAd,EAAyBtrB,IAAzB,EAA+B;EAC7CqQ,IAAAA,SAAS,CAAC,MAAD,EAASib,SAAT,EAAoB,QAApB,CAAT;EACAjb,IAAAA,SAAS,CAAC,MAAD,EAASrQ,IAAT,EAAe,CAAC,MAAD,EAAS,KAAT,CAAf,CAAT;EACA,WAAOlL,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BiL,IAA9B,EAAoC5I,IAApC,CAAyCk0B,SAAzC,CAAP;EACH,GAJQ,gGAz9CoB;EAg+C7B;EACA3yB,EAAAA,KAAK,EAAErF,GAAG,CAAC,OAAD,EAAU,SAASqF,KAAT,CAAe2yB,SAAf,EAA0B50B,MAA1B,EAAkC;EAClD2Z,IAAAA,SAAS,CAAC,OAAD,EAAUib,SAAV,EAAqB,CAAC,OAAD,EAAU,QAAV,CAArB,CAAT;EACAjb,IAAAA,SAAS,CAAC,OAAD,EAAU3Z,MAAV,EAAkB,QAAlB,CAAT;EACA,WAAO5B,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8B2B,MAAM,CAACiC,KAAP,CAAa2yB,SAAb,CAA9B,CAAP;EACH,GAJS,2JAj+CmB;EAy+C7B;EACA7yB,EAAAA,OAAO,EAAEnF,GAAG,CAAC,SAAD,EAAY,SAASmF,OAAT,CAAiBwT,OAAjB,EAA0B0L,WAA1B,EAAuCjhB,MAAvC,EAA+C;EACnE2Z,IAAAA,SAAS,CAAC,SAAD,EAAYpE,OAAZ,EAAqB,CAAC,OAAD,EAAU,QAAV,CAArB,CAAT;EACAoE,IAAAA,SAAS,CAAC,SAAD,EAAYsH,WAAZ,EAAyB,CAAC,QAAD,EAAW,UAAX,CAAzB,CAAT;EACAtH,IAAAA,SAAS,CAAC,SAAD,EAAY3Z,MAAZ,EAAoB,QAApB,CAAT;EACA,WAAOA,MAAM,CAAC+B,OAAP,CAAewT,OAAf,EAAwB0L,WAAxB,CAAP;EACH,GALW,qMA1+CiB;EAm/C7B;EACApf,EAAAA,KAAK,EAAEjF,GAAG,CAAC,OAAD,EAAU,SAASiF,KAAT,CAAe0T,OAAf,EAAwBvV,MAAxB,EAAgC;EAChD2Z,IAAAA,SAAS,CAAC,OAAD,EAAUpE,OAAV,EAAmB,CAAC,OAAD,EAAU,QAAV,CAAnB,CAAT;EACAoE,IAAAA,SAAS,CAAC,OAAD,EAAU3Z,MAAV,EAAkB,QAAlB,CAAT;EACA,QAAIgB,CAAC,GAAGhB,MAAM,CAAC6B,KAAP,CAAa0T,OAAb,CAAR;EACA,WAAOvU,CAAC,GAAG5C,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8B2C,CAA9B,CAAH,GAAsC,KAA9C;EACH,GALS,mHAp/CmB;EA4/C7B;EACA6zB,EAAAA,MAAM,EAAEj4B,GAAG,CAAC,QAAD,EAAW,SAASi4B,MAAT,CAAgBtf,OAAhB,EAAyBvV,MAAzB,EAAiC;EACnD2Z,IAAAA,SAAS,CAAC,QAAD,EAAWpE,OAAX,EAAoB,CAAC,OAAD,EAAU,QAAV,CAApB,CAAT;EACAoE,IAAAA,SAAS,CAAC,QAAD,EAAW3Z,MAAX,EAAmB,QAAnB,CAAT;EACA,WAAOA,MAAM,CAAC60B,MAAP,CAActf,OAAd,CAAP;EACH,GAJU,4GA7/CkB;EAogD7B;EACAmF,EAAAA,IAAI,EAAE9d,GAAG,CAAC,MAAD,EAAS,SAAS8d,IAAT,CAAczQ,GAAd,EAAmBL,KAAnB,EAA0B;EACxC,WAAOpO,QAAQ,CAACyO,GAAD,EAAML,KAAN,CAAf;EACH,GAFQ,iGArgDoB;EA0gD7B;EACA,kBAAgBhN,GAAG,CAAC,cAAD,EAAiB,UAASoD,MAAT,EAAiB;EACjD2Z,IAAAA,SAAS,CAAC,cAAD,EAAiB3Z,MAAjB,EAAyB,QAAzB,CAAT;EACA,WAAO2G,YAAY,CAAC3G,MAAM,CAAC4C,OAAP,EAAD,CAAnB;EACH,GAHkB,kOA3gDU;EAmhD7B;EACA6O,EAAAA,GAAG,EAAE7U,GAAG,CAAC,KAAD,EAAQ,SAAS6U,GAAT,CAAaA,GAAb,EAAkB;EAC9BA,IAAAA,GAAG,GAAGA,GAAG,IAAI,IAAb;EACA,QAAIjL,KAAK,GAAGhG,MAAM,CAACC,IAAP,CAAYgR,GAAG,CAACE,OAAhB,EAAyB5Q,GAAzB,CAA6BmF,OAA7B,CAAZ,CAF8B;;EAI9B,QAAIvG,MAAJ;;EACA,QAAI6G,KAAK,CAACrG,MAAV,EAAkB;EACdR,MAAAA,MAAM,GAAG4S,IAAI,CAACkB,SAAL,CAAejN,KAAf,CAAT;EACH,KAFD,MAEO;EACH7G,MAAAA,MAAM,GAAGwS,IAAT;EACH;;EACD,QAAIV,GAAG,CAACye,UAAJ,YAA0BzT,WAA9B,EAA2C;EACvC,aAAOre,UAAU,CAACC,GAAX,CAAe,KAAf,EAAsBoT,GAAG,CAACye,UAA1B,EAAsCpjB,MAAtC,CAA6CnN,MAA7C,CAAP;EACH;;EACD,WAAOA,MAAP;EACH,GAdO,mKAphDqB;EAuiD7B;EACA,SAAO/C,GAAG,CAAC,KAAD,EAAQ,UAASqN,GAAT,EAAuB;EAAA,wCAAN/B,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACrC,QAAI4sB,QAAQ,cAAQ/Z,MAAM,CAAC9Q,GAAD,CAAd,qBAAwB/B,IAAI,CAACnH,GAAL,CAAS,UAAAlD,CAAC;EAAA,aAAIqlB,KAAK,CAACrlB,CAAD,CAAT;EAAA,KAAV,CAAxB,EAAZ;;EACA,WAAOi3B,QAAP;EACH,GAHS,0FAxiDmB;EA8iD7B;EACA,eAAal4B,GAAG,CACZ+c,SADY,gQA/iDa;EAsjD7B;EACA,oBAAkB/c,GAAG,CAAC,gBAAD,EAAmB,UAAS+M,MAAT,EAAiB;EACrDgQ,IAAAA,SAAS,CAAC,iBAAD,EAAoBhQ,MAApB,EAA4B,QAA5B,CAAT;EACA,WAAOpD,QAAQ,CAACsG,MAAT,CAAgBlD,MAAM,CAAC/G,OAAP,EAAhB,CAAP;EACH,GAHoB,kJAvjDQ;EA8jD7B;EACA,kBAAgBhG,GAAG,CAAC,cAAD,EAAiB,UAASmQ,GAAT,EAAc3D,IAAd,EAA6C;EAAA,QAAzB/L,IAAyB,uEAAlBkJ,QAAQ,CAAC8F,OAAS;EAC7EsN,IAAAA,SAAS,CAAC,cAAD,EAAiB5M,GAAjB,EAAsB,QAAtB,EAAgC,CAAhC,CAAT;EACA4M,IAAAA,SAAS,CAAC,cAAD,EAAiBvQ,IAAjB,EAAuB,QAAvB,EAAiC,CAAjC,CAAT;EACA7C,IAAAA,QAAQ,CAACuG,MAAT,CAAgBC,GAAG,CAACnK,OAAJ,EAAhB,EAA+BwG,IAA/B,EAAqC/L,IAArC;EACH,GAJkB,uhBA/jDU;EA2kD7B;EACA,SAAOgB,GA5kDsB;EA6kD7B,OAAKA,GA7kDwB;EA8kD7B;EACA,YAAUzB,GAAG,CACTme,MADS,oGA/kDgB;EAolD7B;EACA1d,EAAAA,IAAI,EAAET,GAAG,CACLS,IADK,+EArlDoB;EA0lD7B;EACA,cAAYT,GAAG,CAAC,UAAD,EAAa,YAAW;EACnC;EACA;EACA;EACH,GAJc,yEA3lDc;EAkmD7B;EACA,QAAMA,GAAG,CAAC,IAAD,EAAO,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EAC3B,QAAID,CAAC,YAAY/K,OAAb,IACA+K,CAAC,YAAYvL,OADb,IAEAuL,CAAC,YAAYvO,OAFjB,EAE0B;EACtBuO,MAAAA,CAAC,GAAGA,CAAC,CAACrO,OAAF,EAAJ;EACH;;EACD,WAAOqO,CAAC,IAAIiS,KAAK,CAAChS,CAAD,CAAjB;EACH,GAPQ,8FAnmDoB;EA6mD7B;EACA,gBAActU,GAAG,CAAC,YAAD,EAAe,UAASS,IAAT,EAAe4M,GAAf,EAAoB;EAChD,WAAOA,GAAG,YAAY8Q,MAAM,CAAC1d,IAAD,CAA5B;EACH,GAFgB,yFA9mDY;EAmnD7B;EACA,gBAAcT,GAAG,CACb,YADa,EAEb+f,YAFa,6FApnDY;EA0nD7B;EACA,YAAU/f,GAAG,CAAC,QAAD,EAAW,UAASqN,GAAT,EAAc;EAClC,WAAOA,GAAG,YAAYuJ,KAAtB;EACH,GAFY,2EA3nDgB;EAgoD7B;EACA,eAAa5W,GAAG,CACZ,WADY,EAEZqO,WAFY,kFAjoDa;EAuoD7B;EACA,WAASrO,GAAG,CAAC,OAAD,EAAU,UAASuB,KAAT,EAAgB;EAClC,QAAId,IAAI,CAACc,KAAD,CAAJ,KAAgB,QAApB,EAA8B;EAC1B,aAAO,KAAP;EACH;;EACD,QAAIA,KAAK,YAAYuE,OAArB,EAA8B;EAC1B,aAAOvE,KAAK,CAAC0pB,OAAN,EAAP;EACH;;EACD,WAAOnlB,OAAO,CAACmlB,OAAR,CAAgB1pB,KAAhB,CAAP;EACH,GARW,0EAxoDiB;EAmpD7B;EACA,aAAWvB,GAAG,CAAC,SAAD,EAAY,UAASiB,CAAT,EAAY;EAClC,WAAOiG,MAAM,CAACuW,KAAP,CAAaxc,CAAb,KAAmB6E,OAAO,CAACsd,QAAR,CAAiBniB,CAAjB,CAA1B;EACH,GAFa,0FAppDe;EAypD7B;EACA,aAAWjB,GAAG,CAAC,SAAD,EAAY,UAASqN,GAAT,EAAc;EACpC,WAAOvE,OAAO,CAACsE,QAAR,CAAiBC,GAAjB,CAAP;EACH,GAFa,6EA1pDe;EA+pD7B;EACA,WAASrN,GAAG,CAAC,OAAD,EAAU,UAASqN,GAAT,EAAc;EAChC,WAAOA,GAAG,YAAYsI,IAAtB;EACH,GAFW,2FAhqDiB;EAqqD7B;EACA,YAAU3V,GAAG,CAAC,QAAD,EAAW,UAASqN,GAAT,EAAc;EAClC,WAAOA,GAAG,YAAY3L,MAAtB;EACH,GAFY,sFAtqDgB;EA2qD7B;EACA,WAAS1B,GAAG,CAAC,OAAD,EAAU,UAASqN,GAAT,EAAc;EAChC,WAAOsY,OAAO,CAACtY,GAAD,CAAd;EACH,GAFW,yEA5qDiB;EAirD7B;EACA,cAAYrN,GAAG,CAAC,UAAD,EAAa,UAASqN,GAAT,EAAc;EACtC,WAAO,OAAOA,GAAP,KAAe,SAAtB;EACH,GAFc,6EAlrDc;EAurD7B;EACA,aAAWrN,GAAG,CAAC,SAAD,EAAY,UAASqN,GAAT,EAAc;EACpC,WAAOA,GAAG,YAAY/D,OAAtB;EACH,GAFa,+EAxrDe;EA6rD7B;EACA,YAAUtJ,GAAG,CAAC,QAAD,EAAW,UAASqN,GAAT,EAAc;EAClC,WAAOA,GAAG,YAAY0B,KAAtB;EACH,GAFY,6EA9rDgB;EAmsD7B;EACA,aAAW/O,GAAG,CAAC,SAAD,EAAY,UAASqN,GAAT,EAAc;EACpC,WAAOA,GAAG,KAAKkI,IAAR,IAAelI,GAAG,KAAK,IAAvB,IACH,EAAEA,GAAG,YAAY5G,UAAjB,CADG,IAEH,EAAE4G,GAAG,YAAY3L,MAAjB,CAFG,IAGH,EAAE2L,GAAG,YAAYvE,OAAjB,CAHG,IAIH,EAAEuE,GAAG,YAAYsI,IAAjB,CAJG,IAKH,EAAEtI,GAAG,YAAYvH,OAAjB,CALG,IAMH,QAAOuH,GAAP,MAAe,QANZ,IAOH,EAAEA,GAAG,YAAY0B,KAAjB,CAPJ;EAQH,GATa,oFApsDe;EAgtD7B;EACAuN,EAAAA,OAAO,EAAEtc,GAAG,CAAC,SAAD,EAAY,SAASsc,OAAT,CAAiB5P,IAAjB,EAAuB;EAC3CqQ,IAAAA,SAAS,CAAC,SAAD,EAAYrQ,IAAZ,EAAkB,MAAlB,CAAT;EACA,WAAOA,IAAI,CAAC4P,OAAL,EAAP;EACH,GAHW,mFAjtDiB;EAutD7B;EACA,iBAAetc,GAAG,CAAC,aAAD,EAAgB,UAASqP,KAAT,EAAgB;EAC9C0N,IAAAA,SAAS,CAAC,aAAD,EAAgB1N,KAAhB,EAAuB,OAAvB,CAAT;EACA,WAAOsG,IAAI,CAACkB,SAAL,CAAexH,KAAf,CAAP;EACH,GAHiB,uFAxtDW;EA8tD7B;EACA,iBAAerP,GAAG,CACd,aADc,EAEd0W,QAAQ,CAAC,aAAD,EAAgB,IAAhB,CAFM,mGA/tDW;EAquD7B;EACA,iBAAe1W,GAAG,CACd,aADc,EAEd0W,QAAQ,CAAC,aAAD,CAFM,yFAtuDW;EA4uD7B;EACAlL,EAAAA,KAAK,EAAExL,GAAG,CAAC,OAAD,EAAU,SAASwL,KAAT,CAAe3L,EAAf,EAA4B;EAAA,wCAANyL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC5CyR,IAAAA,SAAS,CAAC,OAAD,EAAUld,EAAV,EAAc,UAAd,EAA0B,CAA1B,CAAT;EACA,QAAI8a,IAAI,GAAGrP,IAAI,CAACjB,GAAL,EAAX;EACA0S,IAAAA,SAAS,CAAC,OAAD,EAAUpC,IAAV,EAAgB,CAAC,MAAD,EAAS,KAAT,CAAhB,EAAiCrP,IAAI,CAAC/H,MAAL,GAAc,CAA/C,CAAT;EACA+H,IAAAA,IAAI,GAAGA,IAAI,CAAC6H,MAAL,CAAY3R,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8Bd,IAA9B,CAAmC,IAAnC,EAAyCga,IAAzC,CAAZ,CAAP;EACA,WAAO9a,EAAE,CAAC2L,KAAH,CAAS,IAAT,EAAe2sB,eAAe,CAACt4B,EAAD,EAAKyL,IAAL,CAA9B,CAAP;EACH,GANS,uFA7uDmB;EAsvD7B;EACA/H,EAAAA,MAAM,EAAEvD,GAAG,CAAC,QAAD,EAAW,SAASuD,MAAT,CAAgB8J,GAAhB,EAAqB;EACvC,QAAI,CAACA,GAAD,IAAQA,GAAG,KAAKkI,IAApB,EAAyB;EACrB,aAAO,CAAP;EACH;;EACD,QAAIlI,GAAG,YAAYsI,IAAnB,EAAyB;EACrB,aAAOtI,GAAG,CAAC9J,MAAJ,EAAP;EACH;;EACD,QAAI,YAAY8J,GAAhB,EAAqB;EACjB,aAAOA,GAAG,CAAC9J,MAAX;EACH;EACJ,GAVU,0JAvvDkB;EAqwD7B;EACA,oBAAkBvD,GAAG,CAAC,gBAAD,EAAmB,UAAS+E,GAAT,EAA0B;EAAA,QAAZ9B,KAAY,uEAAJ,EAAI;EAC9D8Z,IAAAA,SAAS,CAAC,gBAAD,EAAmBhY,GAAnB,EAAwB,QAAxB,EAAkC,CAAlC,CAAT;EACAgY,IAAAA,SAAS,CAAC,gBAAD,EAAmB9Z,KAAnB,EAA0B,QAA1B,EAAoC,CAApC,CAAT;EACA8B,IAAAA,GAAG,GAAGA,GAAG,CAACiB,OAAJ,EAAN;EACA/C,IAAAA,KAAK,GAAGA,KAAK,CAAC+C,OAAN,EAAR;;EACA,QAAIjB,GAAG,CAACE,KAAJ,CAAUP,gBAAV,KAA+BK,GAAG,CAACE,KAAJ,CAAUV,WAAV,CAAnC,EAA2D;EACvD,aAAOmB,cAAc,CAACX,GAAD,EAAM9B,KAAN,CAArB;EACH,KAFD,MAEO,IAAI8B,GAAG,CAACE,KAAJ,CAAUN,eAAV,KAA8BI,GAAG,CAACE,KAAJ,CAAUX,UAAV,CAAlC,EAAyD;EAC5D,aAAOqC,aAAa,CAAC5B,GAAD,EAAM9B,KAAN,CAApB;EACH,KAFM,MAEA;EACH,UAAMm1B,UAAU,GAAIn1B,KAAK,KAAK,EAAV,IAAgB,CAAC8B,GAAG,CAACE,KAAJ,CAAU,IAAV,CAAlB,IAAsChC,KAAK,KAAK,EAAnE;;EACA,UAAI8B,GAAG,CAACE,KAAJ,CAAUR,WAAV,KAA0B2zB,UAA1B,IAAwCrzB,GAAG,CAACE,KAAJ,CAAUT,MAAV,CAA5C,EAA+D;EAC3D,eAAOyB,aAAa,CAAClB,GAAD,EAAM9B,KAAN,CAApB;EACH;;EACD,UAAI8B,GAAG,CAACE,KAAJ,CAAUvC,QAAV,CAAJ,EAAyB;EACrB,eAAOqE,WAAW,CAAChC,GAAD,CAAlB;EACH;EACJ;;EACD,WAAO,KAAP;EACH,GAnBoB,qFAtwDQ;EA4xD7B;EACA,SAAO/E,GAAG,CAAC,IAAI4W,KAAJ,CAAU,KAAV,EAAiB,UAASf,IAAT,UAAyC;EAAA;;EAAA,QAAxBoM,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,MAAS,UAATA,KAAS;EACjE,WAAO,IAAI9G,OAAJ,CAAY,UAAC6hB,OAAD,EAAUC,MAAV,EAAqB;EACpC,UAAIsH,YAAJ,EAAkBC,cAAlB;;EACA,UAAIhvB,OAAO,CAACwD,EAAR,CAAW+I,IAAI,CAACH,GAAL,CAASa,GAAT,CAAaA,GAAxB,EAA6B,OAA7B,CAAJ,EAA2C;EACvC8hB,QAAAA,YAAY,GAAGxiB,IAAI,CAACH,GAAL,CAASa,GAAxB;;EACA,YAAIV,IAAI,CAACH,GAAL,CAASA,GAAT,YAAwBC,IAAxB,IACArM,OAAO,CAACwD,EAAR,CAAW+I,IAAI,CAACH,GAAL,CAASA,GAAT,CAAaa,GAAb,CAAiBA,GAA5B,EAAiC,SAAjC,CADJ,EACiD;EAC7C+hB,UAAAA,cAAc,GAAGziB,IAAI,CAACH,GAAL,CAASA,GAAT,CAAaa,GAA9B;EACH;EACJ,OAND,MAMO,IAAIjN,OAAO,CAACwD,EAAR,CAAW+I,IAAI,CAACH,GAAL,CAASa,GAAT,CAAaA,GAAxB,EAA6B,SAA7B,CAAJ,EAA6C;EAChD+hB,QAAAA,cAAc,GAAGziB,IAAI,CAACH,GAAL,CAASa,GAA1B;EACH;;EACD,UAAI,EAAE+hB,cAAc,IAAID,YAApB,CAAJ,EAAuC;EACnC,cAAM,IAAI3xB,KAAJ,CAAU,qBAAV,CAAN;EACH;;EACD,UAAIsV,KAAI,GAAG8U,OAAX;;EACA,UAAIwH,cAAJ,EAAoB;EAChBtc,QAAAA,KAAI,GAAG,cAASjZ,MAAT,EAAiBqI,IAAjB,EAAuB;EAC1B;EACA4Q,UAAAA,KAAI,GAAG+U,MAAP;EACAxZ,UAAAA,SAAS,CAACzB,SAAQ,CAAC,IAAIH,IAAJ,CACf,IAAIrM,OAAJ,CAAY,OAAZ,CADe,EAEfgvB,cAAc,CAAC5iB,GAFA,CAAD,EAGfpK,IAHe,CAAT,EAGC,YAAW;EACjBF,YAAAA,IAAI,CAACrI,MAAD,CAAJ;EACH,WALQ,CAAT;EAMH,SATD;EAUH;;EACD,UAAIuI,IAAI,GAAG;EACPuJ,QAAAA,GAAG,EAAE,OADE;EAEPkB,QAAAA,KAAK,EAAE,eAACvV,CAAD,EAAO;EACV,cAAIqU,GAAG,GAAG,OAAI,CAACkT,OAAL,CAAa,KAAb,CAAV;;EACA,cAAIsQ,YAAJ,EAAkB;EACdxjB,YAAAA,GAAG,CAAC/D,GAAJ,CAAQunB,YAAY,CAAC3iB,GAAb,CAAiBa,GAAjB,CAAqBA,GAA7B,EAAkC/V,CAAlC;EACA,gBAAI8K,IAAI,GAAG;EACPuJ,cAAAA,GAAG,EAAHA,GADO;EAEPkB,cAAAA,KAAK,EAALA;EAFO,aAAX;;EAIA,gBAAIkM,aAAJ,EAAmB;EACf3W,cAAAA,IAAI,CAAC2W,aAAL,GAAqB,OAArB;EACH;;EACD1K,YAAAA,SAAS,CAACzB,SAAQ,CAAC,IAAIH,IAAJ,CACf,IAAIrM,OAAJ,CAAY,OAAZ,CADe,EAEf+uB,YAAY,CAAC3iB,GAAb,CAAiBA,GAFF,CAAD,EAGfpK,IAHe,CAAT,EAGC,UAASvI,MAAT,EAAiB;EACvBiZ,cAAAA,KAAI,CAACjZ,MAAD,EAAS+tB,OAAT,CAAJ;EACH,aALQ,CAAT;EAMH,WAfD,MAeO;EACH9U,YAAAA,KAAI,CAACxb,CAAD,EAAIuV,MAAJ,CAAJ;EACH;EACJ;EAtBM,OAAX;;EAwBA,UAAIkM,aAAJ,EAAmB;EACf3W,QAAAA,IAAI,CAAC2W,aAAL,GAAqB,OAArB;EACH;;EACD,UAAIlf,MAAM,GAAG+S,SAAQ,CAACD,IAAI,CAACU,GAAN,EAAWjL,IAAX,CAArB;;EACA,UAAIzJ,UAAU,CAACkB,MAAD,CAAd,EAAwB;EACpBA,QAAAA,MAAM,CAACjB,IAAP,CAAY,UAAAiB,MAAM,EAAI;EAClBiZ,UAAAA,KAAI,CAACjZ,MAAD,EAAS+tB,OAAT,CAAJ;EACH,SAFD,WAESxlB,IAAI,CAACyK,KAFd;EAGH,OAJD,MAIO;EACHiG,QAAAA,KAAI,CAACjZ,MAAD,EAAS+tB,OAAT,CAAJ;EACH;EACJ,KA9DM,CAAP;EA+DH,GAhEU,CAAD,sVA7xDmB;EAo2D7B;EACA,WAAS9wB,GAAG,CAAC,OAAD,EAAU,UAASqN,GAAT,EAAc;EAChC,UAAMA,GAAN;EACH,GAFW,uEAr2DiB;EA02D7B,WAASrN,GAAG,CAAC,OAAD,EAAU,UAASmf,OAAT,EAAkB;EACpC,UAAM,IAAIzY,KAAJ,CAAUyY,OAAV,CAAN;EACH,GAFW,wDA12DiB;EA+2D7B;EACAxH,EAAAA,IAAI,EAAE3X,GAAG,CAAC,MAAD,EAAS,SAAS2X,IAAT,CAAc5S,GAAd,EAAmB2H,IAAnB,EAAyB;EACvCqQ,IAAAA,SAAS,CAAC,MAAD,EAAShY,GAAT,EAAc,CAAC,OAAD,EAAU,UAAV,CAAd,CAAT;EACAgY,IAAAA,SAAS,CAAC,MAAD,EAASrQ,IAAT,EAAe,CAAC,MAAD,EAAS,KAAT,CAAf,CAAT;;EACA,QAAIiZ,OAAO,CAACjZ,IAAD,CAAX,EAAmB;EACf,aAAO6I,IAAP;EACH;;EACD,QAAI1V,EAAE,GAAGqY,OAAO,CAAC,MAAD,EAASnT,GAAT,CAAhB;EACA,WAAOwS,SAAS,CAAC1X,EAAE,CAAC6M,IAAI,CAAC6J,GAAN,CAAH,EAAe,UAAShV,KAAT,EAAgB;EAC3C,UAAIA,KAAK,IAAIA,KAAK,KAAKgU,IAAvB,EAA4B;EACxB,eAAO7I,IAAI,CAAC6J,GAAZ;EACH;;EACD,aAAOoB,IAAI,CAAC5S,GAAD,EAAM2H,IAAI,CAACgJ,GAAX,CAAX;EACH,KALe,CAAhB;EAMH,GAbQ,2MAh3DoB;EAk4D7B;EACA,cAAY1V,GAAG,CAAC,UAAD,EAAa,UAASH,EAAT,EAAuB;EAAA;;EAC/Ckd,IAAAA,SAAS,CAAC,UAAD,EAAald,EAAb,EAAiB,UAAjB,CAAT;;EAD+C,wCAAP8jB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EAE/CA,IAAAA,KAAK,CAAC3gB,OAAN,CAAc,UAAC+B,GAAD,EAAMkH,CAAN,EAAY;EACtB8Q,MAAAA,SAAS,CAAC,UAAD,EAAahY,GAAb,EAAkB,CAAC,MAAD,EAAS,KAAT,CAAlB,EAAmCkH,CAAC,GAAG,CAAvC,CAAT;EACH,KAFD,EAF+C;EAM/C;EACA;;EACA,QAAIuL,GAAG,GAAG,oBAAAhW,UAAU,CAACC,GAAX,CAAe,KAAf,GAAsBd,IAAtB,0BAA2B,IAA3B,EAAiCd,EAAjC,SAAwC8jB,KAAxC,EAAV;;EACA,QAAI9hB,UAAU,CAAC2V,GAAD,CAAd,EAAqB;EACjB,aAAOA,GAAG,CAAC1V,IAAJ,CAAS,YAAM,EAAf,CAAP;EACH;EACJ,GAZc,kUAn4Dc;EAq5D7B;EACAqC,EAAAA,GAAG,EAAEnE,GAAG,CAAC,KAAD,EAAQ,SAASmE,GAAT,CAAatE,EAAb,EAA2B;EAAA;;EAAA,wCAAP8jB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EACvC5G,IAAAA,SAAS,CAAC,KAAD,EAAQld,EAAR,EAAY,UAAZ,CAAT;EACA,QAAIi4B,OAAO,GAAGt2B,UAAU,CAACC,GAAX,CAAe,OAAf,CAAd;EACAkiB,IAAAA,KAAK,CAAC3gB,OAAN,CAAc,UAAC+B,GAAD,EAAMkH,CAAN,EAAY;EACtB8Q,MAAAA,SAAS,CAAC,KAAD,EAAQhY,GAAR,EAAa,CAAC,MAAD,EAAS,KAAT,CAAb,EAA8BkH,CAAC,GAAG,CAAlC,CAAT,CADsB;;EAGtB,UAAIlH,GAAG,YAAY4Q,IAAf,IAAuB,CAACmiB,OAAO,CAACn3B,IAAR,CAAa,OAAb,EAAmBoE,GAAnB,CAA5B,EAAqD;EACjD,cAAM,IAAI2B,KAAJ,yBAA2BuF,CAAC,GAAG,CAA/B,oBAAN;EACH;EACJ,KAND;;EAOA,QAAI0X,KAAK,CAACpgB,MAAN,KAAiB,CAArB,EAAwB;EACpB,aAAOgS,IAAP;EACH;;EACD,QAAIoO,KAAK,CAAC1G,IAAN,CAAW,UAAAhc,CAAC;EAAA,aAAIA,CAAC,KAAKsU,IAAV;EAAA,KAAZ,CAAJ,EAAgC;EAC5B,aAAOA,IAAP;EACH;;EACD,QAAIjK,IAAI,GAAGqY,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,aAAIA,CAAC,CAAChiB,GAAN;EAAA,KAAX,CAAX;EACA,QAAImd,YAAY,GAAG,KAAKjyB,GAAL,CAAS,cAAT,CAAnB;EACA,QAAIoT,GAAG,GAAG,KAAK2e,QAAL,CAAc3zB,EAAd,EAAkByL,IAAlB,CAAV;EACAuJ,IAAAA,GAAG,CAAC/D,GAAJ,CAAQ,cAAR,EAAwB4iB,YAAxB;EACA,WAAOnc,SAAS,CAAC1X,EAAE,CAACc,IAAH,OAAAd,EAAE,GAAMgV,GAAN,4BAAcvJ,IAAd,GAAH,EAAwB,UAACgK,IAAD,EAAU;EAC9C,aAAOiC,SAAS,CAACpT,GAAG,CAACxD,IAAJ,OAAAwD,GAAG,GAAM,OAAN,EAAYtE,EAAZ,4BAAmB8jB,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,eAAIA,CAAC,CAAC7iB,GAAN;EAAA,OAAX,CAAnB,GAAJ,EAA+C,UAACzK,IAAD,EAAU;EACrE,eAAO,IAAI0K,IAAJ,CAASL,IAAT,EAAerK,IAAf,CAAP;EACH,OAFe,CAAhB;EAGH,KAJe,CAAhB;EAKH,GAzBO,4bAt5DqB;EAu7D7B;EACA,WAASjL,GAAG,CAAC,OAAD,EAAU,UAASqN,GAAT,EAAc;EAChC,QAAIqP,IAAI,GAAGrP,GAAX;;EACA,WAAO,IAAP,EAAa;EACT,UAAIqP,IAAI,KAAKnH,IAAb,EAAkB;EACd,eAAO,IAAP;EACH;;EACD,UAAI,EAAEmH,IAAI,YAAY/G,IAAlB,CAAJ,EAA6B;EACzB,eAAO,KAAP;EACH;;EACD,UAAI+G,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAJ,EAA4B;EACxB,eAAO,KAAP;EACH;;EACDN,MAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACH;EACJ,GAdW,wKAx7DiB;EA08D7B;EACAuH,EAAAA,IAAI,EAAEjd,GAAG,CAAC,MAAD,EAAS,SAASid,IAAT,CAAcpd,EAAd,EAAkB6M,IAAlB,EAAwB;EACtCqQ,IAAAA,SAAS,CAAC,MAAD,EAASld,EAAT,EAAa,UAAb,CAAT;EACAkd,IAAAA,SAAS,CAAC,MAAD,EAASrQ,IAAT,EAAe,CAAC,MAAD,EAAS,KAAT,CAAf,CAAT;;EACA,QAAIiZ,OAAO,CAACjZ,IAAD,CAAX,EAAmB;EACf,aAAO,KAAP;EACH,KAFD,MAEO;EACH,aAAO6K,SAAS,CAAC1X,EAAE,CAAC6M,IAAI,CAAC6J,GAAN,CAAH,EAAe,UAAChV,KAAD,EAAW;EACtC,eAAOA,KAAK,IAAI0b,IAAI,CAACpd,EAAD,EAAK6M,IAAI,CAACgJ,GAAV,CAApB;EACH,OAFe,CAAhB;EAGH;EACJ,GAVQ,0QA38DoB;EA09D7B;EACAiT,EAAAA,IAAI,EAAE3oB,GAAG,CAAC,MAAD,EAAS2oB,IAAI,CAAC,MAAD,EAAS,UAASA,IAAT,EAAe9oB,EAAf,EAAmBnB,IAAnB,EAAmC;EAAA,wCAAPilB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EAC9D5G,IAAAA,SAAS,CAAC,MAAD,EAASld,EAAT,EAAa,UAAb,CAAT;EACA8jB,IAAAA,KAAK,CAAC3gB,OAAN,CAAc,UAAC+B,GAAD,EAAMkH,CAAN,EAAY;EACtB8Q,MAAAA,SAAS,CAAC,MAAD,EAAShY,GAAT,EAAc,CAAC,MAAD,EAAS,KAAT,CAAd,EAA+BkH,CAAC,GAAG,CAAnC,CAAT;EACH,KAFD;;EAGA,QAAI0X,KAAK,CAAC1G,IAAN,CAAW,UAAAhc,CAAC;EAAA,aAAIA,CAAC,KAAKsU,IAAV;EAAA,KAAZ,CAAJ,EAAgC;EAC5B,aAAO7W,IAAP;EACH;;EACD,QAAM6C,KAAK,GAAGonB,IAAI,CAAChoB,IAAL,OAAAgoB,IAAI,GAAM,IAAN,EAAY9oB,EAAZ,EAAgBnB,IAAhB,4BAAyBilB,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,aAAIA,CAAC,CAAC7iB,GAAN;EAAA,KAAX,CAAzB,GAAlB;EACA,WAAO6B,SAAS,CAAChW,KAAD,EAAQ,UAAAA,KAAK,EAAI;EAC7B,aAAO1B,EAAE,MAAF,4BAAM8jB,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,eAAIA,CAAC,CAAChiB,GAAN;EAAA,OAAX,CAAN,UAA6BhV,KAA7B,GAAP;EACH,KAFe,CAAhB;EAGH,GAZqB,CAAb,0RA39DoB;EA6+D7B;EACAi3B,EAAAA,KAAK,EAAEx4B,GAAG,CAAC,OAAD,EAAU,SAASw4B,KAAT,GAAwB;EAAA,wCAAN30B,IAAM;EAANA,MAAAA,IAAM;EAAA;;EACxC,WAAO,UAASwJ,GAAT,EAAc;EACjBxJ,MAAAA,IAAI,GAAGA,IAAI,CAACM,GAAL,CAAS,UAAAlD,CAAC;EAAA,eAAIA,CAAC,YAAYqI,OAAb,GAAuBrI,CAAC,CAAC0L,QAAzB,GAAoC1L,CAAxC;EAAA,OAAV,CAAP;;EACA,UAAI4C,IAAI,CAACN,MAAL,KAAgB,CAApB,EAAuB;EACnB,eAAOgS,IAAP;EACH,OAFD,MAEO,IAAI1R,IAAI,CAACN,MAAL,KAAgB,CAApB,EAAuB;EAC1B,qBAAcM,IAAd;EAAA;EAAA,YAAOuS,MAAP;;EACA,eAAO/I,GAAG,CAAC+I,MAAD,CAAV;EACH;;EACD,UAAIrT,MAAM,GAAG,EAAb;EACAc,MAAAA,IAAI,CAACb,OAAL,CAAa,UAACoT,GAAD,EAAS;EAClBrT,QAAAA,MAAM,CAACqT,GAAD,CAAN,GAAc/I,GAAG,CAAC+I,GAAD,CAAjB;EACH,OAFD;EAGA,aAAOrT,MAAP;EACH,KAbD;EAcH,GAfS,uQA9+DmB;EAkgE7B;EACA0R,EAAAA,MAAM,EAAEzU,GAAG,CAAC,QAAD,EAAW2oB,IAAI,CAAC,QAAD,EAAW,UAASlU,MAAT,EAAiB5U,EAAjB,EAAqBnB,IAArB,EAAqC;EAAA;;EAAA,wCAAPilB,KAAO;EAAPA,MAAAA,KAAO;EAAA;;EACtE5G,IAAAA,SAAS,CAAC,QAAD,EAAWld,EAAX,EAAe,UAAf,CAAT;EACA8jB,IAAAA,KAAK,CAAC3gB,OAAN,CAAc,UAAC+B,GAAD,EAAMkH,CAAN,EAAY;EACtB8Q,MAAAA,SAAS,CAAC,QAAD,EAAWhY,GAAX,EAAgB,CAAC,MAAD,EAAS,KAAT,CAAhB,EAAiCkH,CAAC,GAAG,CAArC,CAAT;EACH,KAFD;;EAGA,QAAI0X,KAAK,CAAC1G,IAAN,CAAW,UAAAhc,CAAC;EAAA,aAAIA,CAAC,KAAKsU,IAAV;EAAA,KAAZ,CAAJ,EAAgC;EAC5B,aAAO7W,IAAP;EACH;;EACD,WAAO6Y,SAAS,CAAC1X,EAAE,MAAF,4BAAM8jB,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,aAAIA,CAAC,CAAChiB,GAAN;EAAA,KAAX,CAAN,UAA6B7X,IAA7B,GAAD,EAAqC,UAAC6C,KAAD,EAAW;EAC5D,aAAOkT,MAAM,CAAC9T,IAAP,OAAA8T,MAAM,GAAM,OAAN,EAAY5U,EAAZ,EAAgB0B,KAAhB,4BAA0BoiB,KAAK,CAACxf,GAAN,CAAU,UAAAo0B,CAAC;EAAA,eAAIA,CAAC,CAAC7iB,GAAN;EAAA,OAAX,CAA1B,GAAb;EACH,KAFe,CAAhB;EAGH,GAXyB,CAAf,ybAngEkB;EAshE7B;EACA9J,EAAAA,MAAM,EAAE5L,GAAG,CAAC,QAAD,EAAW,SAAS4L,MAAT,CAAgB7G,GAAhB,EAAqB2H,IAArB,EAA2B;EAC7CqQ,IAAAA,SAAS,CAAC,QAAD,EAAWhY,GAAX,EAAgB,CAAC,OAAD,EAAU,UAAV,CAAhB,CAAT;EACAgY,IAAAA,SAAS,CAAC,QAAD,EAAWrQ,IAAX,EAAiB,CAAC,MAAD,EAAS,KAAT,CAAjB,CAAT;EACA,QAAI2C,KAAK,GAAG7N,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BiL,IAA9B,CAAZ;EACA,QAAI3J,MAAM,GAAG,EAAb;EACA,QAAIlD,EAAE,GAAGqY,OAAO,CAAC,QAAD,EAAWnT,GAAX,CAAhB;EACA,WAAQ,SAAS4N,IAAT,CAAc1G,CAAd,EAAiB;EACrB,eAAS+P,IAAT,CAAcza,KAAd,EAAqB;EACjB,YAAIA,KAAK,IAAIA,KAAK,KAAKgU,IAAvB,EAA4B;EACxBxS,UAAAA,MAAM,CAACW,IAAP,CAAY0G,IAAZ;EACH;;EACD,eAAOuI,IAAI,CAAC,EAAE1G,CAAH,CAAX;EACH;;EACD,UAAIA,CAAC,KAAKoD,KAAK,CAAC9L,MAAhB,EAAwB;EACpB,eAAOoS,IAAI,CAACkB,SAAL,CAAe9T,MAAf,CAAP;EACH;;EACD,UAAIqH,IAAI,GAAGiF,KAAK,CAACpD,CAAD,CAAhB;EACA,aAAOsL,SAAS,CAAC1X,EAAE,CAACuK,IAAD,CAAH,EAAW4R,IAAX,CAAhB;EACH,KAZM,CAYJ,CAZI,CAAP;EAaH,GAnBU,oSAvhEkB;EAgjE7B;EACA0M,EAAAA,OAAO,EAAE1oB,GAAG,CACR0oB,OADQ,8RAjjEiB;EA2jE7BH,EAAAA,IAAI,EAAEvoB,GAAG,CACLuoB,IADK,0QA3jEoB;EAokE7BO,EAAAA,KAAK,EAAE9oB,GAAG,CACN8oB,KADM,2bApkEmB;EAilE7B;EACA;EACA;EACAiC,EAAAA,GAAG,EAAE/qB,GAAG,CAAC,KAAD,EAAQ,SAAS+qB,GAAT,GAAsB;EAAA,wCAANzf,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAClCmtB,IAAAA,cAAc,CAAC,KAAD,EAAQntB,IAAR,EAAc,QAAd,CAAd;EACA,WAAOA,IAAI,CAACmJ,MAAL,CAAY,UAAS1R,MAAT,EAAiBqH,IAAjB,EAAuB;EACtC,aAAOrH,MAAM,CAACgoB,GAAP,CAAW3gB,IAAX,CAAP;EACH,KAFM,CAAP;EAGH,GALO,mGAplEqB;EA4lE7B;EACAsuB,EAAAA,GAAG,EAAE14B,GAAG,CAAC,KAAD,EAAQ,SAAS04B,GAAT,GAAsB;EAAA,wCAANptB,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAClCmtB,IAAAA,cAAc,CAAC,KAAD,EAAQntB,IAAR,EAAc,QAAd,CAAd,CADkC;;EAGlC,QAAIzE,CAAC,GAAGyE,IAAI,CAAC/H,MAAb;EAAA,QAAqB8Q,CAAC,GAAGjM,GAAG,CAACkD,IAAI,CAAC,CAAD,CAAL,CAA5B;;EACA,SAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpF,CAApB,EAAuBoF,CAAC,EAAxB,EAA4B;EACxB,UAAIqI,CAAC,GAAGlM,GAAG,CAACkD,IAAI,CAACW,CAAD,CAAL,CAAX;EAAA,UAAsBkiB,CAAC,GAAG9Z,CAA1B;;EACA,aAAOA,CAAC,IAAIC,CAAZ,EAAe;EACXD,QAAAA,CAAC,GAAGC,CAAJ,GAAQD,CAAC,IAAIC,CAAb,GAAiBA,CAAC,IAAID,CAAtB;EACH;;EACDA,MAAAA,CAAC,GAAGjM,GAAG,CAAC+lB,CAAC,GAAG7iB,IAAI,CAACW,CAAD,CAAT,CAAH,IAAoBoI,CAAC,GAAGC,CAAxB,CAAJ;EACH;;EACD,WAAOxO,OAAO,CAACuO,CAAD,CAAd;EACH,GAZO,iGA7lEqB;EA4mE7B;EACA,UAAQrU,GAAG,CAAC,MAAD,EAAS+oB,cAAc,CAAC,UAASnjB,GAAT,EAAc;EAC7C,WAAOE,OAAO,CAACF,GAAD,CAAP,CAAamnB,KAAb,EAAP;EACH,GAFiC,CAAvB,mEA7mEkB;EAknE7B;EACA,WAAS/sB,GAAG,CAAC,OAAD,EAAU+oB,cAAc,CAAC,UAASnjB,GAAT,EAAc;EAC/C,WAAOE,OAAO,CAACF,GAAD,CAAP,CAAaonB,MAAb,EAAP;EACH,GAFmC,CAAxB,qEAnnEiB;EAwnE7B;EACA;EACA,OAAKhtB,GAAG,CAAC,GAAD,EAAMipB,cAAc,CAAC,UAAS5U,CAAT,EAAYC,CAAZ,EAAe;EACxC,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAW5L,GAAX,CAAe6L,CAAf,CAAP;EACH,GAF2B,EAEzBxO,OAAO,CAAC,CAAD,CAFkB,CAApB,yIA1nEqB;EAgoE7B;EACA,OAAK9F,GAAG,CAAC,GAAD,EAAMipB,cAAc,CAAC,UAAS5U,CAAT,EAAYC,CAAZ,EAAe;EACxC,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWhU,GAAX,CAAeiU,CAAf,CAAP;EACH,GAF2B,EAEzBxO,OAAO,CAAC,CAAD,CAFkB,CAApB,gIAjoEqB;EAuoE7B;EACA,OAAK9F,GAAG,CAAC,GAAD,EAAM,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC5B,QAAIA,IAAI,CAAC/H,MAAL,KAAgB,CAApB,EAAuB;EACnB,YAAM,IAAImD,KAAJ,CAAU,4CAAV,CAAN;EACH;;EACD+xB,IAAAA,cAAc,CAAC,GAAD,EAAMntB,IAAN,EAAY,QAAZ,CAAd;;EACA,QAAIA,IAAI,CAAC/H,MAAL,KAAgB,CAApB,EAAuB;EACnB,aAAOuC,OAAO,CAACwF,IAAI,CAAC,CAAD,CAAL,CAAP,CAAiBuQ,GAAjB,EAAP;EACH;;EACD,QAAIvQ,IAAI,CAAC/H,MAAT,EAAiB;EACb,aAAO+H,IAAI,CAACmJ,MAAL,CAAYuU,cAAc,CAAC,UAAS3U,CAAT,EAAYC,CAAZ,EAAe;EAC7C,eAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWwH,GAAX,CAAevH,CAAf,CAAP;EACH,OAFgC,CAA1B,CAAP;EAGH;EACJ,GAbO,+JAxoEqB;EA0pE7B;EACA,OAAKtU,GAAG,CAAC,GAAD,EAAM,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC5B,QAAIA,IAAI,CAAC/H,MAAL,KAAgB,CAApB,EAAuB;EACnB,YAAM,IAAImD,KAAJ,CAAU,4CAAV,CAAN;EACH;;EACD+xB,IAAAA,cAAc,CAAC,GAAD,EAAMntB,IAAN,EAAY,QAAZ,CAAd;;EACA,QAAIA,IAAI,CAAC/H,MAAL,KAAgB,CAApB,EAAuB;EACnB,aAAOuC,OAAO,CAAC,CAAD,CAAP,CAAWsnB,GAAX,CAAe9hB,IAAI,CAAC,CAAD,CAAnB,CAAP;EACH;;EACD,WAAOA,IAAI,CAACmJ,MAAL,CAAYuU,cAAc,CAAC,UAAS3U,CAAT,EAAYC,CAAZ,EAAe;EAC7C,aAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAW+Y,GAAX,CAAe9Y,CAAf,CAAP;EACH,KAFgC,CAA1B,CAAP;EAGH,GAXO,wKA3pEqB;EA2qE7B;EACAlM,EAAAA,GAAG,EAAEpI,GAAG,CAAC,KAAD,EAAQ+oB,cAAc,CAAC,UAASliB,CAAT,EAAY;EACvC,WAAOf,OAAO,CAACe,CAAD,CAAP,CAAWuB,GAAX,EAAP;EACH,GAF6B,CAAtB,6EA5qEqB;EAirE7B;EACAmZ,EAAAA,QAAQ,EAAEvhB,GAAG,CAAC,UAAD,EAAa,UAAS6G,CAAT,EAAY;EAClCkW,IAAAA,SAAS,CAAC,UAAD,EAAalW,CAAb,EAAgB,QAAhB,CAAT;;EACA,QAAIf,OAAO,CAACmlB,OAAR,CAAgBpkB,CAAhB,CAAJ,EAAwB;EACpB,UAAIA,CAAC,YAAYf,OAAjB,EAA0B;EACtBe,QAAAA,CAAC,GAAGA,CAAC,CAACb,OAAF,EAAJ;EACH;;EACD,aAAOE,MAAM,CAACqb,QAAQ,CAAC1a,CAAD,CAAT,CAAb;EACH;;EACD,WAAOA,CAAP;EACH,GATY,gFAlrEgB;EA8rE7B;EACA+lB,EAAAA,IAAI,EAAE5sB,GAAG,CAAC,MAAD,EAAS+oB,cAAc,CAAC,UAASliB,CAAT,EAAY;EACzC,WAAOf,OAAO,CAACe,CAAD,CAAP,CAAW+lB,IAAX,EAAP;EACH,GAF+B,CAAvB,6EA/rEoB;EAosE7B;EACA,QAAM5sB,GAAG,CAAC,IAAD,EAAOgpB,cAAc,CAAC,UAAS3U,CAAT,EAAYC,CAAZ,EAAe;EAC1CD,IAAAA,CAAC,GAAGvO,OAAO,CAACuO,CAAD,CAAX;EACAC,IAAAA,CAAC,GAAGxO,OAAO,CAACwO,CAAD,CAAX;;EACA,QAAIA,CAAC,CAAC9M,GAAF,CAAM,CAAN,MAAa,CAAC,CAAlB,EAAqB;EACjB,aAAOtB,MAAM,CAAC,CAAD,CAAN,CAAUknB,GAAV,CAAc/Y,CAAd,EAAiB7L,GAAjB,CAAqB8L,CAAC,CAACuH,GAAF,EAArB,CAAP;EACH;;EACD,WAAOxH,CAAC,CAAC7L,GAAF,CAAM8L,CAAN,CAAP;EACH,GAP6B,CAArB,8EArsEoB;EA+sE7B;EACA,QAAMtU,GAAG,CAAC,IAAD,EAAO+oB,cAAc,CAAC,UAAStjB,MAAT,EAAiB;EAC5C,WAAOK,OAAO,CAACL,MAAD,CAAP,CAAgBpF,GAAhB,CAAoB,CAApB,CAAP;EACH,GAF6B,CAArB,gFAhtEoB;EAqtE7B;EACA,QAAML,GAAG,CAAC+oB,cAAc,CAAC,UAAStjB,MAAT,EAAiB;EACtC,WAAOK,OAAO,CAACL,MAAD,CAAP,CAAgBoW,GAAhB,CAAoB,CAApB,CAAP;EACH,GAFuB,CAAf,wFAttEoB;EA2tE7B;EACA,OAAK7b,GAAG,CAAC,GAAD,EAAM,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EACzBmkB,IAAAA,cAAc,CAAC,GAAD,EAAM,CAACpkB,CAAD,EAAIC,CAAJ,CAAN,EAAc,QAAd,CAAd;EACA,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAW/T,GAAX,CAAegU,CAAf,CAAP;EACH,GAHO,uEA5tEqB;EAkuE7B;EACA;EACA,QAAMtU,GAAG,CAAC,IAAD,EAAO,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC9BmtB,IAAAA,cAAc,CAAC,IAAD,EAAOntB,IAAP,EAAa,QAAb,CAAd;EACA,WAAOwV,WAAW,CAAC,UAACzM,CAAD,EAAIC,CAAJ;EAAA,aAAUxO,OAAO,CAACuO,CAAD,CAAP,CAAW7M,GAAX,CAAe8M,CAAf,MAAsB,CAAhC;EAAA,KAAD,EAAoChJ,IAApC,CAAlB;EACH,GAHQ,uGApuEoB;EA0uE7B;EACA,OAAKtL,GAAG,CAAC,GAAD,EAAM,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC5BmtB,IAAAA,cAAc,CAAC,GAAD,EAAMntB,IAAN,EAAY,QAAZ,CAAd;EACA,WAAOwV,WAAW,CAAC,UAACzM,CAAD,EAAIC,CAAJ;EAAA,aAAUxO,OAAO,CAACuO,CAAD,CAAP,CAAW7M,GAAX,CAAe8M,CAAf,MAAsB,CAAhC;EAAA,KAAD,EAAoChJ,IAApC,CAAlB;EACH,GAHO,sIA3uEqB;EAkvE7B;EACA,OAAKtL,GAAG,CAAC,GAAD,EAAM,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC5BmtB,IAAAA,cAAc,CAAC,GAAD,EAAMntB,IAAN,EAAY,QAAZ,CAAd;EACA,WAAOwV,WAAW,CAAC,UAACzM,CAAD,EAAIC,CAAJ;EAAA,aAAUxO,OAAO,CAACuO,CAAD,CAAP,CAAW7M,GAAX,CAAe8M,CAAf,MAAsB,CAAC,CAAjC;EAAA,KAAD,EAAqChJ,IAArC,CAAlB;EACH,GAHO,sIAnvEqB;EA0vE7B;EACA,QAAMtL,GAAG,CAAC,IAAD,EAAO,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC9BmtB,IAAAA,cAAc,CAAC,IAAD,EAAOntB,IAAP,EAAa,QAAb,CAAd;EACA,WAAOwV,WAAW,CAAC,UAACzM,CAAD,EAAIC,CAAJ;EAAA,aAAU,CAAC,CAAD,EAAI,CAAC,CAAL,EAAQhP,QAAR,CAAiBQ,OAAO,CAACuO,CAAD,CAAP,CAAW7M,GAAX,CAAe8M,CAAf,CAAjB,CAAV;EAAA,KAAD,EAAgDhJ,IAAhD,CAAlB;EACH,GAHQ,0IA3vEoB;EAkwE7B;EACA,QAAMtL,GAAG,CAAC,IAAD,EAAO,YAAkB;EAAA,wCAANsL,IAAM;EAANA,MAAAA,IAAM;EAAA;;EAC9BmtB,IAAAA,cAAc,CAAC,IAAD,EAAOntB,IAAP,EAAa,QAAb,CAAd;EACA,WAAOwV,WAAW,CAAC,UAACzM,CAAD,EAAIC,CAAJ;EAAA,aAAU,CAAC,CAAD,EAAI,CAAJ,EAAOhP,QAAP,CAAgBQ,OAAO,CAACuO,CAAD,CAAP,CAAW7M,GAAX,CAAe8M,CAAf,CAAhB,CAAV;EAAA,KAAD,EAA+ChJ,IAA/C,CAAlB;EACH,GAHQ,0IAnwEoB;EA0wE7B;EACA,SAAOtL,GAAG,CACN,KADM,EAEN+gB,KAFM,iFA3wEmB;EAixE7B;EACA4X,EAAAA,EAAE,EAAE34B,GAAG,CAAC,IAAI4W,KAAJ,CAAU,IAAV,EAAgB,UAASf,IAAT,UAAyC;EAAA,QAAxBoM,aAAwB,UAAxBA,aAAwB;EAAA,QAATlM,KAAS,UAATA,KAAS;EAC7D,QAAIzK,IAAI,GAAG9J,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BoU,IAA9B,CAAX;EACA,QAAIzW,IAAI,GAAG,IAAX;;EACA,QAAI6iB,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG7iB,IAAhB;EACH;;EACD,QAAI,CAACkM,IAAI,CAAC/H,MAAV,EAAkB;EACd,aAAO,KAAP;EACH;;EACD,QAAIR,MAAJ;EACA,WAAQ,SAAS4P,IAAT,GAAgB;EACpB,eAASqJ,IAAT,CAAcza,KAAd,EAAqB;EACjBwB,QAAAA,MAAM,GAAGxB,KAAT;;EACA,YAAIwB,MAAM,KAAK,KAAf,EAAsB;EAClB,iBAAOA,MAAP;EACH,SAFD,MAEO;EACH,iBAAO4P,IAAI,EAAX;EACH;EACJ;;EACD,UAAI,CAACrH,IAAI,CAAC/H,MAAV,EAAkB;EACd,YAAIR,MAAM,KAAK,KAAf,EAAsB;EAClB,iBAAOA,MAAP;EACH,SAFD,MAEO;EACH,iBAAO,KAAP;EACH;EACJ,OAND,MAMO;EACH,YAAIgC,GAAG,GAAGuG,IAAI,CAACwO,KAAL,EAAV;;EACA,YAAIvY,KAAK,GAAGuU,SAAQ,CAAC/Q,GAAD,EAAM;EAAE8P,UAAAA,GAAG,EAAEzV,IAAP;EAAa6iB,UAAAA,aAAa,EAAbA,aAAb;EAA4BlM,UAAAA,KAAK,EAALA;EAA5B,SAAN,CAApB;;EACA,eAAOwB,SAAS,CAAChW,KAAD,EAAQya,IAAR,CAAhB;EACH;EACJ,KApBM,EAAP;EAqBH,GA/BO,CAAD,oMAlxEsB;EAqzE7B;EACA4c,EAAAA,GAAG,EAAE54B,GAAG,CAAC,IAAI4W,KAAJ,CAAU,KAAV,EAAiB,UAASf,IAAT,EAA8C;EAAA,qFAAJ,EAAI;EAAA,QAA7BoM,aAA6B,UAA7BA,aAA6B;EAAA,QAAdlM,KAAc,UAAdA,KAAc;;EACpE,QAAIzK,IAAI,GAAG9J,UAAU,CAACC,GAAX,CAAe,aAAf,EAA8BoU,IAA9B,CAAX;EACA,QAAIzW,IAAI,GAAG,IAAX;;EACA,QAAI6iB,aAAJ,EAAmB;EACfA,MAAAA,aAAa,GAAG7iB,IAAhB;EACH;;EACD,QAAI,CAACkM,IAAI,CAAC/H,MAAV,EAAkB;EACd,aAAO,IAAP;EACH;;EACD,QAAIR,MAAJ;EACA,WAAQ,SAAS4P,IAAT,GAAgB;EACpB,eAASqJ,IAAT,CAAcza,KAAd,EAAqB;EACjBwB,QAAAA,MAAM,GAAGxB,KAAT;;EACA,YAAIwB,MAAM,KAAK,KAAf,EAAsB;EAClB,iBAAO,KAAP;EACH,SAFD,MAEO;EACH,iBAAO4P,IAAI,EAAX;EACH;EACJ;;EACD,UAAI,CAACrH,IAAI,CAAC/H,MAAV,EAAkB;EACd,YAAIR,MAAM,KAAK,KAAf,EAAsB;EAClB,iBAAOA,MAAP;EACH,SAFD,MAEO;EACH,iBAAO,KAAP;EACH;EACJ,OAND,MAMO;EACH,YAAIgC,GAAG,GAAGuG,IAAI,CAACwO,KAAL,EAAV;;EACA,YAAIvY,KAAK,GAAGuU,SAAQ,CAAC/Q,GAAD,EAAM;EAAE8P,UAAAA,GAAG,EAAEzV,IAAP;EAAa6iB,UAAAA,aAAa,EAAbA,aAAb;EAA4BlM,UAAAA,KAAK,EAALA;EAA5B,SAAN,CAApB;;EACA,eAAOwB,SAAS,CAAChW,KAAD,EAAQya,IAAR,CAAhB;EACH;EACJ,KApBM,EAAP;EAqBH,GA/BQ,CAAD,6QAtzEqB;EA01E7B;EACA,OAAKhc,GAAG,CAAC,GAAD,EAAM,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EACzB,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWskB,EAAX,CAAcrkB,CAAd,CAAP;EACH,GAFO,gEA31EqB;EAg2E7B,OAAKtU,GAAG,CAAC,GAAD,EAAM,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EACzB,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWukB,GAAX,CAAetkB,CAAf,CAAP;EACH,GAFO,iEAh2EqB;EAq2E7B,OAAKtU,GAAG,CAAC,GAAD,EAAM,UAASqU,CAAT,EAAY;EACtB,WAAOvO,OAAO,CAACuO,CAAD,CAAP,CAAWzR,GAAX,EAAP;EACH,GAFO,yDAr2EqB;EA02E7B,QAAM5C,GAAG,CAAC,IAAD,EAAO,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EAC3B,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWwkB,GAAX,CAAevkB,CAAf,CAAP;EACH,GAFQ,wEA12EoB;EA+2E7B,QAAMtU,GAAG,CAAC,IAAD,EAAO,UAASqU,CAAT,EAAYC,CAAZ,EAAe;EAC3B,WAAOxO,OAAO,CAACuO,CAAD,CAAP,CAAWykB,GAAX,CAAexkB,CAAf,CAAP;EACH,GAFQ,uEA/2EoB;EAo3E7BykB,EAAAA,GAAG,EAAE/4B,GAAG,CAAC,KAAD,EAAQ,SAAS+4B,GAAT,CAAax3B,KAAb,EAAoB;EAChC,QAAIokB,OAAO,CAACpkB,KAAD,CAAX,EAAoB;EAChB,aAAO,IAAP;EACH;;EACD,WAAO,CAACA,KAAR;EACH,GALO;EAp3EqB,CAAhB,EA43Ed/C,SA53Ec,EA43EH,QA53EG,CAAjB;EA63EA,IAAIuD,QAAQ,GAAGP,UAAU,CAACumB,OAAX,CAAmB,UAAnB,CAAf;;EAEA,SAASiL,mBAAT,CAA6BkB,WAA7B,EAA0CrmB,QAA1C,EAAoD;EAChDqmB,EAAAA,WAAW,CAACzJ,QAAZ,CAAqB,kBAArB,EAAyC5c,QAAzC;EACAqmB,EAAAA,WAAW,CAACl0B,GAAZ,CACI,kBADJ;EASAwB,EAAAA,UAAU,CAACsP,GAAX,CAAe,6BAAf,EAA8CojB,WAA9C;EACH;;;EAEDlB,mBAAmB,CAACjxB,QAAD,EAAWgxB,YAAX,CAAnB;EACAvxB,UAAU,CAACxB,GAAX,CACI,6BADJ;;EASA,CAAC,YAAW;EACR,MAAImE,GAAG,GAAG;EAAEsd,IAAAA,IAAI,EAAE;EAAR,GAAV;EACA,GAAC,OAAD,EAAU,OAAV,EAAmB,MAAnB,EAA2Bze,OAA3B,CAAmC,UAAAnD,EAAE,EAAI;EACrC,QAAI2M,IAAI,GAAGrI,GAAG,CAACtE,EAAD,CAAH,GAAUsE,GAAG,CAACtE,EAAD,CAAb,GAAoBA,EAA/B;EACA2B,IAAAA,UAAU,CAACsP,GAAX,CAAetE,IAAf,EAAqBxM,GAAG,CAACwM,IAAD,EAAO,UAASjL,KAAT,EAAgB;EAC3Cwb,MAAAA,SAAS,CAACvQ,IAAD,EAAOjL,KAAP,EAAc,QAAd,CAAT;;EACA,UAAIA,KAAK,YAAYuE,OAArB,EAA8B;EAC1B,eAAOvE,KAAK,CAAC1B,EAAD,CAAL,EAAP;EACH;EACJ,KALuB,aAKjB2M,IALiB,4DAOKA,IAPL,mBAAxB;EAQH,GAVD;EAWH,CAbD;EAeA;;;EACA,SAASwsB,gBAAT,CAA0BtoB,GAA1B,EAA+B;EAC3B,MAAIA,GAAG,CAACnN,MAAJ,KAAe,CAAnB,EAAsB;EAClB,WAAOmN,GAAG,CAAC,CAAD,CAAV;EACH,GAFD,MAEO;EACH,QAAI3N,MAAM,GAAG,EAAb,CADG;;EAGH,QAAIk2B,cAAc,GAAGD,gBAAgB,CAACtoB,GAAG,CAACxE,KAAJ,CAAU,CAAV,CAAD,CAArC;;EACA,SAAK,IAAID,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgtB,cAAc,CAAC11B,MAAnC,EAA2C0I,CAAC,EAA5C,EAAgD;EAC5C,WAAK,IAAImQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG1L,GAAG,CAAC,CAAD,CAAH,CAAOnN,MAA3B,EAAmC6Y,CAAC,EAApC,EAAwC;EACpCrZ,QAAAA,MAAM,CAACW,IAAP,CAAYgN,GAAG,CAAC,CAAD,CAAH,CAAO0L,CAAP,IAAY6c,cAAc,CAAChtB,CAAD,CAAtC;EACH;EACJ;;EACD,WAAOlJ,MAAP;EACH;EACJ;;;EAGD,SAASm2B,YAAT,CAAsBvoB,KAAtB,EAA6B+B,KAA7B,EAAoCrG,GAApC,EAAyC;EACrC,MAAItJ,MAAM,GAAG,EAAb;;EACA,OAAK,IAAIkJ,CAAC,GAAGyG,KAAb,EAAoBzG,CAAC,IAAII,GAAzB,EAA8B,EAAEJ,CAAhC,EAAmC;EAC/B,QAAIktB,SAAS,GAAG,EAAhB;;EACA,SAAK,IAAI/c,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGnQ,CAApB,EAAuB,EAAEmQ,CAAzB,EAA4B;EACxB+c,MAAAA,SAAS,CAACz1B,IAAV,CAAeiN,KAAf;EACH;;EACD5N,IAAAA,MAAM,GAAGA,MAAM,CAACoQ,MAAP,CAAc6lB,gBAAgB,CAACG,SAAD,CAA9B,CAAT;EACH;;EACD,SAAOp2B,MAAP;EACH;EAGD;;;EACAm2B,YAAY,CAAC,CAAC,GAAD,EAAM,GAAN,CAAD,EAAa,CAAb,EAAgB,CAAhB,CAAZ,CAA+Bl2B,OAA/B,CAAuC,UAAAo2B,IAAI,EAAI;EAC3C,MAAM7e,CAAC,GAAG6e,IAAI,CAAC/zB,KAAL,CAAW,EAAX,CAAV;EACA,MAAM4D,KAAK,GAAGsR,CAAC,CAACrO,KAAF,GAAUC,OAAV,EAAd;EACA,MAAM0J,IAAI,GAAG0E,CAAC,CAACpW,GAAF,CAAM,UAAAgqB,CAAC;EAAA,uBAASA,CAAT;EAAA,GAAP,EAAsBrqB,IAAtB,CAA2B,GAA3B,IAAkC,MAAlC,GAA2C,IAAIu1B,MAAJ,CAAW9e,CAAC,CAAChX,MAAb,CAAxD;EACA,MAAMiJ,IAAI,GAAG,MAAM4sB,IAAN,GAAa,GAA1B;EACA53B,EAAAA,UAAU,CAACsP,GAAX,CAAetE,IAAf,EAAqBxM,GAAG,CAACwM,IAAD,EAAO,UAASzH,GAAT,EAAc;EACzC,WAAOkE,KAAK,CAACwL,MAAN,CAAa,UAAS/H,IAAT,EAAejM,IAAf,EAAqB;EACrCsc,MAAAA,SAAS,CAACvQ,IAAD,EAAOE,IAAP,EAAa,MAAb,CAAT;;EACA,UAAIjM,IAAI,KAAK,GAAb,EAAkB;EACd,eAAOiM,IAAI,CAAC6J,GAAZ;EACH,OAFD,MAEO;EACH,eAAO7J,IAAI,CAACgJ,GAAZ;EACH;EACJ,KAPM,EAOJ3Q,GAPI,CAAP;EAQH,GATuB,aASjByH,IATiB,qDAWKqJ,IAXL,EAAxB;EAYH,CAjBD;;EAmBA,SAASyjB,YAAT,CAAsBC,GAAtB,EAA2B15B,EAA3B,EAA+B;EAC3B,MAAImF,KAAK,GAAGu0B,GAAG,CAACl0B,KAAJ,CAAU7F,MAAI,CAACg6B,GAAf,EAAoB5tB,MAApB,CAA2BgZ,OAA3B,CAAZ;;EACA,OAAK,IAAI3Y,CAAC,GAAGjH,KAAK,CAACzB,MAAnB,EAA2B0I,CAAC,EAA5B,GAAiC;EAAA;;EAC7B,QAAI8M,CAAC,GAAG,SAAAvZ,MAAI,EAACsE,IAAL,eAAU,GAAV,4BAAkBkB,KAAK,CAACkH,KAAN,CAAY,CAAZ,EAAeD,CAAC,GAAG,CAAnB,CAAlB,GAAR;;EACA,QAAIpM,EAAE,CAACkZ,CAAD,CAAN,EAAW;EACP,aAAOA,CAAP;EACH;EACJ;EACJ;;;EAGD,SAAS0gB,cAAT,CAAwBF,GAAxB,EAA6B;EACzB,SAAOD,YAAY,CAACC,GAAD,EAAM,UAASA,GAAT,EAAc;EACnC,WAAOh6B,EAAE,CAACm6B,UAAH,CAAcl6B,MAAI,CAACsE,IAAL,CAAUy1B,GAAV,EAAe,cAAf,CAAd,CAAP;EACH,GAFkB,CAAnB;EAGH;;;EAGD,SAAS5D,OAAT,GAAmB;EACf,SAAO,OAAO92B,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACA,MAAP,KAAkBA,MAA1D;EACH;;;WAGc86B;;;;;;sEAAf;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,mBACoC,uDADpC;;EAAA;EAAA;EACYC,YAAAA,aADZ,iBACYA,aADZ;EAEIn6B,YAAAA,WAAW,GAAGm6B,aAAa,CAACC,uRAAD,CAA3B;EAFJ;EAAA,mBAGe,uDAHf;;EAAA;EAGIt6B,YAAAA,EAHJ;EAAA;EAAA,mBAIiB,sDAJjB;;EAAA;EAIIC,YAAAA,MAJJ;EAKIgC,YAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBjS,MAAzB;EACA2C,YAAAA,UAAU,CAACsP,GAAX,CAAe,MAAf,EAAuBjS,MAAvB;EACA2C,YAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBtS,SAAzB;EACMs7B,YAAAA,SARV,GAQsB,IAAIC,GAAJ,CAAQF,uRAAR,CARtB;EASUG,YAAAA,SATV,GASsBx6B,MAAI,CAACo2B,OAAL,CAAakE,SAAS,CAACG,QAAvB,CATtB;EAUUC,YAAAA,UAVV,GAUuB16B,MAAI,CAAC26B,QAAL,CAAcL,SAAS,CAACG,QAAxB,CAVvB;EAWIz4B,YAAAA,UAAU,CAACsP,GAAX,CAAe,WAAf,EAA4BkpB,SAA5B;EACAx4B,YAAAA,UAAU,CAACsP,GAAX,CAAe,YAAf,EAA6BopB,UAA7B,EAZJ;;EAcI14B,YAAAA,UAAU,CAACsP,GAAX,CAAe,iBAAf,EAAkC9Q,GAAG,CAAC,iBAAD,EAAoB,UAASR,IAAT,EAAe;EACpEud,cAAAA,SAAS,CAAC,iBAAD,EAAoBvd,IAApB,EAA0B,QAA1B,CAAT;EACA,kBAAIgN,IAAI,GAAGhN,IAAI,CAACwG,OAAL,EAAX;EACA,qBAAOvG,WAAW,CAACqxB,OAAZ,CAAoBtkB,IAApB,CAAP;EACH,aAJoC,kFAArC,EAdJ;;EAsBIhL,YAAAA,UAAU,CAACsP,GAAX,CAAe,SAAf,EAA0B9Q,GAAG,CAAC,SAAD,EAAY,UAASo6B,MAAT,EAAiB;EACtDrd,cAAAA,SAAS,CAAC,SAAD,EAAYqd,MAAZ,EAAoB,QAApB,CAAT;EACAA,cAAAA,MAAM,GAAGA,MAAM,CAACp0B,OAAP,EAAT;EACA,kBAAI7G,IAAI,GAAGk7B,OAAO,CAACC,GAAR,EAAX;EACA,kBAAI/4B,KAAJ;;EACA,kBAAI;EACA,oBAAI64B,MAAM,CAACn1B,KAAP,CAAa,QAAb,CAAJ,EAA4B;EACxB1D,kBAAAA,KAAK,GAAG9B,WAAW,CAACD,MAAI,CAACsE,IAAL,CAAU3E,IAAV,EAAgBi7B,MAAhB,CAAD,CAAnB;EACH,iBAFD,MAEO;EACH,sBAAIb,GAAG,GAAGE,cAAc,CAACt6B,IAAD,CAAxB;;EACA,sBAAIo6B,GAAJ,EAAS;EACLh4B,oBAAAA,KAAK,GAAG9B,WAAW,CAACD,MAAI,CAACsE,IAAL,CAAUy1B,GAAV,EAAe,cAAf,EAA+Ba,MAA/B,CAAD,CAAnB;EACH,mBAFD,MAEO;EACH74B,oBAAAA,KAAK,GAAG9B,WAAW,CAAC26B,MAAD,CAAnB;EACH;EACJ;EACJ,eAXD,CAWE,OAAO55B,CAAP,EAAU;EACRe,gBAAAA,KAAK,GAAG9B,WAAW,CAAC26B,MAAD,CAAnB;EACH;;EACD,qBAAO5T,WAAW,CAACjlB,KAAD,EAAQ1C,MAAR,CAAlB;EACH,aApB4B,6FAA7B;;EAtBJ;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;EA+CA,IAAI82B,OAAO,EAAX,EAAe;EACXgE,EAAAA,aAAa;EAChB,CAFD,MAEO,IAAI,OAAOY,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,KAAKp7B,IAAhD,EAAsD;EACzDqC,EAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBypB,MAAzB;EACA/4B,EAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBtS,SAAzB;EACAgD,EAAAA,UAAU,CAACsP,GAAX,CAAe,MAAf,EAAuBypB,MAAvB;EACH,CAJM,MAIA,IAAI,OAAOn7B,IAAP,KAAgB,WAAhB,IAA+B,OAAOo7B,iBAAP,KAA6B,WAAhE,EAA6E;EAChFh5B,EAAAA,UAAU,CAACsP,GAAX,CAAe,MAAf,EAAuB1R,IAAvB;EACAoC,EAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBtS,SAAzB;EACAgD,EAAAA,UAAU,CAACsP,GAAX,CAAe,QAAf,EAAyBtS,SAAzB;EACH;;;EAED,SAASoxB,gBAAT,CAA0B/vB,EAA1B,EAA8B46B,GAA9B,EAAmCC,QAAnC,EAA8D;EAAA,MAAjB57B,QAAiB,uEAAN,IAAM;EAC1D,MAAI67B,OAAO,GAAG96B,EAAE,6BAAuBA,EAAvB,SAAgC,EAAhD;;EACA,MAAIf,QAAQ,KAAK,IAAjB,EAAuB;EACnB67B,IAAAA,OAAO,yBAAkB77B,QAAlB,MAAP;EACH;;EACD,MAAIuP,WAAW,CAACqsB,QAAD,CAAf,EAA2B;EACvB,sCAA2BD,GAA3B,SAAiCE,OAAjC;EACH;;EACD,MAAID,QAAQ,YAAY3rB,KAAxB,EAA+B;EAC3B,QAAI2rB,QAAQ,CAACn3B,MAAT,KAAoB,CAAxB,EAA2B;EACvBm3B,MAAAA,QAAQ,GAAGA,QAAQ,CAAC,CAAD,CAAnB;EACH,KAFD,MAEO;EACH,UAAM/f,IAAI,GAAG+f,QAAQ,CAACA,QAAQ,CAACn3B,MAAT,GAAkB,CAAnB,CAArB;EACAm3B,MAAAA,QAAQ,GAAGA,QAAQ,CAACxuB,KAAT,CAAe,CAAf,EAAkB,CAAC,CAAnB,EAAsBpI,IAAtB,CAA2B,IAA3B,IAAmC,MAAnC,GAA4C6W,IAAvD;EACH;EACJ;;EACD,6BAAoB+f,QAApB,mBAAqCD,GAArC,SAA2CE,OAA3C;EACH;;;EAED,SAASlC,cAAT,CAAwB54B,EAAxB,EAA4ByL,IAA5B,EAAkCovB,QAAlC,EAA4C;EACxCpvB,EAAAA,IAAI,CAACtI,OAAL,CAAa,UAAC+B,GAAD,EAAMkH,CAAN,EAAY;EACrB8Q,IAAAA,SAAS,CAACld,EAAD,EAAKkF,GAAL,EAAU21B,QAAV,EAAoBzuB,CAAC,GAAG,CAAxB,CAAT;EACH,GAFD;EAGH;;;EAED,SAASqoB,mBAAT,CAA6Bz0B,EAA7B,EAAiCkF,GAAjC,EAAsCtE,IAAtC,EAA4C;EACxCsc,EAAAA,SAAS,CAACld,EAAD,EAAKkF,GAAL,EAAUtE,IAAV,CAAT;;EACA,MAAIsE,GAAG,CAAC0C,QAAJ,KAAiB2pB,WAArB,EAAkC;EAC9B,UAAM,IAAI1qB,KAAJ,CAAUkpB,gBAAgB,CAC5B/vB,EAD4B,EAE5B,aAF4B,EAG5B,cAH4B,CAA1B,CAAN;EAKH;EACJ;;;EAED,SAASkd,SAAT,CAAmBld,EAAnB,EAAuBkF,GAAvB,EAA4B21B,QAA5B,EAAuD;EAAA,MAAjB57B,QAAiB,uEAAN,IAAM;EACnDe,EAAAA,EAAE,GAAGA,EAAE,CAACmG,OAAH,EAAL;EACA,MAAM40B,QAAQ,GAAGn6B,IAAI,CAACsE,GAAD,CAAJ,CAAUK,WAAV,EAAjB;;EACA,MAAIiJ,WAAW,CAACqsB,QAAD,CAAf,EAA2B;EACvB,QAAI,CAACA,QAAQ,CAAC31B,GAAD,CAAb,EAAoB;EAChB,YAAM,IAAI2B,KAAJ,CAAUkpB,gBAAgB,CAAC/vB,EAAD,EAAK+6B,QAAL,EAAeF,QAAf,EAAyB57B,QAAzB,CAA1B,CAAN;EACH;;EACD;EACH;;EACD,MAAImG,KAAK,GAAG,KAAZ;;EACA,MAAIy1B,QAAQ,YAAY/kB,IAAxB,EAA8B;EAC1B+kB,IAAAA,QAAQ,GAAGA,QAAQ,CAAChkB,QAAT,EAAX;EACH;;EACD,MAAIgkB,QAAQ,YAAY3rB,KAAxB,EAA+B;EAC3B2rB,IAAAA,QAAQ,GAAGA,QAAQ,CAACv2B,GAAT,CAAa,UAAAlD,CAAC;EAAA,aAAIA,CAAC,CAAC+E,OAAF,EAAJ;EAAA,KAAd,CAAX;EACH;;EACD,MAAI00B,QAAQ,YAAY3rB,KAAxB,EAA+B;EAC3B2rB,IAAAA,QAAQ,GAAGA,QAAQ,CAACv2B,GAAT,CAAa,UAAAlD,CAAC;EAAA,aAAIA,CAAC,CAAC+E,OAAF,GAAYZ,WAAZ,EAAJ;EAAA,KAAd,CAAX;;EACA,QAAIs1B,QAAQ,CAACp1B,QAAT,CAAkBs1B,QAAlB,CAAJ,EAAiC;EAC7B31B,MAAAA,KAAK,GAAG,IAAR;EACH;EACJ,GALD,MAKO;EACHy1B,IAAAA,QAAQ,GAAGA,QAAQ,CAAC10B,OAAT,GAAmBZ,WAAnB,EAAX;EACH;;EACD,MAAI,CAACH,KAAD,IAAU21B,QAAQ,KAAKF,QAA3B,EAAqC;EACjC,UAAM,IAAIh0B,KAAJ,CAAUkpB,gBAAgB,CAAC/vB,EAAD,EAAK+6B,QAAL,EAAeF,QAAf,EAAyB57B,QAAzB,CAA1B,CAAN;EACH;EACJ;;;EAED,SAAS+7B,cAAT,CAAwBxtB,GAAxB,EAA6B;EACzB,MAAI5M,IAAI,WAAU4M,GAAV,CAAR;;EACA,SAAO,CAAC,QAAD,EAAW,UAAX,EAAuB/H,QAAvB,CAAgC7E,IAAhC,KACH,QAAO4M,GAAP,MAAe,QADZ,IAEHA,GAAG,YAAYM,aAFZ,IAGHN,GAAG,YAAY/D,OAHZ,IAIH+D,GAAG,YAAYvH,OAJZ,IAKHuH,GAAG,YAAYvE,OALZ,IAMHuE,GAAG,YAAY3L,MANnB;EAOH;;;EAED,SAASgc,SAAT,CAAmBrQ,GAAnB,EAAwB;EACpB,SAAOA,GAAG,YAAYvH,OAAf,IACHuH,GAAG,YAAYvE,OADZ,IAEHuE,GAAG,YAAY5G,UAFnB;EAGH;;;EAED,SAASq0B,cAAT,CAAwBztB,GAAxB,EAA6BN,MAA7B,EAAqC;EACjC,MAAIM,GAAG,KAAK,IAAZ,EAAkB;EACd,WAAO,KAAP;EACH;;EACD,SAAO,QAAOA,GAAP,MAAe,QAAf,IACHN,MAAM,IAAInJ,MAAM,CAAC+a,qBAAP,CAA6BtR,GAA7B,CADd;EAEH;;;EAED,SAAS2S,WAAT,CAAqB3S,GAArB,EAA0BN,MAA1B,EAAkC;EAC9B,MAAI+tB,cAAc,CAACztB,GAAD,EAAMN,MAAN,CAAd,IAA+B+tB,cAAc,CAACztB,GAAG,CAAC0tB,SAAL,EAAgBhuB,MAAhB,CAAjD,EAA0E;EACtE,WAAOsB,WAAW,CAAChB,GAAG,CAACN,MAAD,CAAJ,CAAlB;EACH;EACJ;;;EAED,SAAStM,IAAT,CAAc4M,GAAd,EAAmB;EACf,MAAIkf,OAAO,GAAG;EACV,YAAQ5W,IADE;EAEV,cAAUrM,OAFA;EAGV,iBAAa7C,UAHH;EAIV,cAAUiZ,MAJA;EAKV,kBAAcC,SALJ;EAMV,mBAAeC,UANL;EAOV,cAAU9Z,OAPA;EAQV,aAASpE,MARC;EASV,cAAUqhB,MATA;EAUV,aAASnM,KAVC;EAWV,cAAU9N,OAXA;EAYV,aAASiG,KAZC;EAaV,qBAAiBnC;EAbP,GAAd;;EAeA,MAAI1F,MAAM,CAACuW,KAAP,CAAapQ,GAAb,CAAJ,EAAuB;EACnB,WAAO,KAAP;EACH;;EACD,MAAIA,GAAG,KAAKkI,IAAZ,EAAiB;EACb,WAAO,KAAP;EACH;;EACD,MAAIlI,GAAG,KAAK,IAAZ,EAAkB;EACd,WAAO,MAAP;EACH;;EACD,uCAAyBzJ,MAAM,CAAC4W,OAAP,CAAe+R,OAAf,CAAzB,wCAAkD;EAA7C;EAAA,QAAKnW,MAAL;EAAA,QAAU7U,KAAV;;EACD,QAAI8L,GAAG,YAAY9L,KAAnB,EAA0B;EACtB,aAAO6U,MAAP;EACH;EACJ;;EACD,MAAI,QAAO/I,GAAP,MAAe,QAAnB,EAA6B;EACzB,QAAIA,GAAG,CAACkpB,YAAR,EAAsB;EAClBlpB,MAAAA,GAAG,CAACkpB,YAAJ,GAAmB,KAAnB;;EACA,UAAIlpB,GAAG,CAACkpB,YAAR,EAAsB;EAClB,YAAIloB,WAAW,CAAChB,GAAG,CAAC2tB,MAAL,CAAf,EAA6B;EACzB,iBAAO3tB,GAAG,CAAC2tB,MAAJ,EAAP;EACH;;EACD,eAAO,UAAP;EACH;EACJ;;EACD,QAAI3tB,GAAG,CAACZ,WAAR,EAAqB;EACjB,UAAIY,GAAG,CAACZ,WAAJ,CAAgBwS,SAApB,EAA+B;EAC3B,eAAO5R,GAAG,CAACZ,WAAJ,CAAgBwS,SAAvB;EACH;;EACD,UAAI5R,GAAG,CAACZ,WAAJ,KAAoB7I,MAAxB,EAAgC;EAC5B,YAAIoc,WAAW,CAAC3S,GAAD,EAAMT,MAAM,CAAC2R,QAAb,CAAf,EAAuC;EACnC,iBAAO,UAAP;EACH;;EACD,YAAIyB,WAAW,CAAC3S,GAAD,EAAMT,MAAM,CAAC4R,aAAb,CAAf,EAA4C;EACxC,iBAAO,gBAAP;EACH;EACJ;;EACD,aAAOnR,GAAG,CAACZ,WAAJ,CAAgBD,IAAhB,CAAqBpH,WAArB,EAAP;EACH;EACJ;;EACD,iBAAciI,GAAd;EACH;EAED;EACA;EACA;;;EACA,SAASunB,gBAAT,CAA0B7vB,GAA1B,EAA+B;EAC3B,MAAImjB,QAAQ,GAAG,EAAf;EACAxF,EAAAA,QAAQ,CAAC3d,GAAD,CAAR;;EACA,MAAImjB,QAAQ,CAAC3kB,MAAb,EAAqB;EACjB,WAAOutB,OAAO,CAAC/rB,GAAD,CAAd;EACH;;EACD,SAAOA,GAAP;;EACA,WAAS2d,QAAT,CAAkBhG,IAAlB,EAAwB;EACpB,QAAI7a,UAAU,CAAC6a,IAAD,CAAd,EAAsB;EAClBwL,MAAAA,QAAQ,CAACxkB,IAAT,CAAcgZ,IAAd;EACH,KAFD,MAEO,IAAIA,IAAI,YAAY/G,IAApB,EAA0B;EAC7B,UAAI,CAAC+G,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAL,EAA6B;EACzB0F,QAAAA,QAAQ,CAAChG,IAAI,CAACnG,GAAN,CAAR;EACH;;EACD,UAAI,CAACmG,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAL,EAA6B;EACzB0F,QAAAA,QAAQ,CAAChG,IAAI,CAAChH,GAAN,CAAR;EACH;EACJ,KAPM,MAOA,IAAIgH,IAAI,YAAY3N,KAApB,EAA2B;EAC9B2N,MAAAA,IAAI,CAAC1Z,OAAL,CAAa0f,QAAb;EACH;EACJ;;EApB0B,WAqBZ9U,OArBY;EAAA;EAAA;;EAAA;EAAA,gEAqB3B,mBAAuB8O,IAAvB;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,8BACmB/G,IADnB;;EAAA,mBAEQ+G,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAFR;EAAA;EAAA;EAAA;;EAAA,8BAEiCN,IAAI,CAACnG,GAFtC;EAAA;EAAA;;EAAA;EAAA;EAAA,qBAEkDua,OAAO,CAACpU,IAAI,CAACnG,GAAN,CAFzD;;EAAA;EAAA;;EAAA;EAAA;;EAAA,mBAGQmG,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAHR;EAAA;EAAA;EAAA;;EAAA,8BAGiCN,IAAI,CAAChH,GAHtC;EAAA;EAAA;;EAAA;EAAA;EAAA,qBAGkDob,OAAO,CAACpU,IAAI,CAAChH,GAAN,CAHzD;;EAAA;EAAA;;EAAA;EAAA;EACQY,cAAAA,IADR;;EAKI,kBAAIoG,IAAI,CAACc,QAAD,CAAR,EAAoB;EAChBlH,gBAAAA,IAAI,CAACkH,QAAD,CAAJ,GAAiB,IAAjB;EACH;;EAPL,iDAQWlH,IARX;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KArB2B;EAAA;EAAA;;EA+B3B,WAASwa,OAAT,CAAiBpU,IAAjB,EAAuB;EACnB,QAAIA,IAAI,YAAY3N,KAApB,EAA2B;EACvB,aAAOD,WAAW,CAAC4N,IAAI,CAACvY,GAAL,CAAS2sB,OAAT,CAAD,CAAlB;EACH;;EACD,QAAIpU,IAAI,YAAY/G,IAAhB,IAAwBuS,QAAQ,CAAC3kB,MAArC,EAA6C;EACzC,aAAOqK,OAAO,CAAC8O,IAAD,CAAd;EACH;;EACD,WAAOA,IAAP;EACH;EACJ;;;EAED,SAASue,aAAT,CAAuBhwB,IAAvB,UAA4D;EAAA,MAA7B4J,GAA6B,UAA7BA,GAA6B;EAAA,MAAxBoN,aAAwB,UAAxBA,aAAwB;EAAA,MAATlM,KAAS,UAATA,KAAS;EACxD,MAAIzK,IAAI,GAAG,EAAX;EACA,MAAIoR,IAAI,GAAGzR,IAAX;EACAqU,EAAAA,UAAU,CAAC5C,IAAD,CAAV;;EACA,WAASV,IAAT,GAAgB;EACZ,WAAO1Q,IAAP;EACH;;EACD,SAAQ,SAASqH,IAAT,GAAgB;EACpB,QAAI+J,IAAI,YAAY/G,IAApB,EAA0B;EACtB,UAAI5Q,GAAG,GAAG+Q,SAAQ,CAAC4G,IAAI,CAACnG,GAAN,EAAW;EAAE1B,QAAAA,GAAG,EAAHA,GAAF;EAAOoN,QAAAA,aAAa,EAAbA,aAAP;EAAsBlM,QAAAA,KAAK,EAALA;EAAtB,OAAX,CAAlB;;EACA,UAAIkM,aAAJ,EAAmB;EACfld,QAAAA,GAAG,GAAGwS,SAAS,CAACxS,GAAD,EAAM,UAAAA,GAAG,EAAI;EACxB,cAAIia,kBAAkB,CAACja,GAAD,CAAtB,EAA6B;EACzB,mBAAOA,GAAG,CAAC0gB,IAAJ,CAASxD,aAAT,CAAP;EACH;;EACD,iBAAOld,GAAP;EACH,SALc,CAAf;EAMH;;EACD,aAAOwS,SAAS,CAACqd,gBAAgB,CAAC7vB,GAAD,CAAjB,EAAwB,UAASA,GAAT,EAAc;EAClDuG,QAAAA,IAAI,CAAC5H,IAAL,CAAUqB,GAAV;;EACA,YAAI2X,IAAI,CAACM,UAAL,CAAgB,KAAhB,CAAJ,EAA4B;EACxB,iBAAOhB,IAAI,EAAX;EACH;;EACDU,QAAAA,IAAI,GAAGA,IAAI,CAAChH,GAAZ;EACA,eAAO/C,IAAI,EAAX;EACH,OAPe,CAAhB;EAQH,KAlBD,MAkBO,IAAI+J,IAAI,KAAKnH,IAAb,EAAkB;EACrB,aAAOyG,IAAI,EAAX;EACH,KAFM,MAEA;EACH,YAAM,IAAItV,KAAJ,CAAU,4CAAV,CAAN;EACH;EACJ,GAxBM,EAAP;EAyBH;;;EAED,SAASw0B,eAAT,CAAyBrZ,KAAzB,EAAgChM,IAAhC,EAAsCmgB,SAAtC,EAAiD;EAC7C,MAAIz0B,KAAK,GAAGsgB,KAAK,CAACE,MAAN,CAAalM,IAAb,EAAmBmgB,SAAnB,CAAZ;EACA,SAAOze,SAAS,CAACqd,gBAAgB,CAACrzB,KAAD,CAAjB,EAA0B,UAASA,KAAT,EAAgB;EACtD,QAAIA,KAAK,YAAYoU,IAArB,EAA2B;EACvBpU,MAAAA,KAAK,CAAC+d,UAAN;EACH;;EACD,WAAOtS,KAAK,CAACzL,KAAD,CAAZ;EACH,GALe,CAAhB;EAMH;;;EAED,SAAS45B,cAAT,CAAwBtZ,KAAxB,EAA+BhM,IAA/B,EAAqCmgB,SAArC,EAAgD;EAC5C,WAASoF,QAAT,CAAkBr4B,MAAlB,EAA0B;EACtB,QAAIA,MAAM,YAAY4S,IAAtB,EAA4B;EACxB5S,MAAAA,MAAM,CAACuc,UAAP;EACA,aAAOvc,MAAP;EACH;;EACD,WAAOiK,KAAK,CAACjK,MAAD,CAAZ;EACH;;EACD,MAAIxB,KAAK,GAAGsgB,KAAK,CAACE,MAAN,CAAalM,IAAb,EAAmBmgB,SAAnB,CAAZ;EACA,SAAOze,SAAS,CAACqd,gBAAgB,CAACrzB,KAAD,CAAjB,EAA0B,SAASiW,GAAT,CAAajW,KAAb,EAAoB;EAC1D,QAAI,CAACA,KAAD,IAAUA,KAAK,IAAIA,KAAK,CAACic,QAAD,CAAxB,IAAsCqd,cAAc,CAACt5B,KAAD,CAAxD,EAAiE;EAC7D,aAAOA,KAAP;EACH,KAFD,MAEO;EACH,aAAOgW,SAAS,CAACzB,SAAQ,CAACvU,KAAD,EAAQy0B,SAAR,CAAT,EAA6BoF,QAA7B,CAAhB;EACH;EACJ,GANe,CAAhB;EAOH;;;EAED,SAASjD,eAAT,CAAyBt4B,EAAzB,EAA6ByL,IAA7B,EAAmC;EAC/B,MAAIob,QAAQ,CAAC7mB,EAAD,CAAR,IAAgB,CAACgnB,eAAe,CAAChnB,EAAD,CAAhC,KACC,CAACinB,YAAY,CAACjnB,EAAD,CAAb,IAAqBonB,cAAc,CAACpnB,EAAD,CADpC,CAAJ,EAC+C;EAC3CyL,IAAAA,IAAI,GAAGA,IAAI,CAACnH,GAAL,CAASmiB,KAAT,CAAP;EACH;;EACD,MAAI,CAACqB,aAAa,CAAC9nB,EAAD,CAAd,IACAyL,IAAI,CAAC2R,IAAL,CAAUmB,gBAAV,CADA,IAEA,CAACA,gBAAgB,CAACve,EAAD,CAFjB,IAGA,CAACqe,eAAe,CAACre,EAAD,CAHpB,EAG0B;EACtB;EACA;EACA,QAAIkD,MAAM,GAAG,EAAb;EAAA,QAAiBkJ,CAAC,GAAGX,IAAI,CAAC/H,MAA1B;;EAHsB;EAKlB,UAAIwB,GAAG,GAAGuG,IAAI,CAACW,CAAD,CAAd;;EACA,UAAImS,gBAAgB,CAACrZ,GAAD,CAApB,EAA2B;EACnByiB,QAAAA,OAAO,GAAG,mBAAkB;EAAA,8CAANlc,IAAM;EAANA,YAAAA,IAAM;EAAA;;EAC5B,iBAAOiM,SAAS,CAACxS,GAAG,CAACyG,KAAJ,CAAU,IAAV,EAAgBF,IAAhB,CAAD,EAAwBgb,KAAxB,CAAhB;EACH,SAHsB;;;EAKvB5Y,QAAAA,WAAW,CAAC8Z,OAAD,EAAU,WAAV,EAAuB,IAAvB,CAAX;EACA9Z,QAAAA,WAAW,CAAC8Z,OAAD,EAAU,QAAV,EAAoBziB,GAApB,CAAX,CANuB;EAQvB;EACA;EACA;;EACAyiB,QAAAA,OAAO,CAACrd,SAAR,GAAoBpF,GAAG,CAACoF,SAAxB;EACApH,QAAAA,MAAM,CAACkJ,CAAD,CAAN,GAAYub,OAAZ;EACH,OAbD,MAaO;EACHzkB,QAAAA,MAAM,CAACkJ,CAAD,CAAN,GAAYlH,GAAZ;EACH;EArBiB;;EAItB,WAAOkH,CAAC,EAAR,EAAY;EAAA,UAGAub,OAHA;;EAAA;EAkBX;;EACDlc,IAAAA,IAAI,GAAGvI,MAAP;EACH;;EACD,SAAOuI,IAAP;EACH;;;EAED,SAASE,KAAT,CAAe3L,EAAf,EAAmByL,IAAnB,EAAwE;EAAA,mFAAJ,EAAI;EAAA,MAA7CuJ,GAA6C,UAA7CA,GAA6C;EAAA,MAAxCoN,aAAwC,UAAxCA,aAAwC;EAAA,4BAAzBlM,KAAyB;EAAA,MAAzBA,KAAyB,6BAAjB,YAAM,EAAW;;EACpEzK,EAAAA,IAAI,GAAG2vB,aAAa,CAAC3vB,IAAD,EAAO;EAAEuJ,IAAAA,GAAG,EAAHA,GAAF;EAAOoN,IAAAA,aAAa,EAAbA,aAAP;EAAsBlM,IAAAA,KAAK,EAALA;EAAtB,GAAP,CAApB;EACA,SAAOwB,SAAS,CAACjM,IAAD,EAAO,UAASA,IAAT,EAAe;EAClC,QAAIqc,aAAa,CAAC9nB,EAAD,CAAjB,EAAuB;EACnB;EACA;EACAA,MAAAA,EAAE,GAAGse,MAAM,CAACte,EAAD,CAAX;EACH;;EACDyL,IAAAA,IAAI,GAAG6sB,eAAe,CAACt4B,EAAD,EAAKyL,IAAL,CAAtB;;EACA,QAAIkrB,KAAK,GAAGlrB,IAAI,CAACY,KAAL,EAAZ;;EACA,QAAI8W,KAAK,GAAG,CAACf,aAAa,IAAIpN,GAAlB,EAAuB2e,QAAvB,CAAgC3zB,EAAhC,EAAoC22B,KAApC,CAAZ;EACA,QAAIzzB,MAAM,GAAG6xB,gBAAgB,CAAC/0B,EAAE,CAAC2L,KAAH,CAASwX,KAAT,EAAgB1X,IAAhB,CAAD,CAA7B;EACA,WAAOiM,SAAS,CAACxU,MAAD,EAAS,UAACA,MAAD,EAAY;EACjC,UAAIA,MAAM,YAAY4S,IAAtB,EAA4B;EACxB5S,QAAAA,MAAM,CAACuc,UAAP;EACA,eAAOtS,KAAK,CAACjK,MAAD,CAAZ;EACH;;EACD,aAAOkjB,GAAG,CAACljB,MAAD,CAAV;EACH,KANe,EAMbgT,KANa,CAAhB;EAOH,GAjBe,CAAhB;EAkBH;EAED;EACA;;;MACMgQ;EACF,wBAAYsV,CAAZ,EAAe;EAAA;;EACX,SAAKvQ,SAAL,GAAiBuQ,CAAjB;EACH;;;;aACD,kBAAS;EACL,UAAI,KAAKvQ,SAAL,KAAmB,IAAvB,EAA6B;EACzB,cAAM,IAAIpkB,KAAJ,CAAU,uCAAV,CAAN;EACH;EACJ;;;aACD,oBAAW;EACP,aAAO,iBAAP;EACH;;;;;;;EAGL,IAAM40B,IAAI,GAAG,SAAPA,IAAO,GAAM,EAAnB;;;EAEA,SAASxlB,SAAT,CAAkBD,IAAlB,EAAmE;EAAA,mFAAJ,EAAI;EAAA,MAAzChB,GAAyC,UAAzCA,GAAyC;EAAA,MAApCoN,aAAoC,UAApCA,aAAoC;EAAA,4BAArBlM,KAAqB;EAAA,MAArBA,KAAqB,6BAAbulB,IAAa;;EAC/D,MAAI;EACA,QAAIrZ,aAAa,KAAK,IAAtB,EAA4B;EACxBpN,MAAAA,GAAG,GAAGoN,aAAa,GAAGpN,GAAG,IAAIrT,UAA7B;EACH,KAFD,MAEO,IAAIqT,GAAG,KAAK,IAAZ,EAAkB;EACrBA,MAAAA,GAAG,GAAGoN,aAAa,GAAGzgB,UAAtB;EACH,KAFM,MAEA;EACHqT,MAAAA,GAAG,GAAGA,GAAG,IAAIrT,UAAb;EACH;;EACD,QAAIw0B,SAAS,GAAG;EAAEnhB,MAAAA,GAAG,EAAHA,GAAF;EAAOoN,MAAAA,aAAa,EAAbA,aAAP;EAAsBlM,MAAAA,KAAK,EAALA;EAAtB,KAAhB;EACA,QAAIxU,KAAJ;;EACA,QAAIokB,OAAO,CAAC9P,IAAD,CAAX,EAAmB;EACf,aAAOA,IAAP;EACH;;EACD,QAAIA,IAAI,YAAYvM,OAApB,EAA6B;EACzB,aAAOuL,GAAG,CAACpT,GAAJ,CAAQoU,IAAR,CAAP;EACH;;EACD,QAAI,EAAEA,IAAI,YAAYF,IAAlB,CAAJ,EAA6B;EACzB,aAAOE,IAAP;EACH;;EACD,QAAI4O,KAAK,GAAG5O,IAAI,CAACU,GAAjB;EACA,QAAItL,IAAI,GAAG4K,IAAI,CAACH,GAAhB;;EACA,QAAI+O,KAAK,YAAY9O,IAArB,EAA2B;EACvBpU,MAAAA,KAAK,GAAGqzB,gBAAgB,CAAC9e,SAAQ,CAAC2O,KAAD,EAAQuR,SAAR,CAAT,CAAxB;;EACA,UAAIn0B,UAAU,CAACN,KAAD,CAAd,EAAuB;EACnB,eAAOA,KAAK,CAACO,IAAN,CAAW,UAACP,KAAD,EAAW;EACzB,iBAAOuU,SAAQ,CAAC,IAAIH,IAAJ,CAASpU,KAAT,EAAgBsU,IAAI,CAACH,GAArB,CAAD,EAA4BsgB,SAA5B,CAAf;EACH,SAFM,CAAP,CADmB;EAKtB,OALD,MAKO,IAAI,CAAChQ,WAAW,CAACzkB,KAAD,CAAhB,EAAyB;EAC5B,cAAM,IAAImF,KAAJ,CACFjG,IAAI,CAACc,KAAD,CAAJ,GAAc,GAAd,GAAoBsT,GAAG,CAACpT,GAAJ,CAAQ,MAAR,EAAgBF,KAAhB,CAApB,GACI,oCADJ,GAC2CsU,IAAI,CAACjX,QAAL,EAFzC,CAAN;EAIH;EACJ;;EACD,QAAI6lB,KAAK,YAAYnb,OAArB,EAA8B;EAC1B/H,MAAAA,KAAK,GAAGsT,GAAG,CAACpT,GAAJ,CAAQgjB,KAAR,CAAR;EACH,KAFD,MAEO,IAAIpW,WAAW,CAACoW,KAAD,CAAf,EAAwB;EAC3BljB,MAAAA,KAAK,GAAGkjB,KAAR;EACH;;EACD,QAAI1hB,MAAJ;;EACA,QAAIxB,KAAK,YAAYwhB,MAArB,EAA6B;EACzBhgB,MAAAA,MAAM,GAAGm4B,eAAe,CAAC35B,KAAD,EAAQsU,IAAR,EAAcmgB,SAAd,CAAxB;EACH,KAFD,MAEO,IAAIz0B,KAAK,YAAYqV,KAArB,EAA4B;EAC/B7T,MAAAA,MAAM,GAAGo4B,cAAc,CAAC55B,KAAD,EAAQ0J,IAAR,EAAc+qB,SAAd,CAAvB;EACH,KAFM,MAEA,IAAI3nB,WAAW,CAAC9M,KAAD,CAAf,EAAwB;EAC3BwB,MAAAA,MAAM,GAAGyI,KAAK,CAACjK,KAAD,EAAQ0J,IAAR,EAAc+qB,SAAd,CAAd;EACH,KAFM,MAEA,IAAIlQ,eAAe,CAACvkB,KAAD,CAAnB,EAA4B;EAC/BwB,MAAAA,MAAM,GAAGxB,KAAK,CAACwgB,MAAN,EAAT;EACH,KAFM,MAEA,IAAIlM,IAAI,YAAYF,IAApB,EAA0B;EAC7BpU,MAAAA,KAAK,GAAGkjB,KAAK,IAAIA,KAAK,CAAC7lB,QAAN,EAAjB;EACA,YAAM,IAAI8H,KAAJ,WAAajG,IAAI,CAACgkB,KAAD,CAAjB,cAA4BljB,KAA5B,wBAAN;EACH,KAHM,MAGA;EACH,aAAOsU,IAAP;EACH,KAtDD;;;EAwDA,QAAI0lB,WAAW,GAAG1mB,GAAG,CAACpT,GAAJ,CAAQmL,MAAM,OAAN,CAAW,aAAX,CAAR,EAAmC;EAAE5K,MAAAA,UAAU,EAAE;EAAd,KAAnC,CAAlB;;EACA,QAAIu5B,WAAW,KAAK,IAAhB,IAAwB15B,UAAU,CAACkB,MAAD,CAAtC,EAAgD;EAC5C;EACA;EACA;EACAA,MAAAA,MAAM,GAAGA,MAAM,CAACjB,IAAP,CAAY,UAAAiB,MAAM,EAAI;EAC3B,YAAIA,MAAM,YAAY4S,IAAlB,IAA0B,CAACpU,KAAK,CAACic,QAAD,CAApC,EAAgD;EAC5C,iBAAO1H,SAAQ,CAAC/S,MAAD,EAASizB,SAAT,CAAf;EACH;;EACD,eAAOjzB,MAAP;EACH,OALQ,CAAT;EAMA,aAAO,IAAI4K,aAAJ,CAAkB5K,MAAlB,CAAP;EACH;;EACD,WAAOA,MAAP;EACH,GAtED,CAsEE,OAAOvC,CAAP,EAAU;EACRuV,IAAAA,KAAK,IAAIA,KAAK,CAACpV,IAAN,CAAWkU,GAAX,EAAgBrU,CAAhB,EAAmBqV,IAAnB,CAAT;EACH;EACJ;;;EAED,IAAM2lB,OAAO,GAAGC,YAAY,CAAC,UAAS5lB,IAAT,EAAe;EACxC,SAAOA,IAAP;EACH,CAF2B,CAA5B;;EAIA,IAAMoS,IAAI,GAAGwT,YAAY,CAAC,UAAS5lB,IAAT,EAAetU,KAAf,EAAsB;EAC5C,SAAOA,KAAP;EACH,CAFwB,CAAzB;;EAIA,SAASk6B,YAAT,CAAsBC,gBAAtB,EAAwC;EACpC;EAAA,wEAAO,mBAA2B32B,GAA3B,EAAgC8P,GAAhC,EAAqCoN,aAArC;EAAA;;EAAA;EAAA;EAAA;EAAA;EACH,kBAAIA,aAAa,KAAK,IAAtB,EAA4B;EACxBpN,gBAAAA,GAAG,GAAGoN,aAAa,GAAGpN,GAAG,IAAI9S,QAA7B;EACH,eAFD,MAEO,IAAI8S,GAAG,KAAK,IAAZ,EAAkB;EACrBA,gBAAAA,GAAG,GAAGoN,aAAa,GAAGlgB,QAAtB;EACH,eAFM,MAEA;EACH8S,gBAAAA,GAAG,GAAGA,GAAG,IAAI9S,QAAb;EACH;;EACGqmB,cAAAA,OARD,GAQW,EARX;EASCzX,cAAAA,KATD,GASS5B,KAAK,CAACC,OAAN,CAAcjK,GAAd,IAAqBA,GAArB,GAA2BY,KAAK,CAACZ,GAAD,CATzC;EAAA;EAAA;EAAA;EAAA,0CAUoB4L,KAVpB;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAUYkF,cAAAA,IAVZ;EAWOtU,cAAAA,KAXP,GAWeuU,SAAQ,CAACD,IAAD,EAAO;EACzBhB,gBAAAA,GAAG,EAAHA,GADyB;EAEzBoN,gBAAAA,aAAa,EAAbA,aAFyB;EAGzBlM,gBAAAA,KAAK,EAAE,eAACvV,CAAD,EAAIqV,IAAJ,EAAa;EAChB,sBAAIrV,CAAC,IAAIA,CAAC,CAAC2e,OAAX,EAAoB;EAChB,wBAAI3e,CAAC,CAAC2e,OAAF,CAAUla,KAAV,CAAgB,SAAhB,CAAJ,EAAgC;EAC5B,0BAAIqC,EAAE,GAAG,yBAAT,CAD4B;;EAG5B9G,sBAAAA,CAAC,CAAC2e,OAAF,GAAY3e,CAAC,CAAC2e,OAAF,CAAUha,OAAV,CAAkBmC,EAAlB,EAAsB,OAAtB,CAAZ;EACH;;EACD,wBAAIuO,IAAJ,EAAU;EACN;EACA,0BAAI,EAAErV,CAAC,CAACkZ,QAAF,YAAsB3K,KAAxB,CAAJ,EAAoC;EAChCvO,wBAAAA,CAAC,CAACkZ,QAAF,GAAa,EAAb;EACH;;EACDlZ,sBAAAA,CAAC,CAACkZ,QAAF,CAAWhW,IAAX,CAAgBmS,IAAI,CAACjX,QAAL,CAAc,IAAd,CAAhB;EACH;EACJ;;EACD,wBAAM4B,CAAN;EACH;EAnBwB,eAAP,CAXvB;;EAAA,kBAgCMqB,UAAU,CAACN,KAAD,CAhChB;EAAA;EAAA;EAAA;;EAiCK6mB,cAAAA,OAAO,CAAC1kB,IAAR,CAAag4B,gBAAgB,CAAC7lB,IAAD,EAAOtU,KAAP,CAA7B;EAjCL;EAAA;;EAAA;EAAA,8BAmCK6mB,OAnCL;EAAA,8BAmCkBsT,gBAnClB;EAAA,8BAmCmC7lB,IAnCnC;EAAA;EAAA,qBAmC+CtU,KAnC/C;;EAAA;EAAA;EAAA;;EAAA,4BAmCamC,IAnCb;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA;EAAA;EAAA;;EAAA;;EAAA;EAAA;;EAAA;EAAA;;EAAA;EAAA,iDAsCI0kB,OAtCJ;;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA,KAAP;;EAAA,aAAsBuT,WAAtB;EAAA;EAAA;;EAAA,WAAsBA,WAAtB;EAAA;EAwCH;;;EAED,SAAS/gB,QAAT,CAAkB/E,IAAlB,EAAwB;EACpB,MAAI+lB,aAAa,GAAG;EAChB,SAAK,GADW;EAEhB,SAAK;EAFW,GAApB;EAIA,MAAIrxB,MAAJ;;EACA,MAAI,OAAOsL,IAAP,KAAgB,QAApB,EAA8B;EAC1BtL,IAAAA,MAAM,GAAGmB,QAAQ,CAACmK,IAAD,CAAjB;EACH,GAFD,MAEO;EACHtL,IAAAA,MAAM,GAAGsL,IAAI,CAAC1R,GAAL,CAAS,UAAAlD,CAAC;EAAA,aAAIA,CAAC,IAAIA,CAAC,CAAC0J,KAAP,GAAe1J,CAAC,CAAC0J,KAAjB,GAAyB1J,CAA7B;EAAA,KAAV,CAAT;EACH;;EAED,MAAI46B,WAAW,GAAGj4B,MAAM,CAACC,IAAP,CAAY+3B,aAAZ,CAAlB;EACA,MAAIE,QAAQ,GAAGl4B,MAAM,CAACkU,MAAP,CAAc8jB,aAAd,EAA6BzoB,MAA7B,CAAoC0oB,WAApC,CAAf;EACAtxB,EAAAA,MAAM,GAAGA,MAAM,CAACqB,MAAP,CAAc,UAAAjB,KAAK;EAAA,WAAImxB,QAAQ,CAACx2B,QAAT,CAAkBqF,KAAlB,CAAJ;EAAA,GAAnB,CAAT;EAEA,MAAMwoB,KAAK,GAAG,IAAIlpB,KAAJ,EAAd;;EAhBoB,+CAiBAM,MAjBA;EAAA;;EAAA;EAiBpB,8DAA4B;EAAA,UAAjBI,KAAiB;;EACxB,UAAIkxB,WAAW,CAACv2B,QAAZ,CAAqBqF,KAArB,CAAJ,EAAiC;EAC7BwoB,QAAAA,KAAK,CAACzvB,IAAN,CAAWiH,KAAX;EACH,OAFD,MAEO,IAAI,CAACwoB,KAAK,CAAC7oB,QAAN,EAAL,EAAuB;EAAE;EAC5B,YAAIqQ,IAAI,GAAGwY,KAAK,CAACpzB,GAAN,EAAX,CAD0B;;EAG1B,YAAMg8B,aAAa,GAAGH,aAAa,CAACjhB,IAAD,CAAnC;;EACA,YAAIhQ,KAAK,KAAKoxB,aAAd,EAA6B;EACzB5I,UAAAA,KAAK,CAAC9oB,GAAN;EACH,SAFD,MAEO;EACH,gBAAM,IAAI3D,KAAJ,yCAA2Cq1B,aAA3C,EAAN;EACH;EACJ,OATM,MASA;EACH;EACA,cAAM,IAAIr1B,KAAJ,6CAA+CiE,KAA/C,EAAN;EACH;EACJ;EAjCmB;EAAA;EAAA;EAAA;EAAA;;EAkCpB,SAAOwoB,KAAK,CAAC7oB,QAAN,EAAP;EACH;;;EAGD,SAAS0xB,OAAT,CAAiBn8B,EAAjB,EAAqB;EACjB;EACA,MAAIgI,GAAG,GAAG,MAAMhI,EAAE,CAACjB,QAAH,EAAN,GAAsB,KAAhC;EACA,MAAIm7B,GAAG,GAAGQ,MAAM,CAACR,GAAP,IAAcQ,MAAM,CAAC0B,SAA/B;EACA,MAAIC,IAAJ;;EACA,MAAI;EACAA,IAAAA,IAAI,GAAG,IAAIC,IAAJ,CAAS,CAACt0B,GAAD,CAAT,EAAgB;EAAEpH,MAAAA,IAAI,EAAE;EAAR,KAAhB,CAAP;EACH,GAFD,CAEE,OAAOD,CAAP,EAAU;EAAE;EACV,QAAM47B,WAAW,GAAG7B,MAAM,CAAC6B,WAAP,IACd7B,MAAM,CAAC8B,iBADO,IAEd9B,MAAM,CAAC+B,cAFb;EAGAJ,IAAAA,IAAI,GAAG,IAAIE,WAAJ,EAAP;EACAF,IAAAA,IAAI,CAAChsB,MAAL,CAAYrI,GAAZ;EACAq0B,IAAAA,IAAI,GAAGA,IAAI,CAACK,OAAL,EAAP;EACH;;EACD,SAAO,IAAIp9B,IAAI,CAACq9B,MAAT,CAAgBzC,GAAG,CAAC0C,eAAJ,CAAoBP,IAApB,CAAhB,CAAP;EACH;;;EAED,SAASQ,MAAT,GAAkB;EACd,SAAOnjB,IAAI,CAACojB,OAAL,CAAa13B,KAAb,CAAmB,qBAAnB,CAAP;EACH;;;EAED,SAAS23B,SAAT,GAA6B;EAAA,MAAVC,GAAU,uEAAJ,EAAI;EACzB,MAAMC,GAAG,GAAG,cAAZ;;EACA,MAAID,GAAG,KAAK,EAAZ,EAAgB;EACZ,QAAIH,MAAM,EAAV,EAAc;EACVG,MAAAA,GAAG,2DAAoDC,GAApD,CAAH;EACH,KAFD,MAEO;EACHD,MAAAA,GAAG,uDAAgDtjB,IAAI,CAACojB,OAArD,cAAgEG,GAAhE,CAAH;EACH;EACJ;;EACD,MAAI/H,IAAI,GAAGvzB,UAAU,CAACC,GAAX,CAAe,MAAf,CAAX;EACA,SAAOszB,IAAI,CAACp0B,IAAL,CAAUoB,QAAV,EAAoB86B,GAApB,EAAyBr7B,UAAzB,CAAP;EACH;;;EAED,SAASg7B,MAAT,CAAgBK,GAAhB,EAAqB;EACjB,OAAKA,GAAL,GAAWA,GAAX;EACA,MAAME,MAAM,GAAG,KAAKA,MAAL,GAAcf,OAAO,CAAC,YAAW;EAC5C,QAAIgB,WAAJ;EACA,QAAIt+B,IAAJ,CAF4C;;EAI5CU,IAAAA,IAAI,CAACgB,gBAAL,CAAsB,SAAtB,EAAiC,UAAS68B,QAAT,EAAmB;EAChD,UAAI/yB,IAAI,GAAG+yB,QAAQ,CAAC/yB,IAApB;EACA,UAAIgzB,EAAE,GAAGhzB,IAAI,CAACgzB,EAAd;;EACA,UAAIhzB,IAAI,CAACzJ,IAAL,KAAc,KAAd,IAAuBy8B,EAAE,KAAK,IAAlC,EAAwC;EACpC;EACH;;EACD,eAASC,WAAT,CAAqBp6B,MAArB,EAA6B;EACzB3D,QAAAA,IAAI,CAACg+B,WAAL,CAAiB;EAAEF,UAAAA,EAAE,EAAEA,EAAN;EAAUz8B,UAAAA,IAAI,EAAE,KAAhB;EAAuBsC,UAAAA,MAAM,EAAEA;EAA/B,SAAjB;EACH;;EACD,eAASs6B,UAAT,CAAoBle,OAApB,EAA6B;EACzB/f,QAAAA,IAAI,CAACg+B,WAAL,CAAiB;EAAEF,UAAAA,EAAE,EAAEA,EAAN;EAAUz8B,UAAAA,IAAI,EAAE,KAAhB;EAAuBsV,UAAAA,KAAK,EAAEoJ;EAA9B,SAAjB;EACH;;EACD,UAAIjV,IAAI,CAACozB,MAAL,KAAgB,MAApB,EAA4B;EACxB,YAAI,CAAC5+B,IAAL,EAAW;EACP2+B,UAAAA,UAAU,CAAC,kDAAD,CAAV;EACA;EACH;;EACD3+B,QAAAA,IAAI,CAACoD,IAAL,CAAU,YAAW;EACjB;EACA,cAAI+T,IAAI,GAAG3L,IAAI,CAAC4d,MAAL,CAAY,CAAZ,CAAX;EACA,cAAImL,OAAO,GAAG/oB,IAAI,CAAC4d,MAAL,CAAY,CAAZ,CAAd;EACAkV,UAAAA,WAAW,CAAC/U,IAAZ,CAAiBpS,IAAjB,EAAuBod,OAAvB,EAAgCnxB,IAAhC,CAAqC,UAASiB,MAAT,EAAiB;EAClDA,YAAAA,MAAM,GAAGA,MAAM,CAACoB,GAAP,CAAW,UAAS5C,KAAT,EAAgB;EAChC,qBAAOA,KAAK,IAAIA,KAAK,CAACyE,OAAN,EAAhB;EACH,aAFQ,CAAT;EAGAm3B,YAAAA,WAAW,CAACp6B,MAAD,CAAX;EACH,WALD,WAKS,UAAAgT,KAAK,EAAI;EACdsnB,YAAAA,UAAU,CAACtnB,KAAD,CAAV;EACH,WAPD;EAQH,SAZD;EAaH,OAlBD,MAkBO,IAAI7L,IAAI,CAACozB,MAAL,KAAgB,MAApB,EAA4B;EAC/B,YAAIT,GAAG,GAAG3yB,IAAI,CAAC4d,MAAL,CAAY,CAAZ,CAAV;;EACA,YAAI,OAAO+U,GAAP,KAAe,QAAnB,EAA6B;EACzBQ,UAAAA,UAAU,CAAC,iCAAD,CAAV;EACH,SAFD,MAEO;EACHE,UAAAA,aAAa,WAAIV,GAAJ,uBAAb;EACAG,UAAAA,WAAW,GAAG,IAAIzjB,IAAI,CAACkZ,WAAT,CAAqB,QAArB,CAAd;EACA/zB,UAAAA,IAAI,GAAGk+B,SAAS,CAACC,GAAD,CAAhB;EACAn+B,UAAAA,IAAI,CAACoD,IAAL,CAAU,YAAM;EACZq7B,YAAAA,WAAW,CAAC,IAAD,CAAX;EACH,WAFD;EAGH;EACJ;EACJ,KA3CD;EA4CH,GAhDmC,CAApC;;EAiDA,OAAKK,GAAL,GAAY,YAAW;EACnB,QAAIN,EAAE,GAAG,CAAT;EACA,WAAO,SAASM,GAAT,CAAaF,MAAb,EAAqBxV,MAArB,EAA6B;EAChC,UAAI2V,GAAG,GAAG,EAAEP,EAAZ;;EACA,aAAO,IAAIjuB,OAAJ,CAAY,UAAS6hB,OAAT,EAAkBC,MAAlB,EAA0B;EACzCgM,QAAAA,MAAM,CAAC38B,gBAAP,CAAwB,SAAxB,EAAmC,SAASs9B,OAAT,CAAiBT,QAAjB,EAA2B;EAC1D,cAAI/yB,IAAI,GAAG+yB,QAAQ,CAAC/yB,IAApB;;EACA,cAAIA,IAAI,IAAIA,IAAI,CAACzJ,IAAL,KAAc,KAAtB,IAA+ByJ,IAAI,CAACgzB,EAAL,KAAYO,GAA/C,EAAoD;EAChD,gBAAIvzB,IAAI,CAAC6L,KAAT,EAAgB;EACZgb,cAAAA,MAAM,CAAC7mB,IAAI,CAAC6L,KAAN,CAAN;EACH,aAFD,MAEO;EACH+a,cAAAA,OAAO,CAAC5mB,IAAI,CAACnH,MAAN,CAAP;EACH;;EACDg6B,YAAAA,MAAM,CAACY,mBAAP,CAA2B,SAA3B,EAAsCD,OAAtC;EACH;EACJ,SAVD;EAWAX,QAAAA,MAAM,CAACK,WAAP,CAAmB;EACf38B,UAAAA,IAAI,EAAE,KADS;EAEf68B,UAAAA,MAAM,EAAEA,MAFO;EAGfJ,UAAAA,EAAE,EAAEO,GAHW;EAIf3V,UAAAA,MAAM,EAAEA;EAJO,SAAnB;EAMH,OAlBM,CAAP;EAmBH,KArBD;EAsBH,GAxBU,EAAX;;EAyBA,OAAK0V,GAAL,CAAS,MAAT,EAAiB,CAACX,GAAD,CAAjB,WAA8B,UAAC9mB,KAAD,EAAW;EACrCnU,IAAAA,OAAO,CAACmU,KAAR,CAAcA,KAAd;EACH,GAFD;;EAGA,OAAKkS,IAAL,GAAY,UAASpS,IAAT,EAAgC;EAAA,QAAjBod,OAAiB,uEAAP,KAAO;EACxC,WAAO,KAAKuK,GAAL,CAAS,MAAT,EAAiB,CAAC3nB,IAAD,EAAOod,OAAP,CAAjB,CAAP;EACH,GAFD;EAGH;EAGD;EACA;;;EACA,IAAI2K,iBAAiB,GAAG;EACpB,UAAQ;EAAA;EAAA,QAAErnB,GAAF;EAAA,QAAOb,GAAP;;EAAA,WAAgBC,IAAI,CAACY,GAAD,EAAMb,GAAN,CAApB;EAAA,GADY;EAEpB,YAAU,gBAASnU,KAAT,EAAgB;EACtB,QAAIuH,OAAO,CAACsE,QAAR,CAAiB7L,KAAjB,CAAJ,EAA6B;EACzB,aAAOuE,OAAO,CAAC,CAACvE,KAAD,EAAQ,EAAR,CAAD,CAAd;EACH;;EACD,WAAOuE,OAAO,CAACvE,KAAD,CAAd;EACH,GAPmB;EAQpB,WAAS,uBAA0B;EAAA;EAAA,QAAhBoX,OAAgB;EAAA,QAAPW,IAAO;;EAC/B,WAAO,IAAI5X,MAAJ,CAAWiX,OAAX,EAAoBW,IAApB,CAAP;EACH,GAVmB;EAWpB,SAAO,eAAW;EACd,WAAO/D,IAAP;EACH,GAbmB;EAcpB,YAAU,gBAAShU,KAAT,EAAgB;EACtB,QAAIuH,OAAO,CAACsE,QAAR,CAAiB7L,KAAjB,CAAJ,EAA6B;EACzB,aAAO+H,OAAO,CAAC/H,KAAD,CAAd;EACH,KAFD,MAEO,IAAIwN,KAAK,CAACC,OAAN,CAAczN,KAAd,CAAJ,EAA0B;EAC7B,aAAO+H,OAAO,CAACsD,MAAM,OAAN,CAAWrL,KAAK,CAAC,CAAD,CAAhB,CAAD,CAAd;EACH;EACJ,GApBmB;EAqBpB,YAAUuH,OArBU;EAsBpB,eAAarC;EAtBO,CAAxB;EAyBA;;EACA,IAAMo3B,eAAe,GAAGj6B,MAAM,CAACC,IAAP,CAAY+5B,iBAAZ,CAAxB;EACA,IAAME,SAAS,GAAG,EAAlB;;EACA,qCAAqBl6B,MAAM,CAAC4W,OAAP,CAAeqjB,eAAf,CAArB,wCAAsD;EAAjD;EAAA,MAAK5xB,CAAL;EAAA,MAAQuT,GAAR;;EACDse,EAAAA,SAAS,CAACte,GAAD,CAAT,GAAiB,CAACvT,CAAlB;EACH;;EACD,SAAS8xB,WAAT,CAAqBvxB,IAArB,EAA2B;EACvB,SAAOsxB,SAAS,CAACtxB,IAAD,CAAhB;EACH;;EACD,SAASwxB,YAAT,CAAsB/xB,CAAtB,EAAyB;EACrB,SAAO4xB,eAAe,CAAC5xB,CAAD,CAAtB;EACH;;;EAED,SAASkB,SAAT,CAAmBjD,IAAnB,EAAyB;EACrB,SAAOnB,IAAI,CAACwW,SAAL,CAAerV,IAAf,EAAqB,UAASkM,GAAT,EAAc7U,KAAd,EAAqB;EAC7C,QAAM08B,EAAE,GAAG,KAAK7nB,GAAL,CAAX;;EACA,QAAI6nB,EAAJ,EAAQ;EACJ,UAAIA,EAAE,YAAYv8B,MAAlB,EAA0B;EACtB,eAAO;EACH,eAAKq8B,WAAW,CAAC,OAAD,CADb;EAEH,eAAK,CAACE,EAAE,CAAC3c,MAAJ,EAAY2c,EAAE,CAACC,KAAf;EAFF,SAAP;EAIH;;EACD,UAAI1e,GAAG,GAAGue,WAAW,CAACE,EAAE,CAACxxB,WAAH,CAAewS,SAAhB,CAArB;;EACA,UAAI,CAAC4G,QAAQ,CAACrG,GAAD,CAAb,EAAoB;EAChB,eAAO;EACH,eAAKA,GADF;EAEH,eAAKye,EAAE,CAAC9wB,SAAH;EAFF,SAAP;EAIH;EACJ;;EACD,WAAO5L,KAAP;EACH,GAlBM,CAAP;EAmBH;;;EAED,SAASg0B,WAAT,CAAqBnyB,MAArB,EAA6B;EACzB,SAAO2F,IAAI,CAACpD,KAAL,CAAWvC,MAAX,EAAmB,UAACuF,CAAD,EAAIkE,MAAJ,EAAe;EACrC,QAAIA,MAAM,IAAI,QAAOA,MAAP,MAAkB,QAAhC,EAA0C;EACtC,UAAI,CAACgZ,QAAQ,CAAChZ,MAAM,CAAC,GAAD,CAAP,CAAb,EAA4B;EACxB,YAAI2S,GAAG,GAAGwe,YAAY,CAACnxB,MAAM,CAAC,GAAD,CAAP,CAAtB;;EACA,YAAI+wB,iBAAiB,CAACpe,GAAD,CAArB,EAA4B;EACxB,iBAAOoe,iBAAiB,CAACpe,GAAD,CAAjB,CAAuB3S,MAAM,CAAC,GAAD,CAA7B,CAAP;EACH;EACJ;EACJ;;EACD,WAAOA,MAAP;EACH,GAVM,CAAP;EAWH;EAGD;EACA;;;EACA,IAAMsxB,IAAI,GAAI,YAAW;EAErB,MAAIlU,KAAK,GAAG;EACR,YAAQtU,IADA;EAER,cAAUrM,OAFF;EAGR,cAAUxD,OAHF;EAIR,cAAUgD,OAJF;EAKR,iBAAarC,UALL;EAMR,WAAO8O,IAAG,CAAC9I,WANH;EAOR,aAAS/K;EAPD,GAAZ;;EAUA,WAAS08B,UAAT,CAAoBC,KAApB,EAA2Bx+B,EAA3B,EAA+B;EAC3B,WAAO;EACHy+B,MAAAA,WAAW,EAAEz+B,EADV;EAEHw+B,MAAAA,KAAK,EAALA;EAFG,KAAP;EAIH;;EAED,MAAIE,OAAO,GAAG,IAAIC,OAAJ,EAAd;EAEA,MAAMC,sBAAsB,GAAG,EAA/B;;EACA,uCAA2B76B,MAAM,CAAC4W,OAAP,CAAeojB,iBAAf,CAA3B,wCAA8D;EAAzD;EAAA,QAAQpxB,IAAR;EAAA,QAAc3M,EAAd;;EACD,QAAMw+B,KAAK,GAAGpU,KAAK,CAACzd,IAAD,CAAnB;EACAiyB,IAAAA,sBAAsB,CAACjyB,IAAD,CAAtB,GAA+B4xB,UAAU,CAACC,KAAD,EAAQx+B,EAAR,CAAzC;EACH,GAzBoB;;;EA2BrB,MAAI6+B,GAAG,GAAG,KAAV;EACA96B,EAAAA,MAAM,CAACC,IAAP,CAAY46B,sBAAZ,EAAoCz7B,OAApC,CAA4C,UAAAvC,IAAI,EAAI;EAChD,QAAMyJ,IAAI,GAAGu0B,sBAAsB,CAACh+B,IAAD,CAAnC;;EACA,QAAI,OAAOyJ,IAAP,KAAgB,UAApB,EAAgC;EAC5B,UAAMm0B,MAAK,GAAGn0B,IAAd;EACAnL,MAAAA,YAAY,CAAC;EACTs/B,QAAAA,KAAK,EAALA,MADS;EAETK,QAAAA,GAAG,EAAHA,GAFS;EAGTC,QAAAA,MAHS,kBAGFzG,QAHE,EAGQyG,OAHR,EAGgB;EACrBA,UAAAA,OAAM,CAACzG,QAAQ,CAAC/qB,SAAT,EAAD,CAAN;EACH,SALQ;EAMTyxB,QAAAA,MANS,kBAMF10B,IANE,EAMI;EACT,iBAAO,IAAIm0B,MAAJ,CAAUn0B,IAAV,CAAP;EACH;EARQ,OAAD,CAAZ;EAUH,KAZD,MAYO;EACH,UAAQo0B,WAAR,GAA+Bp0B,IAA/B,CAAQo0B,WAAR;EAAA,UAAqBD,OAArB,GAA+Bn0B,IAA/B,CAAqBm0B,KAArB;EACAt/B,MAAAA,YAAY,CAAC;EACTs/B,QAAAA,KAAK,EAALA,OADS;EAETK,QAAAA,GAAG,EAAHA,GAFS;EAGTC,QAAAA,MAHS,kBAGFzG,QAHE,EAGQyG,QAHR,EAGgB;EACrB,cAAIzG,QAAQ,YAAYx2B,MAAxB,EAAgC;EAC5B,mBAAOi9B,QAAM,CAAC,CAACzG,QAAQ,CAAC5W,MAAV,EAAkB4W,QAAQ,CAACgG,KAA3B,CAAD,CAAb;EACH;;EACDS,UAAAA,QAAM,CAACzG,QAAQ,CAAC/qB,SAAT,EAAD,CAAN;EACH,SARQ;EASTyxB,QAAAA,MATS,kBASF10B,IATE,EASI;EACT,iBAAOo0B,WAAW,CAACp0B,IAAD,CAAlB;EACH;EAXQ,OAAD,CAAZ;EAaH;;EACDw0B,IAAAA,GAAG;EACN,GA/BD;EAgCA,SAAOH,OAAP;EACH,CA7DY,EAAb;;;EAgEA,SAASr/B,iBAAT,GAAoC;EAAA,sCAANoM,IAAM;EAANA,IAAAA,IAAM;EAAA;;EAChC,MAAIA,IAAI,CAAC/H,MAAL,GAAc,CAAlB,EAAqB;EACjB,QAAMwO,GAAG,GAAGzG,IAAI,CAACmJ,MAAL,CAAY,UAACC,GAAD,EAAMhE,GAAN;EAAA,aAAcgE,GAAG,GAAGhE,GAAG,CAACnN,MAAxB;EAAA,KAAZ,EAA4C,CAA5C,CAAZ;EACA,QAAMR,MAAM,GAAG,IAAI8uB,UAAJ,CAAe9f,GAAf,CAAf;EACA,QAAIL,MAAM,GAAG,CAAb;EACApG,IAAAA,IAAI,CAACtI,OAAL,CAAa,UAAAoH,IAAI,EAAI;EACjBrH,MAAAA,MAAM,CAAC+N,GAAP,CAAW1G,IAAX,EAAiBsH,MAAjB;EACAA,MAAAA,MAAM,IAAItH,IAAI,CAAC7G,MAAf;EACH,KAHD;EAIA,WAAOR,MAAP;EACH,GATD,MASO,IAAIuI,IAAI,CAAC/H,MAAT,EAAiB;EACpB,WAAO+H,IAAI,CAAC,CAAD,CAAX;EACH;EACJ;;;EAGD,SAASrM,YAAT,GAAwB;EACpB,MAAM4/B,OAAO,GAAG,CAAhB;EACA,MAAMN,OAAO,GAAG,IAAIO,WAAJ,CAAgB,OAAhB,CAAhB;EACA,SAAOP,OAAO,CAACI,MAAR,eAAsBE,OAAO,CAACjgC,QAAR,GAAmBiK,QAAnB,CAA4B,CAA5B,EAA+B,GAA/B,CAAtB,EAAP;EACH;;;EAGD,IAAMk2B,YAAY,GAAG,CAArB;;EAGA,SAASC,YAAT,CAAsB3xB,GAAtB,EAA2B;EACvB,MAAM4xB,OAAO,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAAhB;EACA,MAAM5U,MAAM,GAAG2U,OAAO,CAACL,MAAR,CAAevxB,GAAG,CAACnB,KAAJ,CAAU,CAAV,EAAa6yB,YAAb,CAAf,CAAf;EACA,MAAMvyB,IAAI,GAAG8d,MAAM,CAACxY,SAAP,CAAiB,CAAjB,EAAoB,CAApB,CAAb;;EACA,MAAItF,IAAI,KAAK,MAAb,EAAqB;EACjB,QAAMpI,CAAC,GAAGkmB,MAAM,CAACrlB,KAAP,CAAa,oBAAb,CAAV;;EACA,QAAIb,CAAJ,EAAO;EACH,aAAO;EACH3D,QAAAA,IAAI,EAAE2D,CAAC,CAAC,CAAD,CADJ;EAEHu4B,QAAAA,OAAO,EAAEz1B,MAAM,CAAC9C,CAAC,CAAC,CAAD,CAAF;EAFZ,OAAP;EAIH;EACJ;;EACD,SAAO;EACH3D,IAAAA,IAAI,EAAE;EADH,GAAP;EAGH;;;EAGD,SAAS0+B,aAAT,CAAuB9xB,GAAvB,EAA4B;EACxB,MAAM+xB,KAAK,GAAGngC,YAAY,EAA1B;EACA,MAAMogC,OAAO,GAAGlB,IAAI,CAACQ,MAAL,CAAYtxB,GAAZ,CAAhB;EACA,SAAOnO,iBAAiB,CAACkgC,KAAD,EAAQE,MAAI,CAACD,OAAD,EAAU;EAAED,IAAAA,KAAK,EAAE;EAAT,GAAV,CAAZ,CAAxB;EACH;;;EAGD,SAAS9J,eAAT,CAAyBprB,IAAzB,EAA+B;EAC3B,sBAA0B80B,YAAY,CAAC90B,IAAD,CAAtC;EAAA,MAAQzJ,IAAR,iBAAQA,IAAR;EAAA,MAAck8B,OAAd,iBAAcA,OAAd;;EACA,MAAIl8B,IAAI,KAAK,MAAT,IAAmBk8B,OAAO,KAAK,CAAnC,EAAsC;EAClC,QAAMjsB,GAAG,GAAG6uB,QAAM,CAACr1B,IAAI,CAACgC,KAAL,CAAW6yB,YAAX,CAAD,EAA2B;EAAEK,MAAAA,KAAK,EAAE;EAAT,KAA3B,CAAlB;EACA,WAAOjB,IAAI,CAACS,MAAL,CAAYluB,GAAZ,CAAP;EACH,GAHD,MAGO;EACH,UAAM,IAAIhK,KAAJ,+BAAiCjG,IAAjC,EAAN;EACH;EACJ;;;EAGD,SAAS++B,SAAT,CAAmBh/B,CAAnB,EAAsB;EAClBoB,EAAAA,OAAO,CAACmU,KAAR,CAAcvV,CAAC,CAAC2e,OAAF,IAAa3e,CAA3B;;EACA,MAAIA,CAAC,CAACqV,IAAN,EAAY;EACRjU,IAAAA,OAAO,CAACmU,KAAR,CAAcvV,CAAC,CAACqV,IAAF,CAAO1R,GAAP,CAAW,UAACsN,IAAD,EAAOxF,CAAP;EAAA,wBAAiBA,CAAC,GAAG,CAArB,gBAA4BwF,IAA5B;EAAA,KAAX,CAAd;EACH;EACJ;;;EAGD,SAAS/S,IAAT,GAAgB;EACZ,MAAI+gC,UAAU,GAAG,CAAC,aAAD,EAAgB,eAAhB,CAAjB;EACA,MAAIC,WAAJ;;EACA,WAAS3K,IAAT,CAAc4K,MAAd,EAAsB;EAClB,WAAO,IAAI1wB,OAAJ,CAAY,UAAS6hB,OAAT,EAAkB;EACjC,UAAI8O,GAAG,GAAGD,MAAM,CAACE,YAAP,CAAoB,KAApB,CAAV;;EACA,UAAID,GAAJ,EAAS;EACL,eAAOvgC,KAAK,CAACugC,GAAD,CAAL,CAAW99B,IAAX,CAAgB,UAAA0zB,GAAG;EAAA,iBAAIA,GAAG,CAACE,IAAJ,EAAJ;EAAA,SAAnB,EACF5zB,IADE,CACGmmB,IADH,EACSnmB,IADT,CACcgvB,OADd,WAC6B,UAACtwB,CAAD,EAAO;EACnCg/B,UAAAA,SAAS,CAACh/B,CAAD,CAAT;EACAswB,UAAAA,OAAO;EACV,SAJE,CAAP;EAKH,OAND,MAMO;EACH,eAAO7I,IAAI,CAAC0X,MAAM,CAACG,SAAR,CAAJ,CAAuBh+B,IAAvB,CAA4BgvB,OAA5B,WAA2C,UAACtwB,CAAD,EAAO;EACrDg/B,UAAAA,SAAS,CAACh/B,CAAD,CAAT;EACAswB,UAAAA,OAAO;EACV,SAHM,CAAP;EAIH;EACJ,KAdM,CAAP;EAeH;;EAED,WAASne,IAAT,GAAgB;EACZ,WAAO,IAAI1D,OAAJ,CAAY,UAAS6hB,OAAT,EAAkB;EACjC,UAAIiP,OAAO,GAAGhxB,KAAK,CAACqa,IAAN,CAAWnpB,QAAQ,CAAC+/B,gBAAT,CAA0B,QAA1B,CAAX,CAAd;EACA,aAAQ,SAASrtB,IAAT,GAAgB;EACpB,YAAIgtB,MAAM,GAAGI,OAAO,CAACjmB,KAAR,EAAb;;EACA,YAAI,CAAC6lB,MAAL,EAAa;EACT7O,UAAAA,OAAO;EACV,SAFD,MAEO;EACH,cAAIrwB,IAAI,GAAGk/B,MAAM,CAACE,YAAP,CAAoB,MAApB,CAAX;;EACA,cAAIJ,UAAU,CAACn6B,QAAX,CAAoB7E,IAApB,CAAJ,EAA+B;EAC3B,gBAAIw/B,cAAc,GAAGN,MAAM,CAACE,YAAP,CAAoB,WAApB,CAArB;;EACA,gBAAI,CAACH,WAAD,IAAgB,OAAOO,cAAP,KAA0B,QAA9C,EAAwD;EACpD,qBAAOrD,SAAS,CAACqD,cAAD,CAAT,CAA0Bn+B,IAA1B,CAA+B,YAAW;EAC7C,uBAAOizB,IAAI,CAAC4K,MAAD,CAAX;EAGH,eAJM,EAIJ79B,IAJI,CAIC6Q,IAJD,CAAP;EAKH,aAND,MAMO;EACH,qBAAOoiB,IAAI,CAAC4K,MAAD,CAAJ,CAEJ79B,IAFI,CAEC6Q,IAFD,CAAP;EAGH;EACJ,WAbD,MAaO,IAAIlS,IAAI,IAAIA,IAAI,CAACwE,KAAL,CAAW,WAAX,CAAZ,EAAqC;EACxCrD,YAAAA,OAAO,CAACs+B,IAAR,CAAa,eAAeT,UAAU,CAAC37B,IAAX,CAAgB,MAAhB,CAAf,GACA,SADA,GACYrD,IADzB;EAEH;;EACD,iBAAOkS,IAAI,EAAX;EACH;EACJ,OAzBM,EAAP;EA0BH,KA5BM,CAAP;EA6BH;;EACD,MAAI,CAAC4nB,MAAM,CAACt6B,QAAZ,EAAsB;EAClB,WAAOgP,OAAO,CAAC6hB,OAAR,EAAP;EACH,GAFD,MAEO,IAAIqP,aAAJ,EAAmB;EACtB,QAAIR,MAAM,GAAGQ,aAAb;EACA,QAAIF,cAAc,GAAGN,MAAM,CAACE,YAAP,CAAoB,WAApB,CAArB;;EACA,QAAI,OAAOI,cAAP,KAA0B,QAA9B,EAAwC;EACpC,aAAOrD,SAAS,CAACqD,cAAD,CAAT,CAA0Bn+B,IAA1B,CAA+B,YAAW;EAC7C49B,QAAAA,WAAW,GAAG,IAAd;EACA,eAAO/sB,IAAI,EAAX;EACH,OAHM,CAAP;EAIH;EACJ;;EACD,SAAOA,IAAI,EAAX;EACH;;;EAED,IAAMwtB,aAAa,GAAG,OAAO5F,MAAP,KAAkB,WAAlB,IAChBA,MAAM,CAACt6B,QADS,IACGA,QAAQ,CAACkgC,aADlC;;EAGA,IAAI,OAAO5F,MAAP,KAAkB,WAAtB,EAAmC;EAC/B56B,EAAAA,aAAa,CAAC46B,MAAD,EAAS77B,IAAT,CAAb;EACH;;;EAED,IAAI0hC,MAAM,GAAI,YAAW;EACrB;EACA;EACA;EACA;EACA,MAAIC,IAAI,GAAGv3B,OAAO,CAAC,UAAD,CAAP,CAAoB9C,OAApB,EAAX;;EACA,MAAIs6B,KAAK,GAAGD,IAAI,KAAK,OAAO,QAAhB,GAA2B,IAAIE,IAAJ,EAA3B,GAAwC,IAAIA,IAAJ,CAASF,IAAT,CAApD;;EACA,MAAIG,OAAO,GAAG,SAAVA,OAAU,CAAAv/B,CAAC;EAAA,WAAIA,CAAC,CAACrC,QAAF,GAAaiK,QAAb,CAAsB,CAAtB,EAAyB,GAAzB,CAAJ;EAAA,GAAf;;EACA,MAAI43B,KAAK,GAAGH,KAAK,CAACI,WAAN,EAAZ;;EACA,MAAIC,MAAM,GAAG,CACTF,KADS,EAETD,OAAO,CAACF,KAAK,CAACM,QAAN,KAAmB,CAApB,CAFE,EAGTJ,OAAO,CAACF,KAAK,CAACO,OAAN,EAAD,CAHE,EAIX/8B,IAJW,CAIN,GAJM,CAAb;;EAKA,MAAIs8B,MAAM,GAAG,6RAQWO,MARX,yDASIF,KATJ,iSAeft7B,OAfe,CAeP,OAfO,EAeE,EAfF,CAAb;EAgBA,SAAOi7B,MAAP;EACH,CA/BY,EAAb;EAiCA;EACA;;;EACAjyB,SAAS,CAAC4M,KAAD,EAAQ,WAAR,EAAqB,OAArB,CAAT;EACA5M,SAAS,CAACwH,IAAD,EAAO,WAAP,EAAoB,MAApB,CAAT;EACAxH,SAAS,CAACwO,GAAD,EAAM,WAAN,EAAmB,KAAnB,CAAT;EACAxO,SAAS,CAACkL,OAAD,EAAU,WAAV,EAAuB,SAAvB,CAAT;EACAlL,SAAS,CAACsL,SAAD,EAAY,WAAZ,EAAyB,WAAzB,CAAT;EACAtL,SAAS,CAACyI,KAAD,EAAQ,WAAR,EAAqB,OAArB,CAAT;EACAzI,SAAS,CAAC4U,MAAD,EAAS,WAAT,EAAsB,QAAtB,CAAT;EACA5U,SAAS,CAAC0R,WAAD,EAAc,WAAd,EAA2B,aAA3B,CAAT;EACA1R,SAAS,CAACwR,SAAD,EAAY,WAAZ,EAAyB,YAAzB,CAAT;EACAxR,SAAS,CAACyR,UAAD,EAAa,WAAb,EAA0B,aAA1B,CAAT;EACAzR,SAAS,CAAC+hB,kBAAD,EAAqB,WAArB,EAAkC,aAAlC,CAAT;EACA/hB,SAAS,CAACoiB,gBAAD,EAAmB,WAAnB,EAAgC,oBAAhC,CAAT;EACApiB,SAAS,CAAC8iB,eAAD,EAAkB,WAAlB,EAA+B,mBAA/B,CAAT;EACA9iB,SAAS,CAAC+jB,aAAD,EAAgB,WAAhB,EAA6B,iBAA7B,CAAT;EACA/jB,SAAS,CAACsiB,cAAD,EAAiB,WAAjB,EAA8B,kBAA9B,CAAT;EACAtiB,SAAS,CAAC+kB,SAAD,EAAY,WAAZ,EAAyB,YAAzB,CAAT;EACA,CAACptB,OAAD,EAAU4B,QAAV,EAAoB7B,SAApB,EAA+BK,MAA/B,EAAuCskB,WAAvC,EAAoDxnB,OAApD,CAA4D,UAAAwc,GAAG,EAAI;EAC/DrR,EAAAA,SAAS,CAACqR,GAAD,EAAM,WAAN,EAAmB,QAAnB,CAAT;EACH,CAFD;EAGArR,SAAS,CAAC1H,UAAD,EAAa,WAAb,EAA0B,WAA1B,CAAT;EACA0H,SAAS,CAAC7E,OAAD,EAAU,WAAV,EAAuB,QAAvB,CAAT;EACA6E,SAAS,CAACrF,OAAD,EAAU,WAAV,EAAuB,QAAvB,CAAT;EACAqF,SAAS,CAACR,aAAD,EAAgB,WAAhB,EAA6B,SAA7B,CAAT;;MAEM4L,IAAI,GAAG;EACTojB,EAAAA,OAAO,EAAE,SADA;EAETyD,EAAAA,MAAM,EAANA,MAFS;EAGTC,EAAAA,IAAI,EAAE,UAHG;EAITpY,EAAAA,IAAI,EAAJA,IAJS;EAKT;EACAtiB,EAAAA,KAAK,EAAE+iB,OAAO,CAACzQ,eAAD,EAAkBtS,KAAlB,CANL;EAOT+F,EAAAA,QAAQ,EAARA,QAPS;EAQToK,EAAAA,QAAQ,EAARA,SARS;EAST0lB,EAAAA,OAAO,EAAPA,OATS;EAWTruB,EAAAA,SAAS,EAATA,SAXS;EAYTooB,EAAAA,WAAW,EAAXA,WAZS;EAcT4J,EAAAA,aAAa,EAAbA,aAdS;EAeT7J,EAAAA,eAAe,EAAfA,eAfS;EAiBTsH,EAAAA,SAAS,EAATA,SAjBS;EAmBT/c,EAAAA,WAAW,EAAXA,WAnBS;EAoBThL,EAAAA,GAAG,EAAE9S,QApBI;EAsBTy6B,EAAAA,MAAM,EAANA,MAtBS;EAwBT/J,EAAAA,WAAW,EAAXA,WAxBS;EAyBTqO,EAAAA,oBAAoB,EAAElmB,QAzBb;EA0BTmmB,EAAAA,mBAAmB,EAAEnmB,QA1BZ;EA2BTA,EAAAA,QAAQ,EAARA,QA3BS;EA6BThE,EAAAA,KAAK,EAALA,KA7BS;EA8BTmM,EAAAA,MAAM,EAANA,MA9BS;EA+BTpN,EAAAA,IAAI,EAAJA,IA/BS;EAgCT+J,EAAAA,MAAM,EAANA,MAhCS;EAiCT/R,EAAAA,aAAa,EAAbA,aAjCS;EAkCTjH,EAAAA,KAAK,EAAEwsB,SAlCE;EAoCTlmB,EAAAA,KAAK,EAALA,KApCS;EAsCT2S,EAAAA,SAAS,EAATA,SAtCS;EAuCTC,EAAAA,UAAU,EAAVA,UAvCS;EAwCTsQ,EAAAA,kBAAkB,EAAlBA,kBAxCS;EAyCTgC,EAAAA,aAAa,EAAbA,aAzCS;EA0CTzB,EAAAA,cAAc,EAAdA,cA1CS;EA2CTQ,EAAAA,eAAe,EAAfA,eA3CS;EA4CTV,EAAAA,gBAAgB,EAAhBA,gBA5CS;EA6CTW,EAAAA,mBAAmB,EAAnBA,mBA7CS;EA8CTU,EAAAA,oBAAoB,EAApBA,oBA9CS;EA+CTQ,EAAAA,mBAAmB,EAAnBA,mBA/CS;EAgDTC,EAAAA,oBAAoB,EAApBA,oBAhDS;EAkDT5Y,EAAAA,SAAS,EAATA,SAlDS;EAmDT7E,EAAAA,MAAM,EAANA,MAnDS;EAoDTnK,EAAAA,KAAK,EAALA,KApDS;EAqDTd,EAAAA,QAAQ,EAARA,QArDS;EAsDTmU,EAAAA,IAAI,EAAJA,IAtDS;EAuDTvI,EAAAA,GAAG,EAAHA,IAvDS;EAwDT1K,EAAAA,GAAG,EAAHA,GAxDS;EA0DTvB,EAAAA,OAAO,EAAPA,OA1DS;EA2DTxD,EAAAA,OAAO,EAAPA,OA3DS;EA4DTI,EAAAA,MAAM,EAANA,MA5DS;EA6DTwB,EAAAA,QAAQ,EAARA,QA7DS;EA8DT7B,EAAAA,SAAS,EAATA,SA9DS;EA+DT2kB,EAAAA,WAAW,EAAXA,WA/DS;EAgET/jB,EAAAA,UAAU,EAAVA,UAhES;EAiETqC,EAAAA,OAAO,EAAPA,OAjES;EAkETslB,EAAAA,WAAW,EAAXA;EAlES;EAsEb5sB,UAAU,CAACsP,GAAX,CAAe,MAAf,EAAuByI,IAAvB;;ACnyUA,cAAe,EAAE;;;;;;;ECAjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA,SAAS,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE;EAC/C;EACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;EACb,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;EAC9C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;EACxB,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE;EACtB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzB,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;EAC9B,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzB,MAAM,EAAE,EAAE,CAAC;EACX,KAAK,MAAM,IAAI,EAAE,EAAE;EACnB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACzB,MAAM,EAAE,EAAE,CAAC;EACX,KAAK;EACL,GAAG;AACH;EACA;EACA,EAAE,IAAI,cAAc,EAAE;EACtB,IAAI,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;EACrB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;EAC1B,KAAK;EACL,GAAG;AACH;EACA,EAAE,OAAO,KAAK,CAAC;EACf,CAAC;AACD;EACA;EACA;EACA,IAAI,WAAW;EACf,IAAI,+DAA+D,CAAC;EACpE,IAAI,SAAS,GAAG,SAAS,QAAQ,EAAE;EACnC,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC7C,CAAC,CAAC;AACF;EACA;EACA;EACO,SAAS,OAAO,GAAG;EAC1B,EAAE,IAAI,YAAY,GAAG,EAAE;EACvB,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B;EACA,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE;EACxE,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7C;EACA;EACA,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;EAClC,MAAM,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;EACvE,KAAK,MAAM,IAAI,CAAC,IAAI,EAAE;EACtB,MAAM,SAAS;EACf,KAAK;AACL;EACA,IAAI,YAAY,GAAG,IAAI,GAAG,GAAG,GAAG,YAAY,CAAC;EAC7C,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAC9C,GAAG;AACH;EACA;EACA;AACA;EACA;EACA,EAAE,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE;EAC5E,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACf,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC;EACA,EAAE,OAAO,CAAC,CAAC,gBAAgB,GAAG,GAAG,GAAG,EAAE,IAAI,YAAY,KAAK,GAAG,CAAC;EAC/D,CACA;EACA;EACA;EACO,SAAS,SAAS,CAAC,IAAI,EAAE;EAChC,EAAE,IAAI,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC;EACvC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AAC/C;EACA;EACA,EAAE,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE;EAC5D,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;EACf,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC;EACA,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;EAChC,IAAI,IAAI,GAAG,GAAG,CAAC;EACf,GAAG;EACH,EAAE,IAAI,IAAI,IAAI,aAAa,EAAE;EAC7B,IAAI,IAAI,IAAI,GAAG,CAAC;EAChB,GAAG;AACH;EACA,EAAE,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC;EAC5C,CACA;EACA;EACO,SAAS,UAAU,CAAC,IAAI,EAAE;EACjC,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAChC,CAAC;AACD;EACA;EACO,SAAS,IAAI,GAAG;EACvB,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;EACvD,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE;EACpD,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;EAC/B,MAAM,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;EACpE,KAAK;EACL,IAAI,OAAO,CAAC,CAAC;EACb,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;EAChB,CAAC;AACD;AACA;EACA;EACA;EACO,SAAS,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE;EACnC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACjC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B;EACA,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE;EACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;EAClB,IAAI,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;EACxC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM;EACnC,KAAK;AACL;EACA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;EAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE;EAC5B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM;EACjC,KAAK;AACL;EACA,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;EAC/B,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;EAC7C,GAAG;AACH;EACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;EACxC,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC;EACA,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;EAC1D,EAAE,IAAI,eAAe,GAAG,MAAM,CAAC;EAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;EACnC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;EACrC,MAAM,eAAe,GAAG,CAAC,CAAC;EAC1B,MAAM,MAAM;EACZ,KAAK;EACL,GAAG;AACH;EACA,EAAE,IAAI,WAAW,GAAG,EAAE,CAAC;EACvB,EAAE,KAAK,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC3D,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3B,GAAG;AACH;EACA,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AACnE;EACA,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC/B,CAAC;AACD;EACO,IAAI,GAAG,GAAG,GAAG,CAAC;EACd,IAAI,SAAS,GAAG,GAAG,CAAC;AAC3B;EACO,SAAS,OAAO,CAAC,IAAI,EAAE;EAC9B,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;EAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;EACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB;EACA,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;EACrB;EACA,IAAI,OAAO,GAAG,CAAC;EACf,GAAG;AACH;EACA,EAAE,IAAI,GAAG,EAAE;EACX;EACA,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;EACxC,GAAG;AACH;EACA,EAAE,OAAO,IAAI,GAAG,GAAG,CAAC;EACpB,CAAC;AACD;EACO,SAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;EACpC,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7B;EACA,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;EAChD,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;EAC3C,GAAG;EACH,EAAE,OAAO,CAAC,CAAC;EACX,CAAC;AACD;AACA;EACO,SAAS,OAAO,CAAC,IAAI,EAAE;EAC9B,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EAC5B,CAAC;AACD,aAAe;EACf,EAAE,OAAO,EAAE,OAAO;EAClB,EAAE,QAAQ,EAAE,QAAQ;EACpB,EAAE,OAAO,EAAE,OAAO;EAClB,EAAE,GAAG,EAAE,GAAG;EACV,EAAE,SAAS,EAAE,SAAS;EACtB,EAAE,QAAQ,EAAE,QAAQ;EACpB,EAAE,IAAI,EAAE,IAAI;EACZ,EAAE,UAAU,EAAE,UAAU;EACxB,EAAE,SAAS,EAAE,SAAS;EACtB,EAAE,OAAO,EAAE,OAAO;EAClB,CAAC,CAAC;EACF,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE;EACxB,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;EACvC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;EACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EACxC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAC7C,KAAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,CAAC;AACD;EACA;EACA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;EACpC,IAAI,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;EAChE,IAAI,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EAC/B,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;EAClD,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;EACtC,KAAK;EACL;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"lips.js","sources":["../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/asyncIterator.js","../node_modules/@babel/runtime/helpers/esm/AwaitValue.js","../node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","../node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../node_modules/cbor-x/decode.js","../node_modules/cbor-x/encode.js","../node_modules/lzjb-pack/index.cjs","../node_modules/unfetch/dist/unfetch.module.js","../src/lips.js","../node_modules/rollup-plugin-node-polyfills/polyfills/empty.js","../node_modules/rollup-plugin-node-polyfills/polyfills/path.js"],"sourcesContent":["export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];\n if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];\n }\n\n if (method == null) method = iterable[\"@@asyncIterator\"];\n if (method == null) method = iterable[\"@@iterator\"];\n if (method == null) throw new TypeError(\"Object is not async iterable\");\n return method.call(iterable);\n}","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function _awaitAsyncGenerator(value) {\n return new AwaitValue(value);\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nAsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator.js\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = require(\"regenerator-runtime\");\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return ''\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same licence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","\"use strict\"\r\nlet decoder\r\ntry {\r\n\tdecoder = new TextDecoder()\r\n} catch(error) {}\r\nlet src\r\nlet srcEnd\r\nlet position = 0\r\nlet alreadySet\r\nconst EMPTY_ARRAY = []\r\nconst RECORD_TAG_ID = 0x69\r\nconst STOP_CODE = {}\r\nlet strings = EMPTY_ARRAY\r\nlet stringPosition = 0\r\nlet currentDecoder = {}\r\nlet currentStructures\r\nlet srcString\r\nlet srcStringStart = 0\r\nlet srcStringEnd = 0\r\nlet referenceMap\r\nlet currentExtensions = []\r\nlet dataView\r\nlet restoreMapsAsObject\r\nlet defaultOptions = {\r\n\tuseRecords: false,\r\n\tmapsAsObjects: true\r\n}\r\nlet sequentialMode = false\r\n\r\nexport class Decoder {\r\n\tconstructor(options) {\r\n\t\tif (options) {\r\n\t\t\tif (options.useRecords === false && options.mapsAsObjects === undefined)\r\n\t\t\t\toptions.mapsAsObjects = true\r\n\t\t\tif (options.getStructures && !options.structures)\r\n\t\t\t\t(options.structures = []).uninitialized = true // this is what we use to denote an uninitialized structures\r\n\t\t}\r\n\t\tObject.assign(this, options)\r\n\t}\r\n\tdecode(source, end) {\r\n\t\tif (src) {\r\n\t\t\t// re-entrant execution, save the state and restore it after we do this decode\r\n\t\t\treturn saveState(() => {\r\n\t\t\t\tclearSource()\r\n\t\t\t\treturn this ? this.decode(source, end) : Decoder.prototype.decode.call(defaultOptions, source, end)\r\n\t\t\t})\r\n\t\t}\r\n\t\tsrcEnd = end > -1 ? end : source.length\r\n\t\tposition = 0\r\n\t\tstringPosition = 0\r\n\t\tsrcStringEnd = 0\r\n\t\tsrcString = null\r\n\t\tstrings = EMPTY_ARRAY\r\n\t\tsrc = source\r\n\t\t// this provides cached access to the data view for a buffer if it is getting reused, which is a recommend\r\n\t\t// technique for getting data from a database where it can be copied into an existing buffer instead of creating\r\n\t\t// new ones\r\n\t\tdataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength))\r\n\t\tif (this) {\r\n\t\t\tcurrentDecoder = this\r\n\t\t\tif (this.structures) {\r\n\t\t\t\tcurrentStructures = this.structures\r\n\t\t\t\treturn checkedRead()\r\n\t\t\t} else if (!currentStructures || currentStructures.length > 0) {\r\n\t\t\t\tcurrentStructures = []\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcurrentDecoder = defaultOptions\r\n\t\t\tif (!currentStructures || currentStructures.length > 0)\r\n\t\t\t\tcurrentStructures = []\r\n\t\t}\r\n\t\treturn checkedRead()\r\n\t}\r\n\tdecodeMultiple(source, forEach) {\r\n\t\tlet values, lastPosition = 0\r\n\t\ttry {\r\n\t\t\tlet size = source.length\r\n\t\t\tsequentialMode = true\r\n\t\t\tlet value = this ? this.decode(source, size) : defaultDecoder.decode(source, size)\r\n\t\t\tif (forEach) {\r\n\t\t\t\tforEach(value)\r\n\t\t\t\twhile(position < size) {\r\n\t\t\t\t\tlastPosition = position\r\n\t\t\t\t\tif (forEach(checkedRead()) === false) {\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalues = [ value ]\r\n\t\t\t\twhile(position < size) {\r\n\t\t\t\t\tlastPosition = position\r\n\t\t\t\t\tvalues.push(checkedRead())\r\n\t\t\t\t}\r\n\t\t\t\treturn values\r\n\t\t\t}\r\n\t\t} catch(error) {\r\n\t\t\terror.lastPosition = lastPosition\r\n\t\t\terror.values = values\r\n\t\t\tthrow error\r\n\t\t} finally {\r\n\t\t\tsequentialMode = false\r\n\t\t\tclearSource()\r\n\t\t}\r\n\t}\r\n}\r\nexport function getPosition() {\r\n\treturn position\r\n}\r\nexport function checkedRead() {\r\n\ttry {\r\n\t\tlet result = read()\r\n\t\tif (position == srcEnd) {\r\n\t\t\t// finished reading this source, cleanup references\r\n\t\t\tcurrentStructures = null\r\n\t\t\tsrc = null\r\n\t\t\tif (referenceMap)\r\n\t\t\t\treferenceMap = null\r\n\t\t} else if (position > srcEnd) {\r\n\t\t\t// over read\r\n\t\t\tlet error = new Error('Unexpected end of CBOR data')\r\n\t\t\terror.incomplete = true\r\n\t\t\tthrow error\r\n\t\t} else if (!sequentialMode) {\r\n\t\t\tthrow new Error('Data read, but end of buffer not reached')\r\n\t\t}\r\n\t\t// else more to read, but we are reading sequentially, so don't clear source yet\r\n\t\treturn result\r\n\t} catch(error) {\r\n\t\tclearSource()\r\n\t\tif (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) {\r\n\t\t\terror.incomplete = true\r\n\t\t}\r\n\t\tthrow error\r\n\t}\r\n}\r\n\r\nexport function read() {\r\n\tlet token = src[position++]\r\n\tlet majorType = token >> 5\r\n\ttoken = token & 0x1f\r\n\tif (token > 0x17) {\r\n\t\tswitch (token) {\r\n\t\t\tcase 0x18:\r\n\t\t\t\ttoken = src[position++]\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x19:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\treturn getFloat16()\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint16(position)\r\n\t\t\t\tposition += 2\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1a:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat32(position)\r\n\t\t\t\t\tif (currentDecoder.useFloat32 > 2) {\r\n\t\t\t\t\t\t// this does rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\tlet multiplier = mult10[((src[position] & 0x7f) << 1) | (src[position + 1] >> 7)]\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\treturn ((multiplier * value + (value > 0 ? 0.5 : -0.5)) >> 0) / multiplier\r\n\t\t\t\t\t}\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\ttoken = dataView.getUint32(position)\r\n\t\t\t\tposition += 4\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1b:\r\n\t\t\t\tif (majorType == 7) {\r\n\t\t\t\t\tlet value = dataView.getFloat64(position)\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t\treturn value\r\n\t\t\t\t}\r\n\t\t\t\tif (currentDecoder.uint64AsNumber)\r\n\t\t\t\t\treturn src[position++] * 0x100000000000000 + src[position++] * 0x1000000000000 + src[position++] * 0x10000000000 + src[position++] * 0x100000000 +\r\n\t\t\t\t\t\tsrc[position++] * 0x1000000 + (src[position++] << 16) + (src[position++] << 8) + src[position++]\r\n\t\t\t\ttoken = dataView.getBigUint64(position)\r\n\t\t\t\tposition += 8\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1f: \r\n\t\t\t\t// indefinite length\r\n\t\t\t\tswitch(majorType) {\r\n\t\t\t\t\tcase 2: // byte string\r\n\t\t\t\t\tcase 3: // text string\r\n\t\t\t\t\tcase 4: // array\r\n\t\t\t\t\t\tlet array = []\r\n\t\t\t\t\t\tlet value, i = 0\r\n\t\t\t\t\t\twhile ((value = read()) != STOP_CODE) {\r\n\t\t\t\t\t\t\tarray[i++] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn majorType == 4 ? array : majorType == 3 ? array.join('') : Buffer.concat(array)\r\n\t\t\t\t\tcase 5: // map\r\n\t\t\t\t\t\tlet key\r\n\t\t\t\t\t\tif (currentDecoder.mapsAsObjects) {\r\n\t\t\t\t\t\t\tlet object = {}\r\n\t\t\t\t\t\t\twhile ((key = readKey()) != STOP_CODE)\r\n\t\t\t\t\t\t\t\tobject[key] = read()\r\n\t\t\t\t\t\t\treturn object\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (restoreMapsAsObject) {\r\n\t\t\t\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\r\n\t\t\t\t\t\t\t\trestoreMapsAsObject = false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlet map = new Map()\r\n\t\t\t\t\t\t\twhile ((key = read()) != STOP_CODE)\r\n\t\t\t\t\t\t\t\tmap.set(key, read())\r\n\t\t\t\t\t\t\treturn map\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\tcase 7:\r\n\t\t\t\t\t\treturn STOP_CODE\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tthrow new Error('Invalid major type for indefinite length ' + majorType)\r\n\t\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t}\r\n\t}\r\n\tswitch (majorType) {\r\n\t\tcase 0: // positive int\r\n\t\t\treturn token\r\n\t\tcase 1: // negative int\r\n\t\t\treturn ~token\r\n\t\tcase 2: // buffer\r\n\t\t\treturn readBin(token)\r\n\t\tcase 3: // string\r\n\t\t\tif (srcStringEnd >= position) {\r\n\t\t\t\treturn srcString.slice(position - srcStringStart, (position += token) - srcStringStart)\r\n\t\t\t}\r\n\t\t\tif (srcStringEnd == 0 && srcEnd < 140 && token < 32) {\r\n\t\t\t\t// for small blocks, avoiding the overhead of the extract call is helpful\r\n\t\t\t\tlet string = token < 16 ? shortStringInJS(token) : longStringInJS(token)\r\n\t\t\t\tif (string != null)\r\n\t\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\treturn readFixedString(token)\r\n\t\tcase 4: // array\r\n\t\t\tlet array = new Array(token)\r\n\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\tarray[i] = read()\r\n\t\t\t}\r\n\t\t\treturn array\r\n\t\tcase 5: // map\r\n\t\t\tif (currentDecoder.mapsAsObjects) {\r\n\t\t\t\tlet object = {}\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tobject[readKey()] = read()\r\n\t\t\t\t}\r\n\t\t\t\treturn object\r\n\t\t\t} else {\r\n\t\t\t\tif (restoreMapsAsObject) {\r\n\t\t\t\t\tcurrentDecoder.mapsAsObjects = true\r\n\t\t\t\t\trestoreMapsAsObject = false\r\n\t\t\t\t}\r\n\t\t\t\tlet map = new Map()\r\n\t\t\t\tfor (let i = 0; i < token; i++) {\r\n\t\t\t\t\tmap.set(read(), read())\r\n\t\t\t\t}\r\n\t\t\t\treturn map\r\n\t\t\t}\r\n\t\tcase 6: // extension\r\n\t\t\tif ((token >> 8) == RECORD_TAG_ID) { // record structures\r\n\t\t\t\tlet structure = currentStructures[token & 0xff]\r\n\t\t\t\tif (structure) {\r\n\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\treturn structure.read()\r\n\t\t\t\t} else if (currentDecoder.getStructures) {\r\n\t\t\t\t\tlet updatedStructures = saveState(() => {\r\n\t\t\t\t\t\t// save the state in case getStructures modifies our buffer\r\n\t\t\t\t\t\tsrc = null\r\n\t\t\t\t\t\treturn currentDecoder.getStructures()\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (currentStructures === true)\r\n\t\t\t\t\t\tcurrentDecoder.structures = currentStructures = updatedStructures\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tcurrentStructures.splice.apply(currentStructures, [0, updatedStructures.length].concat(updatedStructures))\r\n\t\t\t\t\tstructure = currentStructures[token & 0xff]\r\n\t\t\t\t\tif (structure) {\r\n\t\t\t\t\t\tif (!structure.read)\r\n\t\t\t\t\t\t\tstructure.read = createStructureReader(structure)\r\n\t\t\t\t\t\treturn structure.read()\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\treturn token\r\n\t\t\t\t} else\r\n\t\t\t\t\treturn token\r\n\t\t\t} else {\r\n\t\t\t\tlet extension = currentExtensions[token]\r\n\t\t\t\tif (extension) {\r\n\t\t\t\t\tif (extension.handlesRead)\r\n\t\t\t\t\t\treturn extension(read)\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn extension(read())\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\treturn new Tag(read())\r\n\t\t\t}\r\n\t\tcase 7: // fixed value\r\n\t\t\tswitch (token) {\r\n\t\t\t\tcase 0x14: return false\r\n\t\t\t\tcase 0x15: return true\r\n\t\t\t\tcase 0x16: return null\r\n\t\t\t\tcase 0x17: return; // undefined\r\n\t\t\t\tcase 0x1f: \r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error('Unknown token ' + token)\r\n\t\t\t}\r\n\t\tdefault: // negative int\r\n\t\t\tif (isNaN(token)) {\r\n\t\t\t\tlet error = new Error('Unexpected end of CBOR data')\r\n\t\t\t\terror.incomplete = true\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t\tthrow new Error('Unknown CBOR token ' + token)\r\n\t}\r\n}\r\nconst validName = /^[a-zA-Z_$][a-zA-Z\\d_$]*$/\r\nfunction createStructureReader(structure) {\r\n\tlet l = structure.length\r\n\tfunction readObject() {\r\n\t\t// This initial function is quick to instantiate, but runs slower. After several iterations pay the cost to build the faster function\r\n\t\tif (readObject.count++ > 2) {\r\n\t\t\tthis.read = (new Function('a', 'r', 'return function(){a();return {' + structure.map(key => validName.test(key) ? key + ':r()' : ('[' + JSON.stringify(key) + ']:r()')).join(',') + '}}'))(readArrayHeader, read)\r\n\t\t\treturn this.read()\r\n\t\t}\r\n\t\treadArrayHeader(l)\r\n\t\tlet object = {}\r\n\t\tfor (let i = 0; i < l; i++) {\r\n\t\t\tlet key = structure[i]\r\n\t\t\tobject[key] = read()\r\n\t\t}\r\n\t\treturn object\r\n\t}\r\n\treadObject.count = 0\r\n\treturn readObject\r\n}\r\n\r\nfunction readArrayHeader(expectedLength) {\r\n\t// consume the array header, TODO: check expected length\r\n\tlet token = src[position++]\r\n\t//let majorType = token >> 5\r\n\ttoken = token & 0x1f\r\n\tif (token > 0x17) {\r\n\t\tswitch (token) {\r\n\t\t\tcase 0x18: position++\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x19: position += 2\r\n\t\t\t\tbreak\r\n\t\t\tcase 0x1a: position += 4\r\n\t\t}\r\n\t}\r\n}\r\n\r\nlet readFixedString = readStringJS\r\nlet readString8 = readStringJS\r\nlet readString16 = readStringJS\r\nlet readString32 = readStringJS\r\n\r\nexport function setExtractor(extractStrings) {\r\n\treadFixedString = readString(1)\r\n\treadString8 = readString(2)\r\n\treadString16 = readString(3)\r\n\treadString32 = readString(5)\r\n\tfunction readString(headerLength) {\r\n\t\treturn function readString(length) {\r\n\t\t\tlet string = strings[stringPosition++]\r\n\t\t\tif (string == null) {\r\n\t\t\t\tlet extraction = extractStrings(position, srcEnd, length, src)\r\n\t\t\t\tif (typeof extraction == 'string') {\r\n\t\t\t\t\tstring = extraction\r\n\t\t\t\t\tstrings = EMPTY_ARRAY\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstrings = extraction\r\n\t\t\t\t\tstringPosition = 1\r\n\t\t\t\t\tsrcStringEnd = 1 // even if a utf-8 string was decoded, must indicate we are in the midst of extracted strings and can't skip strings\r\n\t\t\t\t\tstring = strings[0]\r\n\t\t\t\t\tif (string === undefined)\r\n\t\t\t\t\t\tthrow new Error('Unexpected end of buffer')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet srcStringLength = string.length\r\n\t\t\tif (srcStringLength <= length) {\r\n\t\t\t\tposition += length\r\n\t\t\t\treturn string\r\n\t\t\t}\r\n\t\t\tsrcString = string\r\n\t\t\tsrcStringStart = position\r\n\t\t\tsrcStringEnd = position + srcStringLength\r\n\t\t\tposition += length\r\n\t\t\treturn string.slice(0, length) // we know we just want the beginning\r\n\t\t}\r\n\t}\r\n}\r\nfunction readStringJS(length) {\r\n\tlet result\r\n\tif (length < 16) {\r\n\t\tif (result = shortStringInJS(length))\r\n\t\t\treturn result\r\n\t}\r\n\tif (length > 64 && decoder)\r\n\t\treturn decoder.decode(src.subarray(position, position += length))\r\n\tconst end = position + length\r\n\tconst units = []\r\n\tresult = ''\r\n\twhile (position < end) {\r\n\t\tconst byte1 = src[position++]\r\n\t\tif ((byte1 & 0x80) === 0) {\r\n\t\t\t// 1 byte\r\n\t\t\tunits.push(byte1)\r\n\t\t} else if ((byte1 & 0xe0) === 0xc0) {\r\n\t\t\t// 2 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 6) | byte2)\r\n\t\t} else if ((byte1 & 0xf0) === 0xe0) {\r\n\t\t\t// 3 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tunits.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3)\r\n\t\t} else if ((byte1 & 0xf8) === 0xf0) {\r\n\t\t\t// 4 bytes\r\n\t\t\tconst byte2 = src[position++] & 0x3f\r\n\t\t\tconst byte3 = src[position++] & 0x3f\r\n\t\t\tconst byte4 = src[position++] & 0x3f\r\n\t\t\tlet unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4\r\n\t\t\tif (unit > 0xffff) {\r\n\t\t\t\tunit -= 0x10000\r\n\t\t\t\tunits.push(((unit >>> 10) & 0x3ff) | 0xd800)\r\n\t\t\t\tunit = 0xdc00 | (unit & 0x3ff)\r\n\t\t\t}\r\n\t\t\tunits.push(unit)\r\n\t\t} else {\r\n\t\t\tunits.push(byte1)\r\n\t\t}\r\n\r\n\t\tif (units.length >= 0x1000) {\r\n\t\t\tresult += fromCharCode.apply(String, units)\r\n\t\t\tunits.length = 0\r\n\t\t}\r\n\t}\r\n\r\n\tif (units.length > 0) {\r\n\t\tresult += fromCharCode.apply(String, units)\r\n\t}\r\n\r\n\treturn result\r\n}\r\nlet fromCharCode = String.fromCharCode\r\nfunction longStringInJS(length) {\r\n\tlet start = position\r\n\tlet bytes = new Array(length)\r\n\tfor (let i = 0; i < length; i++) {\r\n\t\tconst byte = src[position++];\r\n\t\tif ((byte & 0x80) > 0) {\r\n\t\t\tposition = start\r\n \t\t\treturn\r\n \t\t}\r\n \t\tbytes[i] = byte\r\n \t}\r\n \treturn fromCharCode.apply(String, bytes)\r\n}\r\nfunction shortStringInJS(length) {\r\n\tif (length < 4) {\r\n\t\tif (length < 2) {\r\n\t\t\tif (length === 0)\r\n\t\t\t\treturn ''\r\n\t\t\telse {\r\n\t\t\t\tlet a = src[position++]\r\n\t\t\t\tif ((a & 0x80) > 1) {\r\n\t\t\t\t\tposition -= 1\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlet a = src[position++]\r\n\t\t\tlet b = src[position++]\r\n\t\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0) {\r\n\t\t\t\tposition -= 2\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 3)\r\n\t\t\t\treturn fromCharCode(a, b)\r\n\t\t\tlet c = src[position++]\r\n\t\t\tif ((c & 0x80) > 0) {\r\n\t\t\t\tposition -= 3\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c)\r\n\t\t}\r\n\t} else {\r\n\t\tlet a = src[position++]\r\n\t\tlet b = src[position++]\r\n\t\tlet c = src[position++]\r\n\t\tlet d = src[position++]\r\n\t\tif ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) {\r\n\t\t\tposition -= 4\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (length < 6) {\r\n\t\t\tif (length === 4)\r\n\t\t\t\treturn fromCharCode(a, b, c, d)\r\n\t\t\telse {\r\n\t\t\t\tlet e = src[position++]\r\n\t\t\t\tif ((e & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 5\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e)\r\n\t\t\t}\r\n\t\t} else if (length < 8) {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0) {\r\n\t\t\t\tposition -= 6\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 7)\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f)\r\n\t\t\tlet g = src[position++]\r\n\t\t\tif ((g & 0x80) > 0) {\r\n\t\t\t\tposition -= 7\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn fromCharCode(a, b, c, d, e, f, g)\r\n\t\t} else {\r\n\t\t\tlet e = src[position++]\r\n\t\t\tlet f = src[position++]\r\n\t\t\tlet g = src[position++]\r\n\t\t\tlet h = src[position++]\r\n\t\t\tif ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) {\r\n\t\t\t\tposition -= 8\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (length < 10) {\r\n\t\t\t\tif (length === 8)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h)\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet i = src[position++]\r\n\t\t\t\t\tif ((i & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 9\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i)\r\n\t\t\t\t}\r\n\t\t\t} else if (length < 12) {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 10\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 11)\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j)\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tif ((k & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 11\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k)\r\n\t\t\t} else {\r\n\t\t\t\tlet i = src[position++]\r\n\t\t\t\tlet j = src[position++]\r\n\t\t\t\tlet k = src[position++]\r\n\t\t\t\tlet l = src[position++]\r\n\t\t\t\tif ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) {\r\n\t\t\t\t\tposition -= 12\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tif (length < 14) {\r\n\t\t\t\t\tif (length === 12)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l)\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\t\tif ((m & 0x80) > 0) {\r\n\t\t\t\t\t\t\tposition -= 13\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m)\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet m = src[position++]\r\n\t\t\t\t\tlet n = src[position++]\r\n\t\t\t\t\tif ((m & 0x80) > 0 || (n & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 14\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (length < 15)\r\n\t\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n)\r\n\t\t\t\t\tlet o = src[position++]\r\n\t\t\t\t\tif ((o & 0x80) > 0) {\r\n\t\t\t\t\t\tposition -= 15\r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction readBin(length) {\r\n\treturn currentDecoder.copyBuffers ?\r\n\t\t// specifically use the copying slice (not the node one)\r\n\t\tUint8Array.prototype.slice.call(src, position, position += length) :\r\n\t\tsrc.subarray(position, position += length)\r\n}\r\nfunction readExt(length) {\r\n\tlet type = src[position++]\r\n\tif (currentExtensions[type]) {\r\n\t\treturn currentExtensions[type](src.subarray(position, position += length))\r\n\t}\r\n\telse\r\n\t\tthrow new Error('Unknown extension type ' + type)\r\n}\r\n\r\nfunction getFloat16() {\r\n\tlet byte0 = src[position++]\r\n\tlet byte1 = src[position++]\r\n\tlet half = (byte0 << 8) + byte1\r\n\tlet exp = (half >> 10) & 0x1f\r\n\tlet mant = half & 0x3ff\r\n\tlet val\r\n\tif (exp == 0) val = Math.exp(mant, -24)\r\n\telse if (exp != 31) val = Math.exp(mant + 1024, exp - 25)\r\n\telse val = mant == 0 ? Infinity : NaN\r\n\treturn half & 0x8000 ? -val : val\r\n}\r\n\r\nlet keyCache = new Array(4096)\r\nfunction readKey() {\r\n\tlet length = src[position++]\r\n\tif (length >= 0x60 && length < 0x78) {\r\n\t\t// fixstr, potentially use key cache\r\n\t\tlength = length - 0x60\r\n\t\tif (srcStringEnd >= position) // if it has been extracted, must use it (and faster anyway)\r\n\t\t\treturn srcString.slice(position - srcStringStart, (position += length) - srcStringStart)\r\n\t\telse if (!(srcStringEnd == 0 && srcEnd < 180))\r\n\t\t\treturn readFixedString(length)\r\n\t} else { // not cacheable, go back and do a standard read\r\n\t\tposition--\r\n\t\treturn read()\r\n\t}\r\n\tlet key = ((length << 5) ^ (length > 1 ? dataView.getUint16(position) : length > 0 ? src[position] : 0)) & 0xfff\r\n\tlet entry = keyCache[key]\r\n\tlet checkPosition = position\r\n\tlet end = position + length - 3\r\n\tlet chunk\r\n\tlet i = 0\r\n\tif (entry && entry.bytes == length) {\r\n\t\twhile (checkPosition < end) {\r\n\t\t\tchunk = dataView.getUint32(checkPosition)\r\n\t\t\tif (chunk != entry[i++]) {\r\n\t\t\t\tcheckPosition = 0x70000000\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\tcheckPosition += 4\r\n\t\t}\r\n\t\tend += 3\r\n\t\twhile (checkPosition < end) {\r\n\t\t\tchunk = src[checkPosition++]\r\n\t\t\tif (chunk != entry[i++]) {\r\n\t\t\t\tcheckPosition = 0x70000000\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (checkPosition === end) {\r\n\t\t\tposition = checkPosition\r\n\t\t\treturn entry.string\r\n\t\t}\r\n\t\tend -= 3\r\n\t\tcheckPosition = position\r\n\t}\r\n\tentry = []\r\n\tkeyCache[key] = entry\r\n\tentry.bytes = length\r\n\twhile (checkPosition < end) {\r\n\t\tchunk = dataView.getUint32(checkPosition)\r\n\t\tentry.push(chunk)\r\n\t\tcheckPosition += 4\r\n\t}\r\n\tend += 3\r\n\twhile (checkPosition < end) {\r\n\t\tchunk = src[checkPosition++]\r\n\t\tentry.push(chunk)\r\n\t}\r\n\t// for small blocks, avoiding the overhead of the extract call is helpful\r\n\tlet string = length < 16 ? shortStringInJS(length) : longStringInJS(length)\r\n\tif (string != null)\r\n\t\treturn entry.string = string\r\n\treturn entry.string = readFixedString(length)\r\n}\r\n\r\nexport class Tag {\r\n\tconstructor(value) {\r\n\t\tthis.value = value\r\n\t}\r\n}\r\n\r\nlet glbl = typeof window == 'object' ? window : global\r\n\r\ncurrentExtensions[0] = (dateString) => {\r\n\t// string date extension\r\n\treturn new Date(dateString)\r\n}\r\n\r\ncurrentExtensions[1] = (epochSec) => {\r\n\t// numeric date extension\r\n\treturn new Date(epochSec * 1000)\r\n}\r\n\r\ncurrentExtensions[2] = (buffer) => {\r\n\t// bigint extension\r\n\treturn new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0)\r\n}\r\n\r\ncurrentExtensions[3] = (buffer) => {\r\n\t// negative bigint extension\r\n\treturn BigInt(-1) - (new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength).getBigUint64(0))\r\n}\r\n\r\n// the registration of the record definition extension (tag 105)\r\nconst recordDefinition = () => {\r\n\tlet definition = read()\r\n\tlet structure = definition[0]\r\n\tlet id = definition[1]\r\n\tcurrentStructures[id & 0xff] = structure\r\n\tstructure.read = createStructureReader(structure)\r\n\tlet object = {}\r\n\tfor (let i = 2,l = definition.length; i < l; i++) {\r\n\t\tlet key = structure[i - 2]\r\n\t\tobject[key] = definition[i]\r\n\t}\r\n\treturn object\r\n}\r\n\r\nrecordDefinition.handlesRead = true\r\ncurrentExtensions[RECORD_TAG_ID] = recordDefinition\r\n\r\ncurrentExtensions[27] = (data) => { // http://cbor.schmorp.de/generic-object\r\n\treturn (glbl[data[0]] || Error)(data[1], data[2])\r\n}\r\n\r\ncurrentExtensions[40009] = (id) => {\r\n\t// id extension (for structured clones)\r\n\tif (!referenceMap)\r\n\t\treferenceMap = new Map()\r\n\tlet token = src[position]\r\n\tlet target\r\n\t// TODO: handle Maps, Sets, and other types that can cycle; this is complicated, because you potentially need to read\r\n\t// ahead past references to record structure definitions\r\n\tif ((token >> 5) == 4)\r\n\t\ttarget = []\r\n\telse\r\n\t\ttarget = {}\r\n\r\n\tlet refEntry = { target } // a placeholder object\r\n\treferenceMap.set(id, refEntry)\r\n\tlet targetProperties = read() // read the next value as the target object to id\r\n\tif (refEntry.used) // there is a cycle, so we have to assign properties to original target\r\n\t\treturn Object.assign(target, targetProperties)\r\n\trefEntry.target = targetProperties // the placeholder wasn't used, replace with the deserialized one\r\n\treturn targetProperties // no cycle, can just use the returned read object\r\n}\r\n\r\ncurrentExtensions[40010] = (id) => {\r\n\t// pointer extension (for structured clones)\r\n\tlet refEntry = referenceMap.get(id)\r\n\trefEntry.used = true\r\n\treturn refEntry.target\r\n}\r\n\r\ncurrentExtensions[258] = (array) => new Set(array); // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\r\n(currentExtensions[259] = (read) => {\r\n\t// https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec\r\n\t// for decoding as a standard Map\r\n\tif (currentDecoder.mapsAsObjects) {\r\n\t\tcurrentDecoder.mapsAsObjects = false\r\n\t\trestoreMapsAsObject = true\r\n\t}\r\n\treturn read()\r\n}).handlesRead = true\r\n\r\n\r\nexport const typedArrays = ['Uint8', 'Uint8Clamped', 'Uint16', 'Uint32', 'BigUint64','Int8', 'Int16', 'Int32', 'BigInt64', 'Float32', 'Float64'].map(type => type + 'Array')\r\nconst typedArrayTags = [64, 68, 69, 70, 71, 72, 77, 78, 79, 81, 82]\r\nfor (let i = 0; i < typedArrays.length; i++) {\r\n\tregisterTypedArray(typedArrays[i], typedArrayTags[i])\r\n}\r\nfunction registerTypedArray(typedArrayName, tag) {\r\n\tcurrentExtensions[tag] = (buffer) => {\r\n\t\tif (!typedArrayName)\r\n\t\t\tthrow new Error('Could not find typed array for code ' + typeCode)\r\n\t\t// we have to always slice/copy here to get a new ArrayBuffer that is word/byte aligned\r\n\t\treturn new glbl[typedArrayName](Uint8Array.prototype.slice.call(buffer, 0).buffer)\r\n\t}\r\n}\r\n\r\nfunction saveState(callback) {\r\n\tlet savedSrcEnd = srcEnd\r\n\tlet savedPosition = position\r\n\tlet savedStringPosition = stringPosition\r\n\tlet savedSrcStringStart = srcStringStart\r\n\tlet savedSrcStringEnd = srcStringEnd\r\n\tlet savedSrcString = srcString\r\n\tlet savedStrings = strings\r\n\tlet savedReferenceMap = referenceMap\r\n\t// TODO: We may need to revisit this if we do more external calls to user code (since it could be slow)\r\n\tlet savedSrc = new Uint8Array(src.slice(0, srcEnd)) // we copy the data in case it changes while external data is processed\r\n\tlet savedStructures = currentStructures\r\n\tlet savedDecoder = currentDecoder\r\n\tlet savedSequentialMode = sequentialMode\r\n\tlet value = callback()\r\n\tsrcEnd = savedSrcEnd\r\n\tposition = savedPosition\r\n\tstringPosition = savedStringPosition\r\n\tsrcStringStart = savedSrcStringStart\r\n\tsrcStringEnd = savedSrcStringEnd\r\n\tsrcString = savedSrcString\r\n\tstrings = savedStrings\r\n\treferenceMap = savedReferenceMap\r\n\tsrc = savedSrc\r\n\tsequentialMode = savedSequentialMode\r\n\tcurrentStructures = savedStructures\r\n\tcurrentDecoder = savedDecoder\r\n\tdataView = new DataView(src.buffer, src.byteOffset, src.byteLength)\r\n\treturn value\r\n}\r\nexport function clearSource() {\r\n\tsrc = null\r\n\treferenceMap = null\r\n\tcurrentStructures = null\r\n}\r\n\r\nexport function addExtension(extension) {\r\n\tcurrentExtensions[extension.tag] = extension.decode\r\n}\r\n\r\nexport let mult10 = new Array(147) // this is a table matching binary exponents to the multiplier to determine significant digit rounding\r\nfor (let i = 0; i < 256; i++) {\r\n\tmult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103))\r\n}\r\nexport const useRecords = false\r\nexport const mapsAsObjects = true\r\nlet defaultDecoder = new Decoder({ useRecords: false })\r\nexport const decode = defaultDecoder.decode\r\nexport const decodeMultiple = defaultDecoder.decodeMultiple\r\nexport const FLOAT32_OPTIONS = {\r\n\tNEVER: 0,\r\n\tALWAYS: 1,\r\n\tDECIMAL_ROUND: 3,\r\n\tDECIMAL_FIT: 4\r\n}\r\n","import { Decoder, mult10, Tag, typedArrays, addExtension as decodeAddExtension } from './decode.js'\r\nlet textEncoder\r\ntry {\r\n\ttextEncoder = new TextEncoder()\r\n} catch (error) {}\r\nlet extensions, extensionClasses\r\nconst hasNodeBuffer = typeof Buffer !== 'undefined'\r\nconst ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array\r\nconst ByteArray = hasNodeBuffer ? Buffer : Uint8Array\r\nconst RECORD_STARTING_ID_PREFIX = 0x69 // tag 105/0x69\r\nconst MAX_STRUCTURES = 0x100\r\nconst MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000\r\nlet target\r\nlet targetView\r\nlet position = 0\r\nlet safeEnd\r\nconst RECORD_SYMBOL = Symbol('record-id')\r\nexport class Encoder extends Decoder {\r\n\tconstructor(options) {\r\n\t\tsuper(options)\r\n\t\tthis.offset = 0\r\n\t\tlet typeBuffer\r\n\t\tlet start\r\n\t\tlet sharedStructures\r\n\t\tlet hasSharedUpdate\r\n\t\tlet structures\r\n\t\tlet referenceMap\r\n\t\tlet lastSharedStructuresLength = 0\r\n\t\tlet encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) {\r\n\t\t\treturn target.utf8Write(string, position, maxBytes)\r\n\t\t} : (textEncoder && textEncoder.encodeInto) ?\r\n\t\t\tfunction(string, position) {\r\n\t\t\t\treturn textEncoder.encodeInto(string, target.subarray(position)).written\r\n\t\t\t} : false\r\n\r\n\t\tlet encoder = this\r\n\t\tlet maxSharedStructures = 64\r\n\t\tlet isSequential = options && options.sequential\r\n\t\tif (isSequential) {\r\n\t\t\tmaxSharedStructures = 0\r\n\t\t\tthis.structures = []\r\n\t\t}\r\n\t\tlet recordIdsToRemove = []\r\n\t\tlet transitionsCount = 0\r\n\t\tlet serializationsSinceTransitionRebuild = 0\r\n\t\tif (this.structures && this.structures.length > maxSharedStructures) {\r\n\t\t\tthrow new Error('Too many shared structures')\r\n\t\t}\r\n\r\n\t\tthis.encode = function(value) {\r\n\t\t\tif (!target) {\r\n\t\t\t\ttarget = new ByteArrayAllocate(8192)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, 8192)\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tsafeEnd = target.length - 10\r\n\t\t\tif (safeEnd - position < 0x800) {\r\n\t\t\t\t// don't start too close to the end, \r\n\t\t\t\ttarget = new ByteArrayAllocate(target.length)\r\n\t\t\t\ttargetView = new DataView(target.buffer, 0, target.length)\r\n\t\t\t\tsafeEnd = target.length - 10\r\n\t\t\t\tposition = 0\r\n\t\t\t}\r\n\t\t\tstart = position\r\n\t\t\treferenceMap = encoder.structuredClone ? new Map() : null\r\n\t\t\tsharedStructures = encoder.structures\r\n\t\t\tif (sharedStructures) {\r\n\t\t\t\tif (sharedStructures.uninitialized)\r\n\t\t\t\t\tencoder.structures = sharedStructures = encoder.getStructures()\r\n\t\t\t\tlet sharedStructuresLength = sharedStructures.length\r\n\t\t\t\tif (sharedStructuresLength > maxSharedStructures && !isSequential)\r\n\t\t\t\t\tsharedStructuresLength = maxSharedStructures\r\n\t\t\t\tif (!sharedStructures.transitions) {\r\n\t\t\t\t\t// rebuild our structure transitions\r\n\t\t\t\t\tsharedStructures.transitions = Object.create(null)\r\n\t\t\t\t\tfor (let i = 0; i < sharedStructuresLength; i++) {\r\n\t\t\t\t\t\tlet keys = sharedStructures[i]\r\n\t\t\t\t\t\tif (!keys)\r\n\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\tlet nextTransition, transition = sharedStructures.transitions\r\n\t\t\t\t\t\tfor (let i =0, l = keys.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttransition[RECORD_SYMBOL] = i\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlastSharedStructuresLength = sharedStructures.length\r\n\t\t\t\t}\r\n\t\t\t\tif (!isSequential)\r\n\t\t\t\t\tsharedStructures.nextId = sharedStructuresLength\r\n\t\t\t}\r\n\t\t\tif (hasSharedUpdate)\r\n\t\t\t\thasSharedUpdate = false\r\n\t\t\tstructures = sharedStructures || []\r\n\t\t\ttry {\r\n\t\t\t\tencode(value)\r\n\t\t\t\tencoder.offset = position // update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially\r\n\t\t\t\tif (referenceMap && referenceMap.idsToInsert) {\r\n\t\t\t\t\tposition += referenceMap.idsToInsert.length * 8\r\n\t\t\t\t\tif (position > safeEnd)\r\n\t\t\t\t\t\tmakeRoom(position)\r\n\t\t\t\t\tencoder.offset = position\r\n\t\t\t\t\tlet serialized = insertIds(target.subarray(start, position), referenceMap.idsToInsert)\r\n\t\t\t\t\treferenceMap = null\r\n\t\t\t\t\treturn serialized\r\n\t\t\t\t}\r\n\t\t\t\treturn target.subarray(start, position) // position can change if we call encode again in saveStructures, so we get the buffer now\r\n\t\t\t} finally {\r\n\t\t\t\tif (sharedStructures) {\r\n\t\t\t\t\tif (serializationsSinceTransitionRebuild < 10)\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild++\r\n\t\t\t\t\tif (transitionsCount > 10000) {\r\n\t\t\t\t\t\t// force a rebuild occasionally after a lot of transitions so it can get cleaned up\r\n\t\t\t\t\t\tsharedStructures.transitions = null\r\n\t\t\t\t\t\tserializationsSinceTransitionRebuild = 0\r\n\t\t\t\t\t\ttransitionsCount = 0\r\n\t\t\t\t\t\tif (recordIdsToRemove.length > 0)\r\n\t\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t} else if (recordIdsToRemove.length > 0 && !isSequential) {\r\n\t\t\t\t\t\tfor (let i = 0, l = recordIdsToRemove.length; i < l; i++) {\r\n\t\t\t\t\t\t\trecordIdsToRemove[i][RECORD_SYMBOL] = undefined\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\trecordIdsToRemove = []\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (hasSharedUpdate && encoder.saveStructures) {\r\n\t\t\t\t\t\tif (encoder.structures.length > maxSharedStructures) {\r\n\t\t\t\t\t\t\tencoder.structures = encoder.structures.slice(0, maxSharedStructures)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (encoder.saveStructures(encoder.structures, lastSharedStructuresLength) === false) {\r\n\t\t\t\t\t\t\t// get updated structures and try again if the update failed\r\n\t\t\t\t\t\t\tencoder.structures = encoder.getStructures() || []\r\n\t\t\t\t\t\t\treturn encoder.encode(value)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlastSharedStructuresLength = encoder.structures.length\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst encode = (value) => {\r\n\t\t\tif (position > safeEnd)\r\n\t\t\t\ttarget = makeRoom(position)\r\n\r\n\t\t\tvar type = typeof value\r\n\t\t\tvar length\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tlet strLength = value.length\r\n\t\t\t\tlet headerSize\r\n\t\t\t\t// first we estimate the header size, so we can write to the correct location\r\n\t\t\t\tif (strLength < 0x20) {\r\n\t\t\t\t\theaderSize = 1\r\n\t\t\t\t} else if (strLength < 0x100) {\r\n\t\t\t\t\theaderSize = 2\r\n\t\t\t\t} else if (strLength < 0x10000) {\r\n\t\t\t\t\theaderSize = 3\r\n\t\t\t\t} else {\r\n\t\t\t\t\theaderSize = 5\r\n\t\t\t\t}\r\n\t\t\t\tlet maxBytes = strLength * 3\r\n\t\t\t\tif (position + maxBytes > safeEnd)\r\n\t\t\t\t\ttarget = makeRoom(position + maxBytes)\r\n\r\n\t\t\t\tif (strLength < 0x40 || !encodeUtf8) {\r\n\t\t\t\t\tlet i, c1, c2, strPosition = position + headerSize\r\n\t\t\t\t\tfor (i = 0; i < strLength; i++) {\r\n\t\t\t\t\t\tc1 = value.charCodeAt(i)\r\n\t\t\t\t\t\tif (c1 < 0x80) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1\r\n\t\t\t\t\t\t} else if (c1 < 0x800) {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 | 0xc0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else if (\r\n\t\t\t\t\t\t\t(c1 & 0xfc00) === 0xd800 &&\r\n\t\t\t\t\t\t\t((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\tc1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff)\r\n\t\t\t\t\t\t\ti++\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 18 | 0xf0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 12 | 0xe0\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 >> 6 & 0x3f | 0x80\r\n\t\t\t\t\t\t\ttarget[strPosition++] = c1 & 0x3f | 0x80\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlength = strPosition - position - headerSize\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlength = encodeUtf8(value, position + headerSize, maxBytes)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\ttarget[position++] = 0x60 | length\r\n\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\tif (headerSize < 2) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 2, position + 1, position + 1 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x78\r\n\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\tif (headerSize < 3) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 3, position + 2, position + 2 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x79\r\n\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (headerSize < 5) {\r\n\t\t\t\t\t\ttarget.copyWithin(position + 5, position + 3, position + 3 + length)\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0x7a\r\n\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\tposition += 4\r\n\t\t\t\t}\r\n\t\t\t\tposition += length\r\n\t\t\t} else if (type === 'number') {\r\n\t\t\t\tif (value >>> 0 === value) {// positive integer, 32-bit or less\r\n\t\t\t\t\t// positive uint\r\n\t\t\t\t\tif (value < 0x18) {\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x18\r\n\t\t\t\t\t\ttarget[position++] = value\r\n\t\t\t\t\t} else if (value < 0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x19\r\n\t\t\t\t\t\ttarget[position++] = value >> 8\r\n\t\t\t\t\t\ttarget[position++] = value & 0xff\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x1a\r\n\t\t\t\t\t\ttargetView.setUint32(position, value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (value >> 0 === value) { // negative integer\r\n\t\t\t\t\tif (value >= -0x18) {\r\n\t\t\t\t\t\ttarget[position++] = 0x1f - value\r\n\t\t\t\t\t} else if (value >= -0x100) {\r\n\t\t\t\t\t\ttarget[position++] = 0x38\r\n\t\t\t\t\t\ttarget[position++] = ~value\r\n\t\t\t\t\t} else if (value >= -0x10000) {\r\n\t\t\t\t\t\ttarget[position++] = 0x39\r\n\t\t\t\t\t\ttargetView.setUint16(position, ~value)\r\n\t\t\t\t\t\tposition += 2\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget[position++] = 0x3a\r\n\t\t\t\t\t\ttargetView.setUint32(position, ~value)\r\n\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet useFloat32\r\n\t\t\t\t\tif ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) {\r\n\t\t\t\t\t\ttarget[position++] = 0xfa\r\n\t\t\t\t\t\ttargetView.setFloat32(position, value)\r\n\t\t\t\t\t\tlet xShifted\r\n\t\t\t\t\t\tif (useFloat32 < 4 ||\r\n\t\t\t\t\t\t\t// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved\r\n\t\t\t\t\t\t\t\t((xShifted = value * mult10[((target[position] & 0x7f) << 1) | (target[position + 1] >> 7)]) >> 0) === xShifted) {\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else\r\n\t\t\t\t\t\t\tposition-- // move back into position for writing a double\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttarget[position++] = 0xfb\r\n\t\t\t\t\ttargetView.setFloat64(position, value)\r\n\t\t\t\t\tposition += 8\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'object') {\r\n\t\t\t\tif (!value)\r\n\t\t\t\t\ttarget[position++] = 0xf6\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (referenceMap) {\r\n\t\t\t\t\t\tlet referee = referenceMap.get(value)\r\n\t\t\t\t\t\tif (referee) {\r\n\t\t\t\t\t\t\tif (!referee.id) {\r\n\t\t\t\t\t\t\t\tlet idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = [])\r\n\t\t\t\t\t\t\t\treferee.id = idsToInsert.push(referee)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\ttarget[position++] = 40010 >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = 40010 & 0xff\r\n\t\t\t\t\t\t\ttarget[position++] = 0x1a // uint32\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, referee.id)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t} else \r\n\t\t\t\t\t\t\treferenceMap.set(value, { offset: position - start })\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlet constructor = value.constructor\r\n\t\t\t\t\tif (constructor === Object) {\r\n\t\t\t\t\t\twriteObject(value, true)\r\n\t\t\t\t\t} else if (constructor === Array) {\r\n\t\t\t\t\t\tlength = value.length\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x80 | length\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twriteArrayHeader(length)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\t\t\t\tencode(value[i])\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (constructor === Map) {\r\n\t\t\t\t\t\tif (this.mapsAsObjects ? this.useTag259ForMaps !== false : this.useTag259ForMaps) {\r\n\t\t\t\t\t\t\t// use Tag 259 (https://github.com/shanewholloway/js-cbor-codec/blob/master/docs/CBOR-259-spec--explicit-maps.md) for maps if the user wants it that way\r\n\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\ttarget[position++] = 1\r\n\t\t\t\t\t\t\ttarget[position++] = 3\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlength = value.size\r\n\t\t\t\t\t\tif (length < 0x18) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t\t\t\t} else if (length < 0x100) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\t\t\t\ttarget[position++] = length\r\n\t\t\t\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor (let [ key, entryValue ] of value) {\r\n\t\t\t\t\t\t\tencode(key)\r\n\t\t\t\t\t\t\tencode(entryValue)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\t\r\n\t\t\t\t\t\tfor (let i = 0, l = extensions.length; i < l; i++) {\r\n\t\t\t\t\t\t\tlet extensionClass = extensionClasses[i]\r\n\t\t\t\t\t\t\tif (value instanceof extensionClass) {\r\n\t\t\t\t\t\t\t\tlet extension = extensions[i]\r\n\t\t\t\t\t\t\t\tlet tag = extension.tag\r\n\t\t\t\t\t\t\t\tif (tag < 0x18) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xc0 | tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x100) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag\r\n\t\t\t\t\t\t\t\t} else if (tag < 0x10000) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xd9\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag >> 8\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = tag & 0xff\r\n\t\t\t\t\t\t\t\t} else if (tag > -1) {\r\n\t\t\t\t\t\t\t\t\ttarget[position++] = 0xda\r\n\t\t\t\t\t\t\t\t\ttargetView.setUint32(position, tag)\r\n\t\t\t\t\t\t\t\t\tposition += 4\r\n\t\t\t\t\t\t\t\t} // else undefined, don't write tag\r\n\t\t\t\t\t\t\t\textension.encode.call(this, value, encode, makeRoom)\r\n\t\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (value[Symbol.iterator]) {\r\n\t\t\t\t\t\t\ttarget[position++] = 0x9f // indefinite length array\r\n\t\t\t\t\t\t\tfor (let entry of value) {\r\n\t\t\t\t\t\t\t\tencode(entry)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\ttarget[position++] = 0xff // stop-code\r\n\t\t\t\t\t\t\treturn\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// no extension found, write as object\r\n\t\t\t\t\t\twriteObject(value, !value.hasOwnProperty) // if it doesn't have hasOwnProperty, don't do hasOwnProperty checks\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (type === 'boolean') {\r\n\t\t\t\ttarget[position++] = value ? 0xf5 : 0xf4\r\n\t\t\t} else if (type === 'bigint') {\r\n\t\t\t\tif (value < (BigInt(1)<= 0) {\r\n\t\t\t\t\t// use an unsigned int as long as it fits\r\n\t\t\t\t\ttarget[position++] = 0x1b\r\n\t\t\t\t\ttargetView.setBigUint64(position, value)\r\n\t\t\t\t} else if (value > -(BigInt(1)< {\r\n\t\t\t// this method is slightly slower, but generates \"preferred serialization\" (optimally small for smaller objects)\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet length = keys.length\r\n\t\t\tif (length < 0x18) {\r\n\t\t\t\ttarget[position++] = 0xa0 | length\r\n\t\t\t} else if (length < 0x100) {\r\n\t\t\t\ttarget[position++] = 0xb8\r\n\t\t\t\ttarget[position++] = length\r\n\t\t\t} else if (length < 0x10000) {\r\n\t\t\t\ttarget[position++] = 0xb9\r\n\t\t\t\ttarget[position++] = length >> 8\r\n\t\t\t\ttarget[position++] = length & 0xff\r\n\t\t\t} else {\r\n\t\t\t\ttarget[position++] = 0xba\r\n\t\t\t\ttargetView.setUint32(position, length)\r\n\t\t\t\tposition += 4\r\n\t\t\t}\r\n\t\t\tlet key\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tencode(key = keys[i])\r\n\t\t\t\tencode(object[key])\r\n\t\t\t}\r\n\t\t} :\r\n\t\t(object, safePrototype) => {\r\n\t\t\ttarget[position++] = 0xb9 // always use map 16, so we can preallocate and set the length afterwards\r\n\t\t\tlet objectOffset = position - start\r\n\t\t\tposition += 2\r\n\t\t\tlet size = 0\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tencode(key)\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t\tsize++\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset++ + start] = size >> 8\r\n\t\t\ttarget[objectOffset + start] = size & 0xff\r\n\t\t} :\r\n\r\n\t/*\tsharedStructures ? // For highly stable structures, using for-in can a little bit faster\r\n\t\t(object, safePrototype) => {\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet objectOffset = position++ - start\r\n\t\t\tlet wroteKeys\r\n\t\t\tfor (let key in object) {\r\n\t\t\t\tif (safePrototype || object.hasOwnProperty(key)) {\r\n\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\t\tnextTransition.__keys__ = (transition.__keys__ || []).concat([key])\r\n\t\t\t\t\t\t/*let keys = Object.keys(object)\r\n\t\t\t\t\t\tif \r\n\t\t\t\t\t\tlet size = 0\r\n\t\t\t\t\t\tlet startBranch = transition.__keys__ ? transition.__keys__.length : 0\r\n\t\t\t\t\t\tfor (let i = 0, l = keys.length; i++) {\r\n\t\t\t\t\t\t\tlet key = keys[i]\r\n\t\t\t\t\t\t\tsize += key.length << 2\r\n\t\t\t\t\t\t\tif (i >= startBranch) {\r\n\t\t\t\t\t\t\t\tnextTransition = nextTransition[key] = Object.create(null)\r\n\t\t\t\t\t\t\t\tnextTransition.__keys__ = keys.slice(0, i + 1)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmakeRoom(position + size)\r\n\t\t\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\t\t\ttarget.copy(target, )\r\n\t\t\t\t\t\tobjectOffset\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttransition = nextTransition\r\n\t\t\t\t\tencode(object[key])\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tlet id = transition.id\r\n\t\t\tif (!id) {\r\n\t\t\t\tid = transition.id = structures.push(transition.__keys__) + 63\r\n\t\t\t\tif (sharedStructures.onUpdate)\r\n\t\t\t\t\tsharedStructures.onUpdate(id, transition.__keys__)\r\n\t\t\t}\r\n\t\t\ttarget[objectOffset + start] = id\r\n\t\t}*/\r\n\t\t(object) => {\r\n\t\t\tlet keys = Object.keys(object)\r\n\t\t\tlet nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null))\r\n\t\t\tlet newTransitions = 0\r\n\t\t\tlet length = keys.length\r\n\t\t\tfor (let i =0; i < length; i++) {\r\n\t\t\t\tlet key = keys[i]\r\n\t\t\t\tnextTransition = transition[key]\r\n\t\t\t\tif (!nextTransition) {\r\n\t\t\t\t\tnextTransition = transition[key] = Object.create(null)\r\n\t\t\t\t\tnewTransitions++\r\n\t\t\t\t}\r\n\t\t\t\ttransition = nextTransition\r\n\t\t\t}\r\n\t\t\tlet recordId = transition[RECORD_SYMBOL]\r\n\t\t\tif (recordId !== undefined) {\r\n\t\t\t\ttarget[position++] = 0xd9 // tag two byte\r\n\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\ttarget[position++] = recordId\r\n\t\t\t} else {\r\n\t\t\t\trecordId = structures.nextId++\r\n\t\t\t\tif (!recordId) {\r\n\t\t\t\t\trecordId = 0\r\n\t\t\t\t\tstructures.nextId = 1\r\n\t\t\t\t}\r\n\t\t\t\tif (recordId >= MAX_STRUCTURES) {// cycle back around\r\n\t\t\t\t\tstructures.nextId = (recordId = maxSharedStructures) + 1\r\n\t\t\t\t}\r\n\t\t\t\ttransition[RECORD_SYMBOL] = recordId\r\n\t\t\t\tstructures[recordId] = keys\r\n\t\t\t\tif (sharedStructures && sharedStructures.length <= maxSharedStructures) {\r\n\t\t\t\t\ttarget[position++] = 0xd9 // tag two byte\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\ttarget[position++] = recordId // tag number\r\n\t\t\t\t\thasSharedUpdate = true\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[position++] = 0xd8\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\tif (newTransitions)\r\n\t\t\t\t\t\ttransitionsCount += serializationsSinceTransitionRebuild * newTransitions\r\n\t\t\t\t\t// record the removal of the id, we can maintain our shared structure\r\n\t\t\t\t\tif (recordIdsToRemove.length >= MAX_STRUCTURES - maxSharedStructures)\r\n\t\t\t\t\t\trecordIdsToRemove.shift()[RECORD_SYMBOL] = undefined // we are cycling back through, and have to remove old ones\r\n\t\t\t\t\trecordIdsToRemove.push(transition)\r\n\t\t\t\t\tif (length < 0x16)\r\n\t\t\t\t\t\ttarget[position++] = 0x82 + length // array header, length of values + 2\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\twriteArrayHeader(length + 2)\r\n\t\t\t\t\tencode(keys)\r\n\t\t\t\t\ttarget[position++] = 0x19 // uint16\r\n\t\t\t\t\ttarget[position++] = RECORD_STARTING_ID_PREFIX\r\n\t\t\t\t\ttarget[position++] = recordId\r\n\t\t\t\t\t// now write the values\r\n\t\t\t\t\tfor (let i =0; i < length; i++)\r\n\t\t\t\t\t\tencode(object[keys[i]])\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (length < 0x18) { // write the array header\r\n\t\t\t\ttarget[position++] = 0x80 | length\r\n\t\t\t} else {\r\n\t\t\t\twriteArrayHeader(length)\r\n\t\t\t}\r\n\t\t\tfor (let i =0; i < length; i++)\r\n\t\t\t\tencode(object[keys[i]])\r\n\t\t}\r\n\t\tconst makeRoom = (end) => {\r\n\t\t\tlet newSize\r\n\t\t\tif (end > 0x1000000) {\r\n\t\t\t\t// special handling for really large buffers\r\n\t\t\t\tif ((end - start) > MAX_BUFFER_SIZE)\r\n\t\t\t\t\tthrow new Error('Encoded buffer would be larger than maximum buffer size')\r\n\t\t\t\tnewSize = Math.min(MAX_BUFFER_SIZE,\r\n\t\t\t\t\tMath.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x1000000) / 0x1000) * 0x1000)\r\n\t\t\t} else // faster handling for smaller buffers\r\n\t\t\t\tnewSize = ((Math.max((end - start) << 2, target.length - 1) >> 12) + 1) << 12\r\n\t\t\tlet newBuffer = new ByteArrayAllocate(newSize)\r\n\t\t\ttargetView = new DataView(newBuffer.buffer, 0, newSize)\r\n\t\t\tif (target.copy)\r\n\t\t\t\ttarget.copy(newBuffer, 0, start, end)\r\n\t\t\telse\r\n\t\t\t\tnewBuffer.set(target.slice(start, end))\r\n\t\t\tposition -= start\r\n\t\t\tstart = 0\r\n\t\t\tsafeEnd = newBuffer.length - 10\r\n\t\t\treturn target = newBuffer\r\n\t\t}\r\n\t}\r\n\tuseBuffer(buffer) {\r\n\t\t// this means we are finished using our own buffer and we can write over it safely\r\n\t\ttarget = buffer\r\n\t\ttargetView = new DataView(target.buffer, target.byteOffset, target.byteLength)\r\n\t\tposition = 0\r\n\t}\r\n}\r\n\r\nfunction copyBinary(source, target, targetOffset, offset, endOffset) {\r\n\twhile (offset < endOffset) {\r\n\t\ttarget[targetOffset++] = source[offset++]\r\n\t}\r\n}\r\n\r\nfunction writeArrayHeader(length) {\r\n\tif (length < 0x100) {\r\n\t\ttarget[position++] = 0x98\r\n\t\ttarget[position++] = length\r\n\t} else if (length < 0x10000) {\r\n\t\ttarget[position++] = 0x99\r\n\t\ttarget[position++] = length >> 8\r\n\t\ttarget[position++] = length & 0xff\r\n\t} else {\r\n\t\ttarget[position++] = 0x9a\r\n\t\ttargetView.setUint32(position, length)\r\n\t\tposition += 4\r\n\t}\r\n}\r\n\r\nextensionClasses = [ Date, Set, Error, RegExp, ArrayBuffer, ByteArray,\r\n\tUint8Array, Uint8ClampedArray, Uint16Array, Uint32Array, BigUint64Array, Int8Array, Int16Array, Int32Array, BigInt64Array,\r\n\tFloat32Array, Float64Array]\r\n\r\n//Object.getPrototypeOf(Uint8Array.prototype).constructor /*TypedArray*/\r\nextensions = [{\r\n\ttag: 1,\r\n\tencode(date, encode) {\r\n\t\tlet seconds = date.getTime() / 1000\r\n\t\tif ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) {\r\n\t\t\t// Timestamp 32\r\n\t\t\ttarget[position++] = 0x1a\r\n\t\t\ttargetView.setUint32(position, seconds)\r\n\t\t\tposition += 4\r\n\t\t} else {\r\n\t\t\t// Timestamp float64\r\n\t\t\ttarget[position++] = 0xfb\r\n\t\t\ttargetView.setFloat64(position, seconds)\r\n\t\t\tposition += 8\r\n\t\t}\r\n\t}\r\n}, {\r\n\ttag: 258, // https://github.com/input-output-hk/cbor-sets-spec/blob/master/CBOR_SETS.md\r\n\tencode(set, encode) {\r\n\t\tlet array = Array.from(set)\r\n\t\tencode(array)\r\n\t}\r\n}, {\r\n\ttag: 27, // http://cbor.schmorp.de/generic-object\r\n\tencode(error, encode) {\r\n\t\tencode([ error.name, error.message ])\r\n\t}\r\n}, {\r\n\ttag: 27, // http://cbor.schmorp.de/generic-object\r\n\tencode(regex, encode) {\r\n\t\tencode([ 'RegExp', regex.source, regex.flags ])\r\n\t}\r\n}, {\r\n\tencode(arrayBuffer, encode, makeRoom) {\r\n\t\twriteBuffer(arrayBuffer, makeRoom)\r\n\t}\r\n}, {\r\n\tencode(arrayBuffer, encode, makeRoom) {\r\n\t\twriteBuffer(arrayBuffer, makeRoom)\r\n\t}\r\n}, typedArrayEncoder(64),\r\n\ttypedArrayEncoder(68),\r\n\ttypedArrayEncoder(69),\r\n\ttypedArrayEncoder(70),\r\n\ttypedArrayEncoder(71),\r\n\ttypedArrayEncoder(72),\r\n\ttypedArrayEncoder(77),\r\n\ttypedArrayEncoder(78),\r\n\ttypedArrayEncoder(79),\r\n\ttypedArrayEncoder(81),\r\n\ttypedArrayEncoder(82)]\r\n\r\nfunction typedArrayEncoder(tag) {\r\n\treturn {\r\n\t\ttag: tag,\r\n\t\tencode: function writeExtBuffer(typedArray, encode) {\r\n\t\t\tlet length = typedArray.byteLength\r\n\t\t\tlet offset = typedArray.byteOffset || 0\r\n\t\t\tlet buffer = typedArray.buffer || typedArray\r\n\t\t\tencode(hasNodeBuffer ? Buffer.from(buffer, offset, length) :\r\n\t\t\t\tnew Uint8Array(buffer, offset, length))\r\n\t\t}\r\n\t}\r\n}\r\nfunction writeBuffer(buffer, makeRoom) {\r\n\tlet length = buffer.byteLength\r\n\tif (length < 0x18) {\r\n\t\ttarget[position++] = 0x40 + length\r\n\t} else if (length < 0x100) {\r\n\t\ttarget[position++] = 0x58\r\n\t\ttarget[position++] = length\r\n\t} else if (length < 0x10000) {\r\n\t\ttarget[position++] = 0x59\r\n\t\ttarget[position++] = length >> 8\r\n\t\ttarget[position++] = length & 0xff\r\n\t} else {\r\n\t\ttarget[position++] = 0x5a\r\n\t\ttargetView.setUint32(position, length)\r\n\t\tposition += 4\r\n\t}\r\n\tif (position + length >= target.length) {\r\n\t\tmakeRoom(position + length)\r\n\t}\r\n\ttarget.set(buffer, position)\r\n\tposition += length\r\n}\r\n\r\nfunction insertIds(serialized, idsToInsert) {\r\n\t// insert the ids that need to be referenced for structured clones\r\n\tlet nextId\r\n\tlet distanceToMove = idsToInsert.length * 8\r\n\tlet lastEnd = serialized.length - distanceToMove\r\n\tidsToInsert.sort((a, b) => a.offset > b.offset ? 1 : -1)\r\n\twhile (nextId = idsToInsert.pop()) {\r\n\t\tlet offset = nextId.offset\r\n\t\tlet id = nextId.id\r\n\t\tserialized.copyWithin(offset + distanceToMove, offset, lastEnd)\r\n\t\tdistanceToMove -= 8\r\n\t\tlet position = offset + distanceToMove\r\n\t\tserialized[position++] = 0xd9\r\n\t\tserialized[position++] = 40009 >> 8\r\n\t\tserialized[position++] = 40009 & 0xff\r\n\t\tserialized[position++] = 0x1a // uint32\r\n\t\tserialized[position++] = id >> 24\r\n\t\tserialized[position++] = (id >> 16) & 0xff\r\n\t\tserialized[position++] = (id >> 8) & 0xff\r\n\t\tserialized[position++] = id & 0xff\r\n\t\tlastEnd = offset\r\n\t}\r\n\treturn serialized\r\n}\r\n\r\nexport function addExtension(extension) {\r\n\tif (extension.Class) {\r\n\t\tif (!extension.encode)\r\n\t\t\tthrow new Error('Extension has no encode function')\r\n\t\textensionClasses.unshift(extension.Class)\r\n\t\textensions.unshift(extension)\r\n\t}\r\n\tdecodeAddExtension(extension)\r\n}\r\nlet defaultEncoder = new Encoder({ useRecords: false })\r\nexport const encode = defaultEncoder.encode\r\nexport { FLOAT32_OPTIONS } from './decode.js'\r\nimport { FLOAT32_OPTIONS } from './decode.js'\r\nexport const { NEVER, ALWAYS, DECIMAL_ROUND, DECIMAL_FIT } = FLOAT32_OPTIONS\r\n","/**@license\n *\n * No Dependency fast and small LZJB Compression for Browser and Node\n *\n * Copyright (c) 2021 Jakub T. Jankiewicz https://jcubic.pl/me\n * Released under BSD-3-Clause License\n *\n * build: Wed, 27 Oct 2021 10:43:10 GMT\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*\n * source https://github.com/copy/jslzjb-k\n * Based on jslzjb: https://code.google.com/p/jslzjb/\n * Heavily modified for speed\n */\n// Constants was used for compress/decompress function.\nconst\n/** @const */ NBBY = 8,\n /** @const */ MATCH_BITS = 6,\n /** @const */ MATCH_MIN = 3,\n /** @const */ MATCH_MAX = ((1 << MATCH_BITS) + (MATCH_MIN - 1)),\n /** @const */ OFFSET_MASK = ((1 << (16 - MATCH_BITS)) - 1),\n /** @const */ LEMPEL_SIZE = 256;\n\n/**\n * Because of weak of javascript's natural, many compression algorithm\n * become useless in javascript implementation. The main problem is\n * performance, even the simple Huffman, LZ77/78 algorithm will take many\n * many time to operate. We use LZJB algorithm to do that, it surprisingly\n * fulfills our requirement to compress string fastly and efficiently.\n *\n * Our implementation is based on\n * http://src.opensolaris.org/source/raw/onnv/onnv-gate/\n * usr/src/uts/common/os/compress.c\n * It is licensed under CDDL.\n *\n * Compress byte array using fast and efficient algorithm.\n *\n * @param {Uint8Array} sstart The buffer to compress\n * @param {Uint8Array} dstart The buffer to write into\n * @return {number} compressed length (number of bytes written to the\n * output buffer). May be bigger than the size of the\n * output buffer, in which case some bytes are lost\n */\nfunction compress(sstart, dstart) {\n var slen = 0,\n src = 0,\n dst = 0,\n cpy = 0,\n copymap = 0,\n copymask = 1 << (NBBY - 1),\n mlen = 0,\n offset = 0,\n hp = 0,\n lempel = new Int32Array(LEMPEL_SIZE),\n i = 0;\n\n // Initialize lempel array.\n for(i = 0; i < LEMPEL_SIZE; i++) {\n lempel[i] = -858993460;\n }\n\n slen = sstart.length;\n\n while (src < slen) {\n if ((copymask <<= 1) == (1 << NBBY)) {\n copymask = 1;\n copymap = dst;\n dstart[dst++] = 0;\n }\n\n if (src > slen - MATCH_MAX) {\n dstart[dst++] = sstart[src++];\n continue;\n }\n\n hp = ((sstart[src] + 13) ^\n (sstart[src + 1] - 13) ^\n sstart[src + 2]) &\n (LEMPEL_SIZE - 1);\n\n offset = (src - lempel[hp]) & OFFSET_MASK;\n lempel[hp] = src;\n cpy = src - offset;\n\n if (cpy >= 0 && cpy != src &&\n sstart[src] == sstart[cpy] &&\n sstart[src + 1] == sstart[cpy + 1] &&\n sstart[src + 2] == sstart[cpy + 2]) {\n dstart[copymap] |= copymask;\n for (mlen = MATCH_MIN; mlen < MATCH_MAX; mlen++)\n if (sstart[src + mlen] != sstart[cpy + mlen])\n break;\n dstart[dst++] = ((mlen - MATCH_MIN) << (NBBY - MATCH_BITS)) |\n (offset >> NBBY);\n dstart[dst++] = offset;\n src += mlen;\n } else {\n dstart[dst++] = sstart[src++];\n }\n }\n\n console.assert(sstart.length >= src);\n\n return dst;\n}\n\n/**\n * Our implementation is based on\n * http://src.opensolaris.org/source/raw/onnv/onnv-gate/\n * usr/src/uts/common/os/compress.c\n * It is licensed under CDDL.\n *\n * Decompress byte array using fast and efficient algorithm.\n *\n * @param {Uint8Array} sstart The buffer to decompress\n * @param {number} slen compressed length\n * @param {Uint8Array} dstart The buffer to write into\n * @return {number} decompressed length\n */\nfunction decompress(sstart, slen, dstart) {\n slen = slen | 0;\n\n var src = 0,\n dst = 0,\n cpy = 0,\n copymap = 0,\n copymask = 1 << (NBBY - 1 | 0),\n mlen = 0,\n offset = 0;\n\n //var avg_mlen = [];\n\n while (src < slen) {\n if ((copymask <<= 1) === (1 << NBBY)) {\n copymask = 1;\n copymap = sstart[src];\n src = src + 1 | 0;\n }\n\n if (copymap & copymask) {\n mlen = (sstart[src] >> (NBBY - MATCH_BITS | 0)) + MATCH_MIN | 0;\n offset = ((sstart[src] << NBBY) | sstart[src + 1 | 0]) & OFFSET_MASK;\n src = src + 2 | 0;\n\n cpy = dst - offset | 0;\n //if (cpy >= 0)\n {\n //console.log(mlen);\n //avg_mlen.push(mlen);\n\n //dstart.set(dstart.subarray(cpy, cpy + mlen | 0), dst);\n //dst = dst + mlen | 0;\n //cpy = cpy + mlen | 0;\n\n //mlen = mlen - 1 | 0;\n while (mlen > 4) {\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n\n mlen = mlen - 4 | 0;\n }\n\n while (mlen > 0) {\n dstart[dst] = dstart[cpy];\n dst = dst + 1 | 0;\n cpy = cpy + 1 | 0;\n mlen = mlen - 1 | 0;\n }\n }\n //else\n //{\n // /*\n // * offset before start of destination buffer\n // * indicates corrupt source data\n // */\n // console.warn(\"possibly corrupt data\");\n // return dstart;\n //}\n } else {\n dstart[dst] = sstart[src];\n dst = dst + 1 | 0;\n src = src + 1 | 0;\n }\n }\n\n //console.log(avg_mlen.reduce(function(a, x) { return a + x; }, 0) / avg_mlen.length);\n\n //console.assert(dstart.length >= dst);\n //console.assert(sstart.length >= src);\n\n return dst;\n}\n\n\nfunction encode_magic() {\n const encoder = new TextEncoder('utf-8');\n return encoder.encode(MAGIC_STRING);\n}\n\nconst MAGIC_STRING = '@lzjb';\nconst MAGIC = encode_magic();\n\nfunction merge_uint8_array(...args) {\n if (args.length > 1) {\n const len = args.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(len);\n let offset = 0;\n args.forEach(item => {\n result.set(item, offset);\n offset += item.length;\n });\n return result;\n } else if (args.length) {\n return args[0];\n }\n}\n\nfunction number_to_bytes(number) {\n const len = Math.ceil(Math.log2(number) / 8);\n const byteArray = new Uint8Array(len);\n\n for (let index = 0; index < byteArray.length; index ++ ) {\n const byte = number & 0xff;\n byteArray[index] = byte;\n number = (number - byte) / 256;\n }\n\n return byteArray;\n}\n\nfunction bytes_to_number(byteArray) {\n let result = 0;\n for (let i = byteArray.length - 1; i >= 0; i--) {\n result = (result * 256) + byteArray[i];\n }\n\n return result;\n}\n\nfunction pack(input, { magic = true } = {}) {\n const out = new Uint8Array(Math.max(input.length * 1.5 | 0, 16 * 1024));\n const len = compress(input, out);\n const len_array = number_to_bytes(input.length);\n const payload = [\n Uint8Array.of(len_array.length),\n len_array,\n out.slice(0, len)\n ];\n if (magic) {\n payload.unshift(MAGIC);\n }\n return merge_uint8_array(...payload);\n}\n\nfunction unpack(input, { magic = true } = {}) {\n if (magic) {\n const decoder = new TextDecoder('utf-8');\n const magic_prefix = decoder.decode(input.slice(0, MAGIC.length));\n if (magic_prefix !== MAGIC_STRING) {\n throw new Error('Invalid magic value');\n }\n }\n const magic_length = magic ? MAGIC.length : 0;\n const size = input[magic_length];\n const start = magic_length + 1;\n const end = magic_length + size + 1;\n const len = bytes_to_number(input.slice(start, end));\n input = input.slice(end);\n const out = new Uint8Array(len);\n decompress(input, input.length, out);\n return out;\n}\n\nexports.pack = pack;\nexports.unpack = unpack;\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.module.js.map\n","/**@license\n * __ __ __\n * / / \\ \\ _ _ ___ ___ \\ \\\n * | | \\ \\ | | | || . \\/ __> | |\n * | | > \\ | |_ | || _/\\__ \\ | |\n * | | / ^ \\ |___||_||_| <___/ | |\n * \\_\\ /_/ \\_\\ /_/\n *\n * \n *\n * LIPS is Pretty Simple - Scheme based Powerful LISP in JavaScript\n *\n * Copyright (c) 2018-2021 Jakub T. Jankiewicz \n * Released under the MIT license\n *\n * includes:\n *\n * ucs2decode function from Punycode v 2.1.1 by Mathias Bynens MIT License\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * contentloaded.js\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n *\n * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley.\n * source: Kawa, C-Gambit\n *\n * Build time: {{DATE}}\n */\n/*\n * TODO: consider using exec in env.eval or use different maybe_async code\n */\n/* global jQuery, BigInt, Map, Set, Symbol, importScripts, Uint8Array */\n\"use strict\";\n\nconst root = typeof global !== 'undefined' ? global : self;\n\nimport { addExtension, Encoder } from 'cbor-x';\nimport { pack, unpack } from 'lzjb-pack';\nimport unfetch from 'unfetch';\n\nif (!root.fetch) {\n root.fetch = unfetch;\n}\n\nlet fs, path, nodeRequire;\n\nconst BN = root.BN;\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction contentLoaded(win, fn) {\n var done = false, top = true,\n\n doc = win.document,\n root = doc.documentElement,\n modern = doc.addEventListener,\n\n add = modern ? 'addEventListener' : 'attachEvent',\n rem = modern ? 'removeEventListener' : 'detachEvent',\n pre = modern ? '' : 'on',\n\n init = function(e) {\n if (e.type == 'readystatechange' && doc.readyState != 'complete') return;\n (e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) fn.call(win, e.type || e);\n },\n\n poll = function() {\n try { root.doScroll('left'); } catch(e) { setTimeout(poll, 50); return; }\n init('poll');\n };\n\n if (doc.readyState == 'complete') fn.call(win, 'lazy');\n else {\n if (!modern && root.doScroll) {\n try { top = !win.frameElement; } catch(e) { }\n if (top) poll();\n }\n doc[add](pre + 'DOMContentLoaded', init, false);\n doc[add](pre + 'readystatechange', init, false);\n win[add](pre + 'load', init, false);\n }\n}\n// -------------------------------------------------------------------------\n/* eslint-disable */\n/* istanbul ignore next */\nfunction log(x, regex = null) {\n var literal = arguments[1] === true;\n function msg(x) {\n if (!is_debug()) {\n return;\n }\n var value = global_env.get('repr')(x);\n if (regex === null || regex instanceof RegExp && regex.test(value)) {\n console.log(global_env.get('type')(x) + \": \" + value);\n }\n if (literal) {\n console.log(x);\n }\n }\n if (is_promise(x)) {\n x.then(msg);\n } else {\n msg(x);\n }\n return x;\n}\n// ----------------------------------------------------------------------\n/* istanbul ignore next */\nfunction is_debug() {\n return user_env && user_env.get('DEBUG', { throwError: false });\n}\n/* eslint-enable */\n/* eslint-disable max-len */\n// functions generate regexes to match number rational, integer, complex, complex+ratioanl\nfunction num_mnemicic_re(mnemonic) {\n return mnemonic ? `(?:#${mnemonic}(?:#[ie])?|#[ie]#${mnemonic})` : '(?:#[ie])?';\n}\nfunction gen_rational_re(mnemonic, range) {\n return `${num_mnemicic_re(mnemonic)}[+-]?${range}+/${range}+`;\n}\n// TODO: float complex\nfunction gen_complex_re(mnemonic, range) {\n // [+-]i have (?=..) so it don't match +i from +inf.0\n return `${num_mnemicic_re(mnemonic)}(?:[+-]?(?:${range}+/${range}+|nan.0|inf.0|${range}+))?(?:[+-]i|[+-]?(?:${range}+/${range}+|${range}+|nan.0|inf.0)i)(?=[()[\\\\]\\\\s]|$)`;\n}\nfunction gen_integer_re(mnemonic, range) {\n return `${num_mnemicic_re(mnemonic)}[+-]?${range}+`;\n}\nvar re_re = /^#\\/((?:\\\\\\/|[^/]|\\[[^\\]]*\\/[^\\]]*\\])+)\\/([gimyus]*)$/;\nvar float_stre = '(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\\\.[0-9]+|[0-9]+\\\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\\\.)';\n// TODO: extend to ([+-]1/2|float)([+-]1/2|float)\nvar complex_float_stre = `(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|${float_stre}|[+-]?[0-9]+))?(?:${float_stre}|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i`;\nvar float_re = new RegExp(`^(#[ie])?${float_stre}$`, 'i');\nfunction make_complex_match_re(mnemonic, range) {\n // complex need special treatment of 10e+1i when it's hex or decimal\n var neg = mnemonic === 'x' ? `(?!\\\\+|${range})` : `(?!\\\\.|${range})`;\n var fl = '';\n if (mnemonic === '') {\n fl = '(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\\\.[0-9]+|[0-9]+\\\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))';\n }\n return new RegExp(`^((?:(?:${fl}|[-+]?inf.0|[-+]?nan.0|[+-]?${range}+/${range}+(?!${range})|[+-]?${range}+)${neg})?)(${fl}|[-+]?inf.0|[-+]?nan.0|[+-]?${range}+/${range}+|[+-]?${range}+|[+-])i$`, 'i');\n}\nvar complex_list_re = (function() {\n var result = {};\n [\n [10, '', '[0-9]'],\n [16, 'x', '[0-9a-fA-F]'],\n [8, 'o', '[0-7]'],\n [2, 'b', '[01]']\n ].forEach(([radix, mnemonic, range]) => {\n result[radix] = make_complex_match_re(mnemonic, range);\n });\n return result;\n})();\nconst characters = {\n 'alarm': '\\x07',\n 'backspace': '\\x08',\n 'delete': '\\x7F',\n 'escape': '\\x1B',\n 'newline': '\\n',\n 'null': '\\x00',\n 'return': '\\r',\n 'space': ' ',\n 'tab': '\\t',\n // new symbols from ASCII table in SRFI-175\n 'dle': '\\x10',\n 'soh': '\\x01',\n 'dc1': '\\x11',\n 'stx': '\\x02',\n 'dc2': '\\x12',\n 'etx': '\\x03',\n 'dc3': '\\x13',\n 'eot': '\\x04',\n 'dc4': '\\x14',\n 'enq': '\\x05',\n 'nak': '\\x15',\n 'ack': '\\x06',\n 'syn': '\\x16',\n 'bel': '\\x07',\n 'etb': '\\x17',\n 'bs': '\\x08',\n 'can': '\\x18',\n 'ht': '\\x09',\n 'em': '\\x19',\n 'lf': '\\x0a',\n 'sub': '\\x1a',\n 'vt': '\\x0b',\n 'esc': '\\x1b',\n 'ff': '\\x0c',\n 'fs': '\\x1c',\n 'cr': '\\x0d',\n 'gs': '\\x1d',\n 'so': '\\x0e',\n 'rs': '\\x1e',\n 'si': '\\x0f',\n 'us': '\\x1f',\n 'del': '\\x7f'\n};\n// -------------------------------------------------------------------------\n// :: ref: https://github.com/bestiejs/punycode.js/blob/master/punycode.js\n// -------------------------------------------------------------------------\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n// -------------------------------------------------------------------------\nconst character_symbols = Object.keys(characters).join('|');\nconst char_sre_re = `#\\\\\\\\(?:x[0-9a-f]+|${character_symbols}|[\\\\s\\\\S])`;\nconst char_re = new RegExp(`^${char_sre_re}$`, 'i');\n// complex with (int) (float) (rational)\nfunction make_num_stre(fn) {\n const ranges = [\n ['o', '[0-7]'],\n ['x', '[0-9a-fA-F]'],\n ['b', '[01]'],\n ['d', '[0-9]'],\n ['', '[0-9]']\n ];\n // float exception that don't accept mnemonics\n let result = ranges.map(([m, range]) => fn(m, range)).join('|');\n if (fn === gen_complex_re) {\n result = complex_float_stre + '|' + result;\n }\n return result;\n}\nfunction make_type_re(fn) {\n return new RegExp('^(?:' + make_num_stre(fn) + ')$', 'i');\n}\nconst complex_re = make_type_re(gen_complex_re);\nconst rational_re = make_type_re(gen_rational_re);\nconst int_re = make_type_re(gen_integer_re);\n\n// regexes with full range but without mnemonics for string->number\nconst int_bare_re = new RegExp('^(?:' + gen_integer_re('', '[0-9a-f]') + ')$', 'i');\nconst rational_bare_re = new RegExp('^(?:' + gen_rational_re('', '[0-9a-f]') + ')$', 'i');\nconst complex_bare_re = new RegExp('^(?:' + gen_complex_re('', '[0-9a-f]') + ')$', 'i');\n\nconst complex_bare_match_re = make_complex_match_re('', '[0-9a-fA-F]');\n\nconst pre_num_parse_re = /((?:#[xodbie]){0,2})(.*)/i;\n/* eslint-enable */\nfunction num_pre_parse(arg) {\n var parts = arg.match(pre_num_parse_re);\n var options = {};\n if (parts[1]) {\n var type = parts[1].replace(/#/g, '').toLowerCase().split('');\n if (type.includes('x')) {\n options.radix = 16;\n } else if (type.includes('o')) {\n options.radix = 8;\n } else if (type.includes('b')) {\n options.radix = 2;\n } else if (type.includes('d')) {\n options.radix = 10;\n }\n if (type.includes('i')) {\n options.inexact = true;\n }\n if (type.includes('e')) {\n options.exact = true;\n }\n }\n options.number = parts[2];\n return options;\n}\n// ----------------------------------------------------------------------\nfunction parse_rational(arg, radix = 10) {\n var parse = num_pre_parse(arg);\n var parts = parse.number.split('/');\n var num = LRational({\n num: LNumber([parts[0], parse.radix || radix]),\n denom: LNumber([parts[1], parse.radix || radix])\n });\n if (parse.inexact) {\n return num.valueOf();\n } else {\n return num;\n }\n}\n// ----------------------------------------------------------------------\nfunction parse_integer(arg, radix = 10) {\n var parse = num_pre_parse(arg);\n if (parse.inexact) {\n return LFloat(parseInt(parse.number, parse.radix || radix), true);\n }\n return LNumber([parse.number, parse.radix || radix]);\n}\n// ----------------------------------------------------------------------\nfunction parse_character(arg) {\n var m = arg.match(/#\\\\x([0-9a-f]+)$/i);\n var char;\n if (m) {\n var ord = parseInt(m[1], 16);\n char = String.fromCodePoint(ord);\n } else {\n m = arg.match(/#\\\\(.+)$/);\n if (m) {\n char = m[1];\n }\n }\n if (char) {\n return LCharacter(char);\n }\n throw new Error('Parse: invalid character');\n}\n// ----------------------------------------------------------------------\nfunction parse_complex(arg, radix = 10) {\n function parse_num(n) {\n var value;\n if (n === '+') {\n value = LNumber(1);\n } else if (n === '-') {\n value = LNumber(-1);\n } else if (n.match(int_bare_re)) {\n value = LNumber([n, radix]);\n } else if (n.match(rational_bare_re)) {\n var parts = n.split('/');\n value = LRational({\n num: LNumber([parts[0], radix]),\n denom: LNumber([parts[1], radix])\n });\n } else if (n.match(float_re)) {\n var float = parse_float(n);\n if (parse.exact) {\n return float.toRational();\n }\n return float;\n } else if (n.match(/nan.0$/)) {\n return LNumber(NaN);\n } else if (n.match(/inf.0$/)) {\n if (n[0] === '-') {\n return LNumber(Number.NEGATIVE_INFINITY);\n }\n return LNumber(Number.POSITIVE_INFINITY);\n } else {\n throw new Error('Internal Parser Error');\n }\n if (parse.inexact) {\n return LFloat(value.valueOf(), true);\n }\n return value;\n }\n var parse = num_pre_parse(arg);\n radix = parse.radix || radix;\n var parts;\n var bare_match = parse.number.match(complex_bare_match_re);\n if (radix !== 10 && bare_match) {\n parts = bare_match;\n } else {\n parts = parse.number.match(complex_list_re[radix]);\n }\n var re, im;\n im = parse_num(parts[2]);\n if (parts[1]) {\n re = parse_num(parts[1]);\n } else {\n re = LNumber(0);\n }\n if (im.cmp(0) === 0 && im.__type__ === 'bigint') {\n return re;\n }\n return LComplex({ im, re });\n}\n// ----------------------------------------------------------------------\nfunction is_int(value) {\n return parseInt(value.toString(), 10) === value;\n}\n// ----------------------------------------------------------------------\nfunction parse_big_int(str) {\n var num_match = str.match(/^(([-+]?[0-9]*)(?:\\.([0-9]+))?)e([-+]?[0-9]+)/i);\n if (num_match) {\n var exponent = parseInt(num_match[4], 10);\n var mantisa;// = parseFloat(num_match[1]);\n var digits = num_match[1].replace(/[-+]?([0-9]*)\\..+$/, '$1').length;\n var decimal_points = num_match[3] && num_match[3].length;\n if (digits < Math.abs(exponent)) {\n mantisa = LNumber([num_match[1].replace(/\\./, ''), 10]);\n if (decimal_points) {\n exponent -= decimal_points;\n }\n }\n }\n return { exponent, mantisa };\n}\n// ----------------------------------------------------------------------\nfunction parse_float(arg) {\n var parse = num_pre_parse(arg);\n var value = parseFloat(parse.number);\n var simple_number = (parse.number.match(/\\.0$/) ||\n !parse.number.match(/\\./)) && !parse.number.match(/e/i);\n if (!parse.inexact) {\n if (parse.exact && simple_number) {\n return LNumber(value);\n }\n // positive big num that eval to int e.g.: 1.2e+20\n if (is_int(value) && parse.number.match(/e\\+?[0-9]/i)) {\n return LNumber(value);\n }\n // calculate big int and big fration by hand - it don't fit into JS float\n var { mantisa, exponent } = parse_big_int(parse.number);\n if (mantisa !== undefined && exponent !== undefined) {\n var factor = LNumber(10).pow(LNumber(Math.abs(exponent)));\n if (parse.exact && exponent < 0) {\n return LRational({ num: mantisa, denom: factor });\n } else if (exponent > 0) {\n return LNumber(mantisa).mul(factor);\n }\n }\n }\n value = LFloat(value, true);\n if (parse.exact) {\n return value.toRational();\n }\n return value;\n}\n// ----------------------------------------------------------------------\nfunction parse_string(string) {\n // handle non JSON escapes and skip unicode escape \\u (even partial)\n string = string.replace(/\\\\x([0-9a-f]+);/ig, function(_, hex) {\n return \"\\\\u\" + hex.padStart(4, '0');\n }).replace(/\\n/g, '\\\\n'); // in LIPS strings can be multiline\n var m = string.match(/(\\\\*)(\\\\x[0-9A-F])/i);\n if (m && m[1].length % 2 === 0) {\n throw new Error(`Invalid string literal, unclosed ${m[2]}`);\n }\n try {\n return LString(JSON.parse(string));\n } catch (e) {\n throw new Error('Invalid string literal');\n }\n}\n// ----------------------------------------------------------------------\nfunction parse_symbol(arg) {\n if (arg.match(/^\\|.*\\|$/)) {\n arg = arg.replace(/(^\\|)|(\\|$)/g, '');\n var chars = {\n t: '\\t',\n r: '\\r',\n n: '\\n'\n };\n arg = arg.replace(/\\\\(x[^;]+);/g, function(_, chr) {\n return String.fromCharCode(parseInt('0' + chr, 16));\n }).replace(/\\\\(.)/g, function(_, chr) {\n return chars[chr] || chr;\n });\n }\n return new LSymbol(arg);\n}\n// ----------------------------------------------------------------------\nfunction parse_argument(arg) {\n if (constants.hasOwnProperty(arg)) {\n return constants[arg];\n }\n if (arg.match(/^\"[\\s\\S]*\"$/)) {\n return parse_string(arg);\n } else if (arg[0] === '#') {\n var regex = arg.match(re_re);\n if (regex) {\n return new RegExp(regex[1], regex[2]);\n } else if (arg.match(char_re)) {\n return parse_character(arg);\n }\n // characters with more than one codepoint\n var m = arg.match(/#\\\\(.+)/);\n if (m && ucs2decode(m[1]).length === 1) {\n return parse_character(arg);\n }\n }\n if (arg.match(/[0-9a-f]|[+-]i/i)) {\n if (arg.match(int_re)) {\n return parse_integer(arg);\n } else if (arg.match(float_re)) {\n return parse_float(arg);\n } else if (arg.match(rational_re)) {\n return parse_rational(arg);\n } else if (arg.match(complex_re)) {\n return parse_complex(arg);\n }\n }\n if (arg.match(/^#[iexobd]/)) {\n throw new Error('Invalid numeric constant: ' + arg);\n }\n return parse_symbol(arg);\n}\n// ----------------------------------------------------------------------\nfunction is_atom_string(str) {\n return !(['(', ')', '[', ']'].includes(str) ||\n specials.names().includes(str));\n}\n// ----------------------------------------------------------------------\nfunction is_symbol_string(str) {\n return is_atom_string(str) &&\n !(str.match(re_re) ||\n str.match(/^\"[\\s\\S]*\"$/) || str.match(int_re) ||\n str.match(float_re) || str.match(complex_re) ||\n str.match(rational_re) || str.match(char_re) ||\n ['#t', '#f', 'nil', 'true', 'false'].includes(str));\n}\n// ----------------------------------------------------------------------\nvar string_re = /\"(?:\\\\[\\S\\s]|[^\"])*\"?/g;\n// ----------------------------------------------------------------------\nfunction escape_regex(str) {\n if (typeof str === 'string') {\n var special = /([-\\\\^$[\\]()+{}?*.|])/g;\n return str.replace(special, '\\\\$1');\n }\n return str;\n}\n// ----------------------------------------------------------------------\n// Stack used in balanced function\n// TODO: use it in parser\n// ----------------------------------------------------------------------\nfunction Stack() {\n this.data = [];\n}\nStack.prototype.push = function(item) {\n this.data.push(item);\n};\nStack.prototype.top = function() {\n return this.data[this.data.length - 1];\n};\nStack.prototype.pop = function() {\n return this.data.pop();\n};\nStack.prototype.is_empty = function() {\n return !this.data.length;\n};\n// ----------------------------------------------------------------------\nfunction tokens(str) {\n if (str instanceof LString) {\n str = str.valueOf();\n }\n var lexer = new Lexer(str, { whitespace: true });\n var result = [];\n while (true) {\n const token = lexer.peek(true);\n if (token === eof) {\n break;\n }\n result.push(token);\n lexer.skip();\n }\n return result;\n}\n// ----------------------------------------------------------------------\nfunction multiline_formatter(meta) {\n var { token, ...rest } = meta;\n if (token.match(/^\"[\\s\\S]*\"$/) && token.match(/\\n/)) {\n var re = new RegExp('^ {1,' + (meta.col + 1) + '}', 'mg');\n token = token.replace(re, '');\n }\n return {\n token,\n ...rest\n };\n}\n// ----------------------------------------------------------------------\nfunction Thunk(fn, cont = () => {}) {\n this.fn = fn;\n this.cont = cont;\n}\n// ----------------------------------------------------------------------\nThunk.prototype.toString = function() {\n return '#';\n};\n// ----------------------------------------------------------------------\nfunction trampoline(fn) {\n return function(...args) {\n return unwind(fn.apply(this, args));\n };\n}\n// ----------------------------------------------------------------------\nfunction unwind(result) {\n while (result instanceof Thunk) {\n const thunk = result;\n result = result.fn();\n if (!(result instanceof Thunk)) {\n thunk.cont();\n }\n }\n return result;\n}\n// ----------------------------------------------------------------------\nfunction tokenize(str, meta = false) {\n if (str instanceof LString) {\n str = str.toString();\n }\n if (meta) {\n return tokens(str);\n } else {\n var result = tokens(str).map(function(token) {\n // we don't want literal space character to be trimmed\n if (token.token === '#\\\\ ') {\n return token.token;\n }\n return token.token.trim();\n }).filter(function(token) {\n return token && !token.match(/^;/) && !token.match(/^#\\|[\\s\\S]*\\|#$/);\n });\n return strip_s_comments(result);\n }\n}\n// ----------------------------------------------------------------------\nfunction strip_s_comments(tokens) {\n var s_count = 0;\n var s_start = null;\n var remove_list = [];\n for (let i = 0; i < tokens.length; ++i) {\n const token = tokens[i];\n if (token === '#;') {\n if (['(', '['].includes(tokens[i + 1])) {\n s_count = 1;\n s_start = i;\n } else {\n remove_list.push([i, i + 2]);\n }\n i += 1;\n continue;\n }\n if (s_start !== null) {\n if ([')', ']'].includes(token)) {\n s_count--;\n } else if (['(', '['].includes(token)) {\n s_count++;\n }\n if (s_count === 0) {\n remove_list.push([s_start, i + 1]);\n s_start = null;\n }\n }\n }\n tokens = tokens.slice();\n remove_list.reverse();\n for (const [begin, end] of remove_list) {\n tokens.splice(begin, end - begin);\n }\n return tokens;\n}\n// ----------------------------------------------------------------------\n// detect if object is ES6 Symbol that work with polyfills\n// ----------------------------------------------------------------------\nfunction isSymbol(x) {\n return typeof x === 'symbol' ||\n typeof x === 'object' &&\n Object.prototype.toString.call(x) === '[object Symbol]';\n}\n// ----------------------------------------------------------------------\n// :: LSymbol constructor\n// ----------------------------------------------------------------------\nfunction LSymbol(name) {\n if (typeof this !== 'undefined' && this.constructor !== LSymbol ||\n typeof this === 'undefined') {\n return new LSymbol(name);\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n if (LSymbol.list[name] instanceof LSymbol) {\n return LSymbol.list[name];\n }\n this.__name__ = name;\n if (typeof name === 'string') {\n LSymbol.list[name] = this;\n }\n}\nLSymbol.list = {};\nLSymbol.literal = Symbol.for('__literal__');\nLSymbol.object = Symbol.for('__object__');\n// ----------------------------------------------------------------------\nLSymbol.is = function(symbol, name) {\n return symbol instanceof LSymbol &&\n ((name instanceof LSymbol && symbol.__name__ === name.__name__) ||\n (typeof name === 'string' && symbol.__name__ === name) ||\n (name instanceof RegExp && name.test(symbol.__name__)));\n};\n// ----------------------------------------------------------------------\nLSymbol.prototype.toString = function(quote) {\n //return '#';\n if (isSymbol(this.__name__)) {\n return symbol_to_string(this.__name__);\n }\n var str = this.valueOf();\n // those special characters can be normal symbol when printed\n if (quote && str.match(/(^;|[\\s()[\\]'])/)) {\n return `|${str}|`;\n }\n return str;\n};\nLSymbol.prototype.literal = function() {\n if (this.is_gensym()) {\n return this[LSymbol.literal];\n }\n return this.valueOf();\n};\nLSymbol.prototype.serialize = function() {\n if (LString.isString(this.__name__)) {\n return this.__name__;\n }\n return [symbol_to_string(this.__name__)];\n};\nLSymbol.prototype.valueOf = function() {\n return this.__name__.valueOf();\n};\n// -------------------------------------------------------------------------\nLSymbol.prototype.is_gensym = function() {\n return is_gensym(this.__name__);\n};\n// -------------------------------------------------------------------------\nfunction symbol_to_string(obj) {\n return obj.toString().replace(/^Symbol\\(([^)]+)\\)/, '$1');\n}\n// -------------------------------------------------------------------------\nfunction is_gensym(symbol) {\n if (typeof symbol === 'symbol') {\n return !!symbol.toString().match(/^Symbol\\(#:/);\n }\n return false;\n}\n// -------------------------------------------------------------------------\nvar gensym = (function() {\n var count = 0;\n function with_props(name, sym) {\n var symbol = new LSymbol(sym);\n hidden_prop(symbol, '__literal__', name);\n return symbol;\n }\n return function(name = null) {\n if (name instanceof LSymbol) {\n if (name.is_gensym()) {\n return name;\n }\n name = name.valueOf();\n }\n if (is_gensym(name)) {\n // don't do double gynsyms in nested syntax-rules\n return LSymbol(name);\n }\n // use ES6 symbol as name for lips symbol (they are unique)\n if (name !== null) {\n return with_props(name, Symbol(`#:${name}`));\n }\n count++;\n return with_props(count, Symbol(`#:g${count}`));\n };\n})();\n// ----------------------------------------------------------------------\n// class used to escape promises feature #54\n// ----------------------------------------------------------------------\nfunction QuotedPromise(promise) {\n var internal = {\n pending: true,\n rejected: false,\n fulfilled: false,\n reason: undefined,\n type: undefined\n };\n // then added to __promise__ is needed otherwise rejection\n // will give UnhandledPromiseRejectionWarning in Node.js\n promise = promise.then(v => {\n internal.type = type(v);\n internal.fulfilled = true;\n internal.pending = false;\n return v;\n });\n // promise without catch, used for valueOf - for rejecting\n // that should throw an error when used with await\n read_only(this, '_promise', promise, { hidden: true });\n if (is_function(promise.catch)) {\n // prevent exception on unhandled rejecting when using\n // '>(Promise.reject (new Error \"zonk\")) in REPL\n promise = promise.catch((err) => {\n internal.rejected = true;\n internal.pending = false;\n internal.reason = err;\n });\n }\n Object.keys(internal).forEach(name => {\n Object.defineProperty(this, `__${name}__`, {\n enumerable: true,\n get: () => internal[name]\n });\n });\n read_only(this, '__promise__', promise);\n // prevent resolving when returned from real promise #153\n this.then = false;\n}\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.then = function(fn) {\n return new QuotedPromise(this.valueOf().then(fn));\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.catch = function(fn) {\n return new QuotedPromise(this.valueOf().catch(fn));\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.valueOf = function() {\n if (!this._promise) {\n throw new Error('QuotedPromise: invalid promise created');\n }\n return this._promise;\n};\n// ----------------------------------------------------------------------\nQuotedPromise.prototype.toString = function() {\n if (this.__pending__) {\n return QuotedPromise.pending_str;\n }\n if (this.__rejected__) {\n return QuotedPromise.rejected_str;\n }\n return `#`;\n};\nQuotedPromise.pending_str = '#';\nQuotedPromise.rejected_str = '#';\n// ----------------------------------------------------------------------\n// wrapper over Promise.all that ignore quoted promises\n// ----------------------------------------------------------------------\nfunction promise_all(arg) {\n if (Array.isArray(arg)) {\n return Promise.all(escape_quoted_promises(arg))\n .then(unescape_quoted_promises);\n }\n return arg;\n}\n// ----------------------------------------------------------------------\nfunction escape_quoted_promises(array) {\n // using loops for performance\n var escaped = new Array(array.length), i = array.length;\n while (i--) {\n const value = array[i];\n if (value instanceof QuotedPromise) {\n escaped[i] = new Value(value);\n } else {\n escaped[i] = value;\n }\n }\n return escaped;\n}\n// ----------------------------------------------------------------------\nfunction unescape_quoted_promises(array) {\n var unescaped = new Array(array.length), i = array.length;\n while (i--) {\n var value = array[i];\n if (value instanceof Value) {\n unescaped[i] = value.valueOf();\n } else {\n unescaped[i] = value;\n }\n }\n return unescaped;\n}\n// ----------------------------------------------------------------------\n// :: Parser macros transformers\n// ----------------------------------------------------------------------\nvar specials = {\n LITERAL: Symbol.for('literal'),\n SPLICE: Symbol.for('splice'),\n SYMBOL: Symbol.for('symbol'),\n names: function() {\n return Object.keys(this._specials);\n },\n type: function(name) {\n return this.get(name).type;\n },\n get: function(name) {\n return this._specials[name];\n },\n // events are used in Lexer dynamic rules\n off: function(name, fn = null) {\n if (Array.isArray(name)) {\n name.forEach(name => this.off(name, fn));\n } else if (fn === null) {\n delete this._events[name];\n } else {\n this._events = this._events.filter(test => test !== fn);\n }\n },\n on: function(name, fn) {\n if (Array.isArray(name)) {\n name.forEach(name => this.on(name, fn));\n } else if (!this._events[name]) {\n this._events[name] = [fn];\n } else {\n this._events[name].push(fn);\n }\n },\n trigger: function(name, ...args) {\n if (this._events[name]) {\n this._events[name].forEach(fn => fn(...args));\n }\n },\n remove: function(name) {\n this.trigger('remove');\n delete this._specials[name];\n },\n append: function(name, value, type) {\n this.trigger('append');\n this._specials[name] = {\n seq: name,\n symbol: value,\n type\n };\n },\n _events: {},\n _specials: {}\n};\nfunction is_special(token) {\n return specials.names().includes(token);\n}\nfunction is_builtin(token) {\n return specials.builtin.includes(token);\n}\nfunction is_literal(special) {\n return specials.type(special) === specials.LITERAL;\n}\n// ----------------------------------------------------------------------\nvar defined_specials = [\n [\"'\", new LSymbol('quote'), specials.LITERAL],\n ['`', new LSymbol('quasiquote'), specials.LITERAL],\n [',@', new LSymbol('unquote-splicing'), specials.LITERAL],\n [',', new LSymbol('unquote'), specials.LITERAL],\n [\"'>\", new LSymbol('quote-promise'), specials.LITERAL]\n];\nObject.defineProperty(specials, 'builtin', {\n writable: false,\n value: defined_specials.map(arr => arr[0])\n});\ndefined_specials.forEach(([seq, symbol, type]) => {\n specials.append(seq, symbol, type);\n});\n// ----------------------------------------------------------------------\n// :: Finite State Machine based incremental Lexer\n// ----------------------------------------------------------------------\n/* Lexer debugger\n var DEBUG = false;\n function log(...args) {\n if (DEBUG) {\n console.log(...args);\n }\n }\n*/\nclass Lexer {\n constructor(input, { whitespace = false } = {}) {\n read_only(this, '__input__', input.replace(/\\r/g, ''));\n var internals = {};\n // hide internals from introspection\n [\n '_i', '_whitespace', '_col', '_newline', '_line',\n '_state', '_next', '_token', '_prev_char'\n ].forEach(name => {\n Object.defineProperty(this, name, {\n configurable: false,\n enumerable: false,\n get() {\n return internals[name];\n },\n set(value) {\n internals[name] = value;\n }\n });\n });\n this._whitespace = whitespace;\n this._i = this._line = this._col = this._newline = 0;\n this._state = this._next = this._token = null;\n this._prev_char = '';\n }\n get(name) {\n return this.__internal[name];\n }\n set(name, value) {\n this.__internal[name] = value;\n }\n token(meta = false) {\n if (meta) {\n let line = this._line;\n if (this._whitespace && this._token === '\\n') {\n --line;\n }\n return {\n token: this._token,\n col: this._col,\n offset: this._i,\n line\n };\n }\n return this._token;\n }\n peek(meta = false) {\n if (this._i >= this.__input__.length) {\n return eof;\n }\n if (this._token) {\n return this.token(meta);\n }\n var found = this.next_token();\n if (found) {\n this._token = this.__input__.substring(this._i, this._next);\n return this.token(meta);\n }\n return eof;\n }\n skip() {\n if (this._next !== null) {\n this._token = null;\n this._i = this._next;\n }\n }\n read_line() {\n var len = this.__input__.length;\n if (this._i >= len) {\n return eof;\n }\n for (let i = this._i; i < len; ++i) {\n var char = this.__input__[i];\n if (char === '\\n') {\n const line = this.__input__.substring(this._i, i);\n this._i = i + 1;\n ++this._line;\n return line;\n }\n }\n return this.read_rest();\n }\n read_rest() {\n const i = this._i;\n this._i = this.__input__.length;\n return this.__input__.substring(i);\n }\n read_string(num) {\n const len = this.__input__.length;\n if (this._i >= len) {\n return eof;\n }\n if (num + this._i >= len) {\n return this.read_rest();\n }\n const end = this._i + num;\n const result = this.__input__.substring(this._i, end);\n const found = result.match(/\\n/g);\n if (found) {\n this._line += found.length;\n }\n this._i = end;\n return result;\n }\n peek_char() {\n if (this._i >= this.__input__.length) {\n return eof;\n }\n return LCharacter(this.__input__[this._i]);\n }\n read_char() {\n const char = this.peek_char();\n this.skip_char();\n return char;\n }\n skip_char() {\n if (this._i < this.__input__.length) {\n ++this._i;\n this._token = null;\n }\n }\n match_rule(rule, { prev_char, char, next_char } = {}) {\n var [ re, prev_re, next_re, state ] = rule;\n if (rule.length !== 5) {\n throw new Error(`Lexer: Invalid rule of length ${rule.length}`);\n }\n if (!char.match(re)) {\n return false;\n }\n if (!match_or_null(prev_re, prev_char)) {\n return false;\n }\n if (!match_or_null(next_re, next_char)) {\n return false;\n }\n if (state !== this._state) {\n return false;\n }\n return true;\n }\n next_token() {\n if (this._i >= this.__input__.length) {\n return false;\n }\n var start = true;\n loop:\n for (let i = this._i, len = this.__input__.length; i < len; ++i) {\n var char = this.__input__[i];\n var prev_char = this.__input__[i - 1] || '';\n var next_char = this.__input__[i + 1] || '';\n if (char === '\\n') {\n ++this._line;\n const newline = this._newline;\n if (this._state === null) {\n // keep beging of newline to calculate col\n // we don't want to check inside the token (e.g. strings)\n this._newline = i + 1;\n }\n if (this._whitespace && this._state === null) {\n this._next = i + 1;\n this._col = this._i - newline;\n return true;\n }\n }\n // skip leadning spaces\n if (start && this._state === null && char.match(/\\s/)) {\n if (this._whitespace) {\n if (!next_char.match(/\\s/)) {\n this._next = i + 1;\n this._col = this._i - this._newline;\n return true;\n } else {\n continue;\n }\n } else {\n this._i = i + 1;\n continue;\n }\n }\n start = false;\n for (let rule of Lexer.rules) {\n if (this.match_rule(rule, { prev_char, char, next_char })) {\n // change state to null is end of the token\n var next_state = rule[rule.length - 1];\n this._state = next_state;\n if (this._state === null) {\n this._next = i + 1;\n this._col = this._i - this._newline;\n return true;\n }\n // token is activated\n continue loop;\n }\n }\n if (this._state !== null) {\n // collect char in token\n continue loop;\n }\n // no rule for token\n var line = this.__input__.split('\\n')[this._line];\n throw new Error(`Invalid Syntax at line ${this._line}\\n${line}`);\n }\n }\n}\n// ----------------------------------------------------------------------\n// TODO: cache the rules creation or whole list\n// ----------------------------------------------------------------------\nLexer.symbol_rule = function symbol_rule(string, symbol) {\n var rules = Lexer.literal_rule(string, symbol, Lexer.boundary, /\\S/);\n\n return rules.concat([\n [/\\S/, /\\S/, Lexer.boundary, null, null],\n [/\\S/, /\\S/, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, Lexer.symbol, null]\n ]);\n};\n// ----------------------------------------------------------------------\n// state rule for literal symbol\n// ----------------------------------------------------------------------\nLexer.literal_rule = function literal_rule(string, symbol, p_re = null, n_re = null) {\n if (string.length === 0) {\n throw new Error('Lexer: invalid literal rule');\n }\n if (string.length === 1) {\n return [[string, p_re, n_re, null, null]];\n }\n var rules = [];\n for (let i = 0, len = string.length; i < len; ++i) {\n const rule = [];\n rule.push(string[i]);\n rule.push(string[i - 1] || p_re);\n rule.push(string[i + 1] || n_re);\n if (i === 0) {\n rule.push(null);\n rule.push(symbol);\n } else if (i === len - 1) {\n rule.push(symbol);\n rule.push(null);\n } else {\n rule.push(symbol);\n rule.push(symbol);\n }\n rules.push(rule);\n }\n return rules;\n};\n// ----------------------------------------------------------------------\nLexer.string = Symbol.for('string');\nLexer.symbol = Symbol.for('symbol');\nLexer.comment = Symbol.for('comment');\nLexer.regex = Symbol.for('regex');\nLexer.regex_class = Symbol.for('regex_class');\nLexer.character = Symbol.for('character');\nLexer.bracket = Symbol.for('bracket');\nLexer.b_symbol = Symbol.for('b_symbol');\nLexer.b_comment = Symbol.for('b_comment');\nLexer.i_comment = Symbol.for('i_comment');\nLexer.l_datum = Symbol.for('l_datum');\nLexer.dot = Symbol.for('dot');\n// ----------------------------------------------------------------------\nLexer.boundary = /^$|[\\s()[\\]']/;\n// ----------------------------------------------------------------------\nLexer._rules = [\n // char_re prev_re next_re from_state to_state\n // null as to_state mean that is single char token\n // string\n [/\"/, /^$|[^\\\\]/, null, null, Lexer.string],\n [/\"/, /^$|[^\\\\]/, null, Lexer.string, null],\n\n // hash special symbols, lexer don't need to distinguish those\n // we only care if it's not pick up by vectors literals\n [/#/, null, /[bdxoeitf]/i, null, Lexer.symbol],\n\n // characters\n [/#/, null, /\\\\/, null, Lexer.character],\n [/\\\\/, /#/, /\\s/, Lexer.character, Lexer.character],\n [/\\\\/, /#/, /[()[\\]]/, Lexer.character, Lexer.character],\n [/\\s/, /\\\\/, null, Lexer.character, null],\n [/\\S/, null, Lexer.boundary, Lexer.character, null],\n\n // regex\n [/#/, Lexer.boundary, /\\//, null, Lexer.regex],\n [/[ \\t]/, null, null, Lexer.regex, Lexer.regex],\n [/\\[/, null, null, Lexer.regex, Lexer.regex_class],\n [/\\]/, /[^\\\\]/, null, Lexer.regex_class, Lexer.regex],\n [/[()[\\]]/, null, null, Lexer.regex, Lexer.regex],\n [/\\//, /\\\\/, null, Lexer.regex, Lexer.regex],\n [/\\//, /[^#]/, Lexer.boundary, Lexer.regex, null],\n [/[gimyus]/, /\\//, Lexer.boundary, Lexer.regex, null],\n [/[gimyus]/, /\\//, /[gimyus]/, Lexer.regex, Lexer.regex],\n [/[gimyus]/, /[gimyus]/, Lexer.boundary, Lexer.regex, null],\n\n // comment\n [/;/, /^$|[^#]/, null, null, Lexer.comment],\n [/[\\s\\S]/, null, /\\n/, Lexer.comment, null],\n [/\\s/, null, null, Lexer.comment, Lexer.comment],\n\n // block comment\n [/#/, null, /\\|/, null, Lexer.b_comment],\n [/\\s/, null, null, Lexer.b_comment, Lexer.b_comment],\n [/#/, /\\|/, null, Lexer.b_comment, null],\n\n // inline commentss\n [/#/, null, /;/, null, Lexer.i_comment],\n [/;/, /#/, null, Lexer.i_comment, null],\n\n // datum label\n [/#/, null, /[0-9]/, null, Lexer.l_datum],\n [/=/, /[0-9]/, null, Lexer.l_datum, null],\n [/#/, /[0-9]/, null, Lexer.l_datum, null],\n\n // for dot comma `(a .,b)\n [/\\./, Lexer.boundary, /,/, null, null],\n\n // block symbols\n [/\\|/, null, null, null, Lexer.b_symbol],\n [/\\s/, null, null, Lexer.b_symbol, Lexer.b_symbol],\n [/\\|/, null, Lexer.boundary, Lexer.b_symbol, null]\n];\n// ----------------------------------------------------------------------\nLexer._brackets = [\n [/[()[\\]]/, null, null, null, null]\n];\n// ----------------------------------------------------------------------\n// :: symbols should be matched last\n// ----------------------------------------------------------------------\nLexer._symbol_rules = [\n [/\\S/, Lexer.boundary, Lexer.boundary, null, null],\n [/\\S/, Lexer.boundary, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, null, null],\n [/\\S/, null, null, null, Lexer.symbol],\n [/\\S/, null, Lexer.boundary, Lexer.symbol, null]\n];\n// ----------------------------------------------------------------------\n// :: dynamic getter or Lexer state rules, parser use this\n// :: so in fact user code can modify lexer using syntax extensions\n// ----------------------------------------------------------------------\nLexer._cache = {\n valid: false,\n rules: null\n};\n// ----------------------------------------------------------------------\nspecials.on(['remove', 'append'], function() {\n Lexer._cache.valid = false;\n Lexer._cache.rules = null;\n});\n// ----------------------------------------------------------------------\nObject.defineProperty(Lexer, 'rules', {\n get() {\n if (Lexer._cache.valid) {\n return Lexer._cache.rules;\n }\n var tokens = specials.names().sort((a, b) => {\n return b.length - a.length || a.localeCompare(b);\n });\n\n var special_rules = tokens.reduce((acc, token) => {\n const { type, symbol: special_symbol } = specials.get(token);\n let rules;\n let symbol;\n // we need distinct symbols_ for syntax extensions\n if (token[0] === '#') {\n if (token.length === 1) {\n symbol = Symbol.for(token);\n } else {\n symbol = Symbol.for(token[1]);\n }\n } else {\n symbol = special_symbol;\n }\n if (type === specials.SYMBOL) {\n rules = Lexer.symbol_rule(token, symbol);\n } else {\n rules = Lexer.literal_rule(token, symbol);\n }\n return acc.concat(rules);\n }, []);\n\n Lexer._cache.rules = Lexer._rules.concat(\n Lexer._brackets,\n special_rules,\n Lexer._symbol_rules\n );\n\n Lexer._cache.valid = true;\n return Lexer._cache.rules;\n }\n});\n// ----------------------------------------------------------------------\nfunction match_or_null(re, char) {\n return re === null || char.match(re);\n}\n// ----------------------------------------------------------------------\n// :: Parser inspired by BiwaScheme\n// :: ref: https://github.com/biwascheme/biwascheme/blob/master/src/system/parser.js\n// ----------------------------------------------------------------------\nclass Parser {\n constructor(arg, { env, meta = false, formatter = multiline_formatter } = {}) {\n if (arg instanceof LString) {\n arg = arg.toString();\n }\n\n read_only(this, '_formatter', formatter, { hidden: true });\n read_only(this, '__lexer__', new Lexer(arg));\n read_only(this, '__env__', env);\n\n read_only(this, '_meta', meta, { hidden: true });\n // datum labels\n read_only(this, '_refs', [], { hidden: true });\n }\n resolve(name) {\n return this.__env__ && this.__env__.get(name, { throwError: false });\n }\n async peek() {\n let token;\n while (true) {\n token = this.__lexer__.peek(true);\n if (token === eof) {\n return eof;\n }\n if (this.is_comment(token.token)) {\n this.skip();\n continue;\n }\n if (token.token === '#;') {\n this.skip();\n if (this.__lexer__.peek() === eof) {\n throw new Error('Lexer: syntax error eof found after comment');\n }\n await this._read_object();\n continue;\n }\n break;\n }\n token = this._formatter(token);\n if (this._meta) {\n return token;\n }\n return token.token;\n }\n reset() {\n this._refs.length = 0;\n }\n skip() {\n this.__lexer__.skip();\n }\n async read() {\n const token = await this.peek();\n this.skip();\n return token;\n }\n match_datum_label(token) {\n var m = token.match(/^#([0-9]+)=$/);\n return m && m[1];\n }\n match_datum_ref(token) {\n var m = token.match(/^#([0-9]+)#$/);\n return m && m[1];\n }\n is_open(token) {\n return ['(', '['].includes(token);\n }\n is_close(token) {\n return [')', ']'].includes(token);\n }\n async read_list() {\n let head = nil, prev = head;\n while (true) {\n const token = await this.peek();\n if (token === eof) {\n break;\n }\n if (this.is_close(token)) {\n this.skip();\n break;\n }\n if (token === '.' && head !== nil) {\n this.skip();\n prev.cdr = await this._read_object();\n } else {\n const cur = new Pair(await this._read_object(), nil);\n if (head === nil) {\n head = cur;\n } else {\n prev.cdr = cur;\n }\n prev = cur;\n }\n }\n return head;\n }\n async read_value() {\n var token = await this.read();\n if (token === eof) {\n throw new Error('Parser: Expected token eof found');\n }\n return parse_argument(token);\n }\n is_comment(token) {\n return token.match(/^;/) || (token.match(/^#\\|/) && token.match(/\\|#$/));\n }\n evaluate(code) {\n return evaluate(code, { env: this.__env__, error: (e) => {\n throw e;\n } });\n }\n // public API that handle R7RS datum labels\n async read_object() {\n this.reset();\n var object = await this._read_object();\n if (object instanceof DatumReference) {\n object = object.valueOf();\n }\n if (this._refs.length) {\n return this._resolve_object(object);\n }\n return object;\n }\n async _resolve_object(object) {\n if (Array.isArray(object)) {\n return object.map(item => this._resolve_object(item));\n }\n if (is_plain_object(object)) {\n var result = {};\n Object.keys(object).forEach(key => {\n result[key] = this._resolve_object(object[key]);\n });\n return result;\n }\n if (object instanceof Pair) {\n return this._resolve_pair(object);\n }\n return object;\n }\n async _resolve_pair(pair) {\n if (pair instanceof Pair) {\n if (pair.car instanceof DatumReference) {\n pair.car = await pair.car.valueOf();\n } else {\n this._resolve_pair(pair.car);\n }\n if (pair.cdr instanceof DatumReference) {\n pair.cdr = await pair.cdr.valueOf();\n } else {\n this._resolve_pair(pair.cdr);\n }\n }\n return pair;\n }\n async _read_object() {\n const token = await this.peek();\n if (token === eof) {\n return token;\n }\n if (is_special(token)) {\n // builtin parser extensions are mapping short symbol to longer symbol\n // that can be function or macro, parser don't care\n // if it's not builtin then the extension can be macro or function\n // FUNCTION: when it's used it get arguments like FEXPR and\n // result is returned by parser as is\n // MACRO: if macros are used they are evaluated in place and\n // result is returned by parser but they are quoted\n const special = specials.get(token);\n const builtin = is_builtin(token);\n this.skip();\n let expr;\n const object = await this._read_object();\n if (!builtin) {\n var extension = this.__env__.get(special.symbol);\n if (typeof extension === 'function') {\n if (is_literal(token)) {\n return extension.call(this.__env__, object);\n } else if (object instanceof Pair) {\n return extension.apply(this.__env__, object.to_array(false));\n }\n throw new Error('Parse Error: Invalid parser extension ' +\n `invocation ${special.symbol}`);\n }\n }\n if (is_literal(token)) {\n expr = new Pair(\n special.symbol,\n new Pair(\n object,\n nil\n )\n );\n } else {\n expr = new Pair(\n special.symbol,\n object\n );\n }\n // builtin parser extensions just expand into lists like 'x ==> (quote x)\n if (builtin) {\n return expr;\n }\n // evaluate parser extension at parse time\n if (extension instanceof Macro) {\n var result = await this.evaluate(expr);\n // we need literal quote to make macro that return pair works\n // because after parser return the value it will be evaluated again\n // by the interpreter, so we create quoted expression\n if (result instanceof Pair || result instanceof LSymbol) {\n return Pair.fromArray([LSymbol('quote'), result]);\n }\n return result;\n } else {\n throw new Error('Parse Error: invalid parser extension: ' +\n special.symbol);\n }\n }\n var ref = this.match_datum_ref(token);\n if (ref !== null) {\n this.skip();\n if (this._refs[ref]) {\n return new DatumReference(ref, this._refs[ref]);\n }\n throw new Error(`Parse Error: invalid datum label #${ref}#`);\n }\n var ref_label = this.match_datum_label(token);\n if (ref_label !== null) {\n this.skip();\n this._refs[ref_label] = this._read_object();\n return this._refs[ref_label];\n } else if (this.is_open(token)) {\n this.skip();\n return this.read_list();\n } else {\n return this.read_value();\n }\n }\n}\n// ----------------------------------------------------------------------\n// :: parser helper that allow to handle circular list structures\n// :: using datum labels\n// ----------------------------------------------------------------------\nclass DatumReference {\n constructor(name, data) {\n this.name = name;\n this.data = data;\n }\n valueOf() {\n return this.data;\n }\n}\n// ----------------------------------------------------------------------\n// :: tokens are the array of strings from tokenizer\n// :: the return value is array of lisp code created out of Pair class\n// :: env is needed for parser extensions that will invoke the function\n// :: or macro assigned to symbol, this function is async because\n// :: it evaluate the code, from parser extensions, that may return promise\n// ----------------------------------------------------------------------\nasync function* parse(arg, env) {\n if (!env) {\n if (global_env) {\n env = global_env.get('**interaction-environment**', {\n throwError: false\n });\n } else {\n env = user_env;\n }\n }\n const parser = new Parser(arg, { env });\n while (true) {\n const expr = await parser.read_object();\n if (expr === eof) {\n break;\n }\n yield expr;\n }\n}\n// ----------------------------------------------------------------------\nfunction unpromise(value, fn = x => x, error = null) {\n if (is_promise(value)) {\n var ret = value.then(fn);\n if (error === null) {\n return ret;\n } else {\n return ret.catch(error);\n }\n }\n if (value instanceof Array) {\n return unpromise_array(value, fn, error);\n }\n if (is_plain_object(value)) {\n return unpromise_object(value, fn, error);\n }\n return fn(value);\n}\n// ----------------------------------------------------------------------\nfunction unpromise_array(array, fn, error) {\n if (array.find(is_promise)) {\n return unpromise(promise_all(array), (arr) => {\n if (Object.isFrozen(array)) {\n Object.freeze(arr);\n }\n return arr;\n }, error);\n }\n return fn(array);\n}\n// ----------------------------------------------------------------------\nfunction unpromise_object(object, fn, error) {\n const keys = Object.keys(object);\n const values = [], anyPromise = [];\n let i = keys.length;\n while (i--) {\n const key = keys[i];\n const value = object[key];\n values[i] = value;\n if (is_promise(value)) {\n anyPromise.push(value);\n }\n }\n if (anyPromise.length) {\n return unpromise(promise_all(values), (values) => {\n const result = {};\n values.forEach((value, i) => {\n const key = keys[i];\n result[key] = value;\n });\n if (Object.isFrozen(object)) {\n Object.freeze(result);\n }\n return result;\n }, error);\n }\n return fn(object);\n}\n// ----------------------------------------------------------------------\nfunction read_only(object, property, value, { hidden = false } = {}) {\n Object.defineProperty(object, property, {\n value,\n configurable: true,\n enumerable: !hidden\n });\n}\n// ----------------------------------------------------------------------\n// :: Function similar to Array.from that work on async iterators\n// ----------------------------------------------------------------------\nasync function uniterate_async(object) {\n const result = [];\n for await (let item of object) {\n result.push(item);\n }\n return result;\n}\n// ----------------------------------------------------------------------\n// :: function that return mather function that match string against string\n// ----------------------------------------------------------------------\nfunction matcher(name, arg) {\n if (arg instanceof RegExp) {\n return x => String(x).match(arg);\n } else if (is_function(arg)) {\n // it will always be function\n return arg;\n }\n throw new Error('Invalid matcher');\n}\n// ----------------------------------------------------------------------\n// :: documentation decorator to LIPS functions if lines starts with :\n// :: they are ignored (not trim) otherwise it trim so\n// :: so you can have indent in source code\n// ----------------------------------------------------------------------\nfunction doc(name, fn, doc, dump) {\n if (typeof name !== 'string') {\n fn = arguments[0];\n doc = arguments[1];\n dump = arguments[2];\n name = null;\n }\n if (doc) {\n if (dump) {\n fn.__doc__ = doc;\n } else {\n fn.__doc__ = trim_lines(doc);\n }\n }\n if (name) {\n fn.__name__ = name;\n } else if (fn.name && !is_lambda(fn)) {\n fn.__name__ = fn.name;\n }\n return fn;\n}\n// ----------------------------------------------------------------------\nfunction trim_lines(string) {\n return string.split('\\n').map(line => {\n return line.trim();\n }).join('\\n');\n}\n// ----------------------------------------------------------------------\n// return last S-Expression\n// @param tokens - array of tokens (objects from tokenizer or strings)\n// @param sexp - number of expression to look behind\n// ----------------------------------------------------------------------\nfunction previousSexp(tokens, sexp = 1) {\n var i = tokens.length;\n if (sexp <= 0) {\n throw Error(`previousSexp: Invalid argument sexp = ${sexp}`);\n }\n outer: while (sexp-- && i >= 0) {\n var count = 1;\n while (count > 0) {\n var token = tokens[--i];\n if (!token) {\n break outer;\n }\n if (token === '(' || token.token === '(') {\n count--;\n } else if (token === ')' || token.token === ')') {\n count++;\n }\n }\n i--;\n }\n return tokens.slice(i + 1);\n}\n// ----------------------------------------------------------------------\n// :: find number of spaces in line\n// ----------------------------------------------------------------------\nfunction lineIndent(tokens) {\n if (!tokens || !tokens.length) {\n return 0;\n }\n var i = tokens.length;\n if (tokens[i - 1].token === '\\n') {\n return 0;\n }\n while (--i) {\n if (tokens[i].token === '\\n') {\n var token = (tokens[i + 1] || {}).token;\n if (token) {\n return token.length;\n }\n }\n }\n return 0;\n}\n// ----------------------------------------------------------------------\n// :: token based pattern matching (used by formatter)\n// ----------------------------------------------------------------------\n/*\n function nested_pattern(pattern) {\n return pattern instanceof Array ||\n pattern instanceof Pattern;\n }\n*/\n// ----------------------------------------------------------------------\nfunction match(pattern, input) {\n return inner_match(pattern, input) === input.length;\n function inner_match(pattern, input) {\n /*\n function empty_match() {\n if (p <= 0 && i <= 0) {\n return false;\n }\n var prev_pattern = pattern[p - 1];\n if (!nested_pattern(prev_pattern)) {\n prev_pattern = [prev_pattern];\n }\n var next_pattern = pattern[p + 1];\n if (next_pattern && !nested_pattern(next_pattern)) {\n next_pattern = [next_pattern];\n }\n return match(prev_pattern, [input[i - 1]]) &&\n (!next_pattern || match(next_pattern, [input[i]]));\n }\n */\n function get_first_match(patterns, input) {\n for (let p of patterns) {\n const m = inner_match(p, input);\n if (m !== -1) {\n return m;\n }\n }\n return -1;\n }\n function not_symbol_match() {\n return pattern[p] === Symbol.for('symbol') && !is_symbol_string(input[i]);\n }\n function match_next() {\n var next_pattern = pattern[p + 1];\n var next_input = input[i + 1];\n if (next_pattern !== undefined && next_input !== undefined) {\n return inner_match([next_pattern], [next_input]);\n }\n }\n var p = 0;\n var glob = {};\n for (var i = 0; i < input.length; ++i) {\n if (typeof pattern[p] === 'undefined') {\n return i;\n }\n if (pattern[p] instanceof Pattern) {\n var m;\n if (['+', '*'].includes(pattern[p].flag)) {\n while (i < input.length) {\n m = get_first_match(pattern[p].patterns, input.slice(i));\n if (m === -1) {\n break;\n }\n i += m;\n }\n i -= 1;\n p++;\n continue;\n } else if (pattern[p].flag === '?') {\n m = get_first_match(pattern[p].patterns, input.slice(i));\n if (m === -1) {\n i -= 2; // if not found use same test on same input again\n } else {\n p++;\n }\n continue;\n }\n } else if (pattern[p] instanceof RegExp) {\n if (!input[i].match(pattern[p])) {\n return -1;\n }\n } else if (lips.LString.isString(pattern[p])) {\n if (pattern[p].valueOf() !== input[i]) {\n return -1;\n }\n } else if (typeof pattern[p] === 'symbol') {\n if (pattern[p] === Symbol.for('*')) {\n // ignore S-expressions inside for case when next pattern is )\n glob[p] = glob[p] || 0;\n //var zero_match = empty_match();\n if (['(', '['].includes(input[i])) {\n glob[p]++;\n } else if ([')', ']'].includes(input[i])) {\n glob[p]--;\n }\n if ((typeof pattern[p + 1] !== 'undefined' &&\n glob[p] === 0 && match_next() === -1) ||\n glob[p] > 0) {\n continue;\n }\n } else if (not_symbol_match()) {\n return -1;\n }\n } else if (pattern[p] instanceof Array) {\n var inc = inner_match(pattern[p], input.slice(i));\n if (inc === -1 || inc + i > input.length) {\n // if no more input it's not match\n return -1;\n }\n i += inc - 1;\n p++;\n continue;\n } else {\n return -1;\n }\n p++;\n }\n if (pattern.length !== p) {\n // if there are still patterns it's not match\n return -1;\n }\n return input.length;\n }\n}\n// ----------------------------------------------------------------------\n// :: Code formatter class\n// :: based on http://community.schemewiki.org/?scheme-style\n// :: and GNU Emacs scheme mode\n// :: it rely on meta data from tokenizer function\n// ----------------------------------------------------------------------\nfunction Formatter(code) {\n this.__code__ = code.replace(/\\r/g, '');\n}\n// ----------------------------------------------------------------------\nFormatter.defaults = {\n offset: 0,\n indent: 2,\n exceptions: {\n specials: [\n /* eslint-disable max-len */\n /^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\\*)?)$/\n /* eslint-enable */\n ],\n shift: {\n 1: ['&', '#']\n }\n }\n};\nFormatter.match = match;\n// ----------------------------------------------------------------------\n// :: return indent for next line\n// ----------------------------------------------------------------------\nFormatter.prototype._options = function _options(options) {\n var defaults = Formatter.defaults;\n if (typeof options === 'undefined') {\n return Object.assign({}, defaults);\n }\n var exceptions = options && options.exceptions || {};\n var specials = exceptions.specials || [];\n var shift = exceptions.shift || { 1: [] };\n return {\n ...defaults,\n ...options,\n exceptions: {\n specials: [...defaults.exceptions.specials, ...specials],\n shift: {\n ...shift,\n 1: [...defaults.exceptions.shift[1], ...shift[1]]\n }\n }\n };\n};\n// ----------------------------------------------------------------------\nFormatter.prototype.indent = function indent(options) {\n var tokens = tokenize(this.__code__, true);\n return this._indent(tokens, options);\n};\n// ----------------------------------------------------------------------\nFormatter.exception_shift = function(token, settings) {\n function match(list) {\n if (!list.length) {\n return false;\n }\n if (list.indexOf(token) !== -1) {\n return true;\n } else {\n var regexes = list.filter(s => s instanceof RegExp);\n if (!regexes.length) {\n return false;\n }\n for (let re of regexes) {\n if (token.match(re)) {\n return true;\n }\n }\n }\n return false;\n }\n if (match(settings.exceptions.specials)) {\n return settings.indent;\n }\n var shift = settings.exceptions.shift;\n for (var [indent, tokens] of Object.entries(shift)) {\n if (match(tokens)) {\n return +indent;\n }\n }\n return -1;\n};\n// ----------------------------------------------------------------------\nFormatter.prototype._indent = function _indent(tokens, options) {\n var settings = this._options(options);\n var spaces = lineIndent(tokens);\n var sexp = previousSexp(tokens);\n // one character before S-Expression\n var before_sexpr = tokens[tokens.length - sexp.length - 1];\n var last = tokens[tokens.length - 1];\n if (last.token.match(/^\"[\\S\\s]+[^\"]$/)) {\n return spaces + settings.indent;\n }\n if (sexp && sexp.length) {\n if (sexp[0].line > 0) {\n settings.offset = 0;\n }\n if (sexp.toString() === tokens.toString() && balanced(sexp)) {\n return settings.offset + sexp[0].col;\n } else if (sexp.length === 1) {\n return settings.offset + sexp[0].col + 1;\n } else {\n // search for token before S-Expression for case like #(10 or &(:x\n var exeption = -1;\n if (before_sexpr) {\n var shift = Formatter.exception_shift(before_sexpr.token, settings);\n if (shift !== -1) {\n exeption = shift;\n }\n }\n if (exeption === -1) {\n exeption = Formatter.exception_shift(sexp[1].token, settings);\n }\n if (exeption !== -1) {\n return settings.offset + sexp[0].col + exeption;\n } else if (sexp[0].line < sexp[1].line) {\n return settings.offset + sexp[0].col + 1;\n } else if (sexp.length > 3 && sexp[1].line === sexp[3].line) {\n if (sexp[1].token === '(' || sexp[1].token === '[') {\n return settings.offset + sexp[1].col;\n }\n return settings.offset + sexp[3].col;\n } else if (sexp[0].line === sexp[1].line) {\n return settings.offset + settings.indent + sexp[0].col;\n } else {\n var next_tokens = sexp.slice(2);\n for (var i = 0; i < next_tokens.length; ++i) {\n var token = next_tokens[i];\n if (token.token.trim()) {\n return token.col;\n }\n }\n }\n }\n } else {\n return 0;\n }\n return spaces + settings.indent;\n};\n// ----------------------------------------------------------------------\nfunction Ahead(pattern) {\n this.pattern = pattern;\n}\n// TODO: make it print\nAhead.prototype.toString = function() {\n return `#`;\n};\n// ----------------------------------------------------------------------\nAhead.prototype.match = function(string) {\n return string.match(this.pattern);\n};\n// ----------------------------------------------------------------------\n// Pattern have any number of patterns that is match using OR operator\n// pattern is in form of array with regular expressions\n// ----------------------------------------------------------------------\nfunction Pattern(...args) {\n var flag = args.pop();\n this.patterns = args;\n this.flag = flag;\n}\nPattern.prototype.toString = function() {\n var patterns = this.patterns.map(x => toString(x)).join('|');\n return `#`;\n};\n// ----------------------------------------------------------------------\nFormatter.Pattern = Pattern;\nFormatter.Ahead = Ahead;\nvar p_o = /^[[(]$/;\nvar p_e = /^[\\])]$/;\nvar not_p = /[^()[\\]]/;\nconst not_close = new Ahead(/[^)\\]]/);\n//const open = new Ahead(/[([]/);\nconst glob = Symbol.for('*');\nconst sexp_or_atom = new Pattern([p_o, glob, p_e], [not_p], '+');\nconst sexp = new Pattern([p_o, glob, p_e], '+');\nconst symbol = new Pattern([Symbol.for('symbol')], '?');\nconst symbols = new Pattern([Symbol.for('symbol')], '*');\nconst identifiers = [p_o, symbols, p_e];\nconst let_value = new Pattern([p_o, Symbol.for('symbol'), glob, p_e], '+');\n// rules for breaking S-Expressions into lines\nvar def_lambda_re = keywords_re('define', 'lambda', 'define-macro', 'syntax-rules');\n/* eslint-disable max-len */\nvar non_def = /^(?!.*\\b(?:[()[\\]]|define(?:-macro)?|let(?:\\*|rec|-env|-syntax|)?|lambda|syntax-rules)\\b).*$/;\n/* eslint-enable */\nvar let_re = /^(?:#:)?(let(?:\\*|rec|-env|-syntax)?)$/;\n// match keyword if it's normal token or gensym (prefixed with #:)\nfunction keywords_re(...args) {\n return new RegExp(`^(?:#:)?(?:${args.join('|')})$`);\n}\n// line breaking rules\nFormatter.rules = [\n [[sexp], 0, not_close],\n [[p_o, keywords_re('begin', 'cond-expand')], 1],\n [[p_o, let_re, symbol, p_o, let_value, p_e], 1],\n [[p_o, let_re, symbol, sexp_or_atom], 1, not_close],\n [[p_o, let_re, p_o, let_value], 1, not_close],\n //--[[p_o, keywords_re('define-syntax'), /.+/], 1],\n [[p_o, non_def, new Pattern([/[^()[\\]]/], '+'), sexp], 1, not_close],\n [[p_o, sexp], 1, not_close],\n [[p_o, not_p, sexp], 1, not_close],\n [[p_o, keywords_re('lambda', 'if'), not_p], 1, not_close],\n [[p_o, keywords_re('while'), not_p, sexp], 1, not_close],\n [[p_o, keywords_re('if'), not_p, glob], 1],\n [[p_o, def_lambda_re, identifiers], 0, not_close],\n [[p_o, def_lambda_re, identifiers, string_re], 0, not_close],\n [[p_o, def_lambda_re, identifiers, string_re, sexp], 0, not_close],\n [[p_o, def_lambda_re, identifiers, sexp], 0, not_close]\n];\n// ----------------------------------------------------------------------\nFormatter.prototype.break = function() {\n var code = this.__code__.replace(/\\n[ \\t]*/g, '\\n ').replace(/^\\s+/, '');\n // function that work when calling tokenize with meta data or not\n const token = t => {\n if (t.token.match(string_re) || t.token.match(re_re)) {\n return t.token;\n } else {\n return t.token.replace(/\\s+/, ' ');\n }\n };\n const first_token_index = tokens => {\n for (let i = tokens.length; i--;) {\n const token = tokens[i];\n if (token.trim() && !is_special(token)) {\n return tokens.length - i - 1;\n }\n }\n };\n // tokenize is part of the parser/lexer that split code into tokens and include\n // meta data like number of column or line\n var tokens = tokenize(code, true).map(token).filter(t => t !== '\\n');\n const { rules } = Formatter;\n outer: for (let i = 1; i < tokens.length; ++i) {\n if (!tokens[i].trim()) {\n continue;\n }\n var sub = tokens.slice(0, i);\n var sexp = {};\n rules.map(b => b[1]).forEach(count => {\n count = count.valueOf();\n // some patterns require to check what was before like\n // if inside let binding\n if (count > 0 && !sexp[count]) {\n sexp[count] = previousSexp(sub, count);\n }\n });\n for (let [pattern, count, ext] of rules) {\n count = count.valueOf();\n // 0 count mean ignore the previous S-Expression\n var test_sexp = count > 0 ? sexp[count] : sub;\n const input = test_sexp.filter(t => t.trim() && !is_special(t));\n const inc = first_token_index(test_sexp);\n var m = match(pattern, input);\n var next = tokens.slice(i).find(t => t.trim() && !is_special(t));\n if (m && (ext instanceof Ahead && ext.match(next) || !ext)) {\n const index = i - inc;\n if (tokens[index] !== '\\n') {\n if (!tokens[index].trim()) {\n tokens[index] = '\\n';\n } else {\n tokens.splice(index, 0, '\\n');\n i++;\n }\n }\n i += inc;\n continue outer;\n }\n }\n }\n this.__code__ = tokens.join('');\n return this;\n};\n// ----------------------------------------------------------------------\nFormatter.prototype._spaces = function(i) {\n return new Array(i + 1).join(' ');\n};\n// ----------------------------------------------------------------------\n// :: auto formatting of code, it require to have newlines\n// ----------------------------------------------------------------------\nFormatter.prototype.format = function format(options) {\n // prepare code with single space after newline\n // so we have space token to align\n var code = this.__code__.replace(/[ \\t]*\\n[ \\t]*/g, '\\n ');\n var tokens = tokenize(code, true);\n var settings = this._options(options);\n var indent = 0;\n var offset = 0;\n for (var i = 0; i < tokens.length; ++i) {\n var token = tokens[i];\n if (token.token === '\\n') {\n indent = this._indent(tokens.slice(0, i), settings);\n offset += indent;\n if (tokens[i + 1]) {\n tokens[i + 1].token = this._spaces(indent);\n // because we have single space as initial indent\n indent--;\n offset--;\n for (var j = i + 2; j < tokens.length; ++j) {\n tokens[j].offset += offset;\n tokens[j].col += indent;\n if (tokens[j].token === '\\n') {\n // ++i is called after the loop\n i = j - 1;\n break;\n }\n }\n }\n }\n }\n return tokens.map(token => {\n if (token.token.match(string_re)) {\n if (token.token.match(/\\n/)) {\n var spaces = new Array(token.col + 1).join(' ');\n var lines = token.token.split('\\n');\n token.token = [lines[0]].concat(lines.slice(1).map(line => {\n return spaces + line;\n })).join('\\n');\n }\n }\n return token.token;\n }).join('');\n};\n// ----------------------------------------------------------------------\n// :: flatten nested arrays\n// :: ref: https://stackoverflow.com/a/27282907/387194\n// ----------------------------------------------------------------------\nfunction flatten(array, mutable) {\n var toString = Object.prototype.toString;\n var arrayTypeStr = '[object Array]';\n\n var result = [];\n var nodes = (mutable && array) || array.slice();\n var node;\n\n if (!array.length) {\n return result;\n }\n\n node = nodes.pop();\n\n do {\n if (toString.call(node) === arrayTypeStr) {\n nodes.push.apply(nodes, node);\n } else {\n result.push(node);\n }\n } while (nodes.length && (node = nodes.pop()) !== undefined);\n\n result.reverse(); // we reverse result to restore the original order\n return result;\n}\n// ----------------------------------------------------------------------\n// :: Nil constructor with only once instance\n// ----------------------------------------------------------------------\nfunction Nil() {}\nNil.prototype.toString = function() {\n return '()';\n};\nNil.prototype.valueOf = function() {\n return undefined;\n};\nNil.prototype.serialize = function() {\n return 0;\n};\nNil.prototype.to_object = function() {\n return {};\n};\nNil.prototype.append = function(x) {\n return new Pair(x, nil);\n};\nNil.prototype.to_array = function() {\n return [];\n};\nvar nil = new Nil();\n// ----------------------------------------------------------------------\n// :: Pair constructor\n// ----------------------------------------------------------------------\nfunction Pair(car, cdr) {\n if (typeof this !== 'undefined' && this.constructor !== Pair ||\n typeof this === 'undefined') {\n return new Pair(car, cdr);\n }\n this.car = car;\n this.cdr = cdr;\n}\n// ----------------------------------------------------------------------\nfunction to_array(name, deep) {\n return function recur(list) {\n typecheck(name, list, ['pair', 'nil']);\n if (list === nil) {\n return [];\n }\n var result = [];\n var node = list;\n while (true) {\n if (node instanceof Pair) {\n if (node.haveCycles('cdr')) {\n break;\n }\n var car = node.car;\n if (deep && car instanceof Pair) {\n car = this.get(name).call(this, car);\n }\n result.push(car);\n node = node.cdr;\n } else if (node === nil) {\n break;\n } else {\n throw new Error(`${name}: can't convert improper list`);\n }\n }\n return result;\n };\n}\n// ----------------------------------------------------------------------\nPair.prototype.flatten = function() {\n return Pair.fromArray(flatten(this.to_array()));\n};\n// ----------------------------------------------------------------------\nPair.prototype.length = function() {\n var len = 0;\n var node = this;\n while (true) {\n if (!node || node === nil || !(node instanceof Pair) ||\n node.haveCycles('cdr')) {\n break;\n }\n len++;\n node = node.cdr;\n }\n return len;\n};\n// ----------------------------------------------------------------------\nPair.match = function(obj, item) {\n if (obj instanceof LSymbol) {\n return LSymbol.is(obj, item);\n } else if (obj instanceof Pair) {\n return Pair.match(obj.car, item) || Pair.match(obj.cdr, item);\n } else if (Array.isArray(obj)) {\n return obj.some(x => {\n return Pair.match(x, item);\n });\n } else if (is_plain_object(obj)) {\n return Object.values(obj).some(x => {\n return Pair.match(x, item);\n });\n }\n return false;\n};\n// ----------------------------------------------------------------------\nPair.prototype.find = function(item) {\n return Pair.match(this, item);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.clone = function(deep = true) {\n var visited = new Map();\n function clone(node) {\n if (node instanceof Pair) {\n if (visited.has(node)) {\n return visited.get(node);\n }\n var pair = new Pair();\n visited.set(node, pair);\n if (deep) {\n pair.car = clone(node.car);\n } else {\n pair.car = node.car;\n }\n pair.cdr = clone(node.cdr);\n pair[__cycles__] = node[__cycles__];\n return pair;\n }\n return node;\n }\n return clone(this);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.last_pair = function() {\n let node = this;\n while (true) {\n if (node.cdr === nil) {\n return node;\n }\n node = node.cdr;\n }\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.to_array = function(deep = true) {\n var result = [];\n if (this.car instanceof Pair) {\n if (deep) {\n result.push(this.car.to_array());\n } else {\n result.push(this.car);\n }\n } else {\n result.push(this.car.valueOf());\n }\n if (this.cdr instanceof Pair) {\n result = result.concat(this.cdr.to_array());\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.fromArray = function(array, deep = true, quote = false) {\n if (array instanceof Pair || quote && array instanceof Array && array[__data__]) {\n return array;\n }\n if (deep === false) {\n var list = nil;\n for (let i = array.length; i--;) {\n list = new Pair(array[i], list);\n }\n return list;\n }\n if (array.length && !(array instanceof Array)) {\n array = [...array];\n }\n var result = nil;\n var i = array.length;\n while (i--) {\n let car = array[i];\n if (car instanceof Array) {\n car = Pair.fromArray(car, deep, quote);\n } else if (typeof car === 'string') {\n car = LString(car);\n } else if (typeof car === 'number' && !Number.isNaN(car)) {\n car = LNumber(car);\n }\n result = new Pair(car, result);\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\n// by default to_object was created to create JavaScript objects,\n// so it use valueOf to get native values\n// literal parameter was a hack to allow create LComplex from LIPS code\n// ----------------------------------------------------------------------\nPair.prototype.to_object = function(literal = false) {\n var node = this;\n var result = {};\n while (true) {\n if (node instanceof Pair && node.car instanceof Pair) {\n var pair = node.car;\n var name = pair.car;\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n var cdr = pair.cdr;\n if (cdr instanceof Pair) {\n cdr = cdr.to_object(literal);\n }\n if (is_native(cdr)) {\n if (!literal) {\n cdr = cdr.valueOf();\n }\n }\n result[name] = cdr;\n node = node.cdr;\n } else {\n break;\n }\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.fromPairs = function(array) {\n return array.reduce((list, pair) => {\n return new Pair(\n new Pair(\n new LSymbol(pair[0]),\n pair[1]\n ),\n list\n );\n }, nil);\n};\n\n// ----------------------------------------------------------------------\nPair.fromObject = function(obj) {\n var array = Object.keys(obj).map((key) => [key, obj[key]]);\n return Pair.fromPairs(array);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.reduce = function(fn) {\n var node = this;\n var result = nil;\n while (true) {\n if (node !== nil) {\n result = fn(result, node.car);\n node = node.cdr;\n } else {\n break;\n }\n }\n return result;\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.reverse = function() {\n if (this.haveCycles()) {\n throw new Error(\"You can't reverse list that have cycles\");\n }\n var node = this;\n var prev = nil;\n while (node !== nil) {\n var next = node.cdr;\n node.cdr = prev;\n prev = node;\n node = next;\n }\n return prev;\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.transform = function(fn) {\n var visited = [];\n function recur(pair) {\n if (pair instanceof Pair) {\n if (pair.replace) {\n delete pair.replace;\n return pair;\n }\n var car = fn(pair.car);\n if (car instanceof Pair) {\n car = recur(car);\n visited.push(car);\n }\n var cdr = fn(pair.cdr);\n if (cdr instanceof Pair) {\n cdr = recur(cdr);\n visited.push(cdr);\n }\n return new Pair(car, cdr);\n }\n return pair;\n }\n return recur(this);\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.map = function(fn) {\n if (typeof this.car !== 'undefined') {\n return new Pair(fn(this.car), this.cdr === nil ? nil : this.cdr.map(fn));\n } else {\n return nil;\n }\n};\nvar repr = new Map();\n// ----------------------------------------------------------------------\nfunction is_plain_object(object) {\n return object && typeof object === 'object' && object.constructor === Object;\n}\n// ----------------------------------------------------------------------\nvar props = Object.getOwnPropertyNames(Array.prototype);\nvar array_methods = [];\nprops.forEach(x => {\n array_methods.push(Array[x], Array.prototype[x]);\n});\n// ----------------------------------------------------------------------\nfunction is_array_method(x) {\n x = unbind(x);\n return array_methods.includes(x);\n}\n// ----------------------------------------------------------------------\nfunction is_lips_function(x) {\n return is_function(x) && (is_lambda(x) || x.__doc__);\n}\n// ----------------------------------------------------------------------\nfunction user_repr(obj) {\n var constructor = obj.constructor || Object;\n var plain_object = is_plain_object(obj);\n var iterator = is_function(obj[Symbol.asyncIterator]) ||\n is_function(obj[Symbol.iterator]);\n var fn;\n if (repr.has(constructor)) {\n fn = repr.get(constructor);\n } else {\n repr.forEach(function(value, key) {\n key = unbind(key);\n // if key is Object it should only work for plain_object\n // because otherwise it will match every object\n // we don't use instanceof so it don't work for subclasses\n if (obj.constructor === key &&\n (key === Object && plain_object && !iterator || key !== Object)) {\n fn = value;\n }\n });\n }\n return fn;\n}\n// ----------------------------------------------------------------------\nvar str_mapping = new Map();\n[\n [true, '#t'],\n [false, '#f'],\n [null, 'null'],\n [undefined, '#']\n].forEach(([key, value]) => {\n str_mapping.set(key, value);\n});\n// ----------------------------------------------------------------------\n// :: debug function that can be used with JSON.stringify\n// :: that will show symbols\n// ----------------------------------------------------------------------\n/* istanbul ignore next */\nfunction symbolize(obj) {\n if (obj && typeof obj === 'object') {\n var result = {};\n const symbols = Object.getOwnPropertySymbols(obj);\n symbols.forEach((key) => {\n const name = key.toString()\n .replace(/Symbol\\(([^)]+)\\)/, '$1');\n result[name] = toString(obj[key]);\n });\n const props = Object.getOwnPropertyNames(obj);\n props.forEach(key => {\n const o = obj[key];\n if (o && typeof o === 'object' && o.constructor === Object) {\n result[key] = symbolize(o);\n } else {\n result[key] = toString(o);\n }\n });\n return result;\n }\n return obj;\n}\n// ----------------------------------------------------------------------\nfunction get_props(obj) {\n return Object.keys(obj).concat(Object.getOwnPropertySymbols(obj));\n}\n// ----------------------------------------------------------------------\nfunction has_own_function(obj, name) {\n return obj.hasOwnProperty(name) && is_function(obj.toString);\n}\n// ----------------------------------------------------------------------\nfunction function_to_string(fn) {\n if (is_native_function(fn)) {\n return '#';\n }\n const constructor = fn.prototype && fn.prototype.constructor;\n if (is_function(constructor) && is_lambda(constructor)) {\n if (fn[__class__] && constructor.hasOwnProperty('__name__')) {\n let name = constructor.__name__;\n if (LString.isString(name)) {\n name = name.toString();\n return `#`;\n }\n return '#';\n }\n }\n if (fn.hasOwnProperty('__name__')) {\n let name = fn.__name__;\n if (typeof name === 'symbol') {\n name = symbol_to_string(name);\n }\n if (typeof name === 'string') {\n return `#`;\n }\n }\n if (has_own_function(fn, 'toString')) {\n return fn.toString();\n } else if (fn.name && !is_lambda(fn)) {\n return `#`;\n } else {\n return '#';\n }\n}\n// ----------------------------------------------------------------------\n// instances extracted to make cyclomatic complexity of toString smaller\nconst instances = new Map();\n// ----------------------------------------------------------------------\n[\n [Error, function(e) {\n return e.message;\n }],\n [Pair, function(pair, { quote, skip_cycles, pair_args }) {\n // make sure that repr directly after update set the cycle ref\n if (!skip_cycles) {\n pair.markCycles();\n }\n return pair.toString(quote, ...pair_args);\n }],\n [LCharacter, function(chr, { quote }) {\n if (quote) {\n return chr.toString();\n }\n return chr.valueOf();\n }],\n [LString, function(str, { quote }) {\n str = str.toString();\n if (quote) {\n return JSON.stringify(str).replace(/\\\\n/g, '\\n');\n }\n return str;\n }],\n [RegExp, function(re) {\n return '#' + re.toString();\n }]\n].forEach(([cls, fn]) => {\n instances.set(cls, fn);\n});\n// ----------------------------------------------------------------------\nconst native_types = [\n LSymbol,\n LNumber,\n Macro,\n Values,\n InputPort,\n OutputPort,\n Environment,\n QuotedPromise\n];\n// ----------------------------------------------------------------------\nfunction toString(obj, quote, skip_cycles, ...pair_args) {\n if (typeof jQuery !== 'undefined' &&\n obj instanceof jQuery.fn.init) {\n return '#';\n }\n if (str_mapping.has(obj)) {\n return str_mapping.get(obj);\n }\n if (is_prototype(obj)) {\n return '#';\n }\n if (obj) {\n var cls = obj.constructor;\n if (instances.has(cls)) {\n return instances.get(cls)(obj, { quote, skip_cycles, pair_args });\n }\n }\n // standard objects that have toString\n for (let type of native_types) {\n if (obj instanceof type) {\n return obj.toString(quote);\n }\n }\n // constants\n if ([nil, eof].includes(obj)) {\n return obj.toString();\n }\n if (is_function(obj)) {\n return function_to_string(obj);\n }\n if (obj === root) {\n return '#';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'object') {\n var constructor = obj.constructor;\n if (!constructor) {\n // this is case of fs.constants in Node.js that is null constructor object\n // this object can be handled like normal object that have properties\n constructor = Object;\n }\n var name;\n if (typeof constructor.__class__ === 'string') {\n name = constructor.__class__;\n } else {\n var fn = user_repr(obj);\n if (fn) {\n if (is_function(fn)) {\n return fn(obj, quote);\n } else {\n throw new Error('toString: Invalid repr value');\n }\n }\n name = constructor.name;\n }\n // user defined representation\n if (is_function(obj.toString) && is_lambda(obj.toString)) {\n return obj.toString().valueOf();\n }\n if (type(obj) === 'instance') {\n if (is_lambda(constructor) && constructor.__name__) {\n name = constructor.__name__.valueOf();\n } else if (!is_native_function(constructor)) {\n name = 'instance';\n }\n }\n if (is_iterator(obj, Symbol.iterator)) {\n if (name) {\n return `#`;\n }\n return '#';\n }\n if (is_iterator(obj, Symbol.asyncIterator)) {\n if (name) {\n return `#`;\n }\n return '#';\n }\n if (name !== '') {\n return '#<' + name + '>';\n }\n return '#';\n }\n if (typeof obj !== 'string') {\n return obj.toString();\n }\n return obj;\n}\n// ----------------------------------------------------------------------------\nfunction is_prototype(obj) {\n return obj &&\n typeof obj === 'object' &&\n obj.hasOwnProperty &&\n obj.hasOwnProperty(\"constructor\") &&\n typeof obj.constructor === \"function\" &&\n obj.constructor.prototype === obj;\n}\n// ----------------------------------------------------------------------------\nPair.prototype.markCycles = function() {\n markCycles(this);\n return this;\n};\n\n// ----------------------------------------------------------------------------\nPair.prototype.haveCycles = function(name = null) {\n if (!name) {\n return this.haveCycles('car') || this.haveCycles('cdr');\n }\n return !!(this[__cycles__] && this[__cycles__][name]);\n};\n\n// ----------------------------------------------------------------------------\nfunction markCycles(pair) {\n var seen_pairs = [];\n var cycles = [];\n var refs = [];\n function visit(pair) {\n if (!seen_pairs.includes(pair)) {\n seen_pairs.push(pair);\n }\n }\n function set(node, type, child, parents) {\n if (child instanceof Pair) {\n if (parents.includes(child)) {\n if (!refs.includes(child)) {\n refs.push(child);\n }\n if (!node[__cycles__]) {\n node[__cycles__] = {};\n }\n node[__cycles__][type] = child;\n if (!cycles.includes(node)) {\n cycles.push(node);\n }\n return true;\n }\n }\n }\n const detect = trampoline(function detect_thunk(pair, parents) {\n if (pair instanceof Pair) {\n delete pair.ref;\n delete pair[__cycles__];\n visit(pair);\n parents.push(pair);\n var car = set(pair, 'car', pair.car, parents);\n var cdr = set(pair, 'cdr', pair.cdr, parents);\n if (!car) {\n detect(pair.car, parents.slice());\n }\n if (!cdr) {\n return new Thunk(() => {\n return detect_thunk(pair.cdr, parents.slice());\n });\n }\n }\n });\n function mark_node(node, type) {\n if (node[__cycles__][type] instanceof Pair) {\n const count = ref_nodes.indexOf(node[__cycles__][type]);\n node[__cycles__][type] = `#${count}#`;\n }\n }\n detect(pair, []);\n var ref_nodes = seen_pairs.filter(node => refs.includes(node));\n ref_nodes.forEach((node, i) => {\n node[__ref__] = `#${i}=`;\n });\n cycles.forEach(node => {\n mark_node(node, 'car');\n mark_node(node, 'cdr');\n });\n}\n\n// ----------------------------------------------------------------------\n// trampoline based recursive pair to string that don't overflow the stack\n// ----------------------------------------------------------------------\n/* eslint-disable no-unused-vars */\n/* istanbul ignore next */\nconst pair_to_string = (function() {\n const prefix = (pair, nested) => {\n var result = [];\n if (pair[__ref__]) {\n result.push(pair[__ref__] + '(');\n } else if (!nested) {\n result.push('(');\n }\n return result;\n };\n const postfix = (pair, nested) => {\n if (!nested || pair[__ref__]) {\n return [')'];\n }\n return [];\n };\n return trampoline(function pairToString(pair, quote, extra = {}) {\n const {\n nested = false,\n result = [],\n cont = () => {\n result.push(...postfix(pair, nested));\n }\n } = extra;\n result.push(...prefix(pair, nested));\n let car;\n if (pair[__cycles__] && pair[__cycles__].car) {\n car = pair[__cycles__].car;\n } else {\n car = toString(pair.car, quote, true, { result, cont });\n }\n if (car !== undefined) {\n result.push(car);\n }\n return new Thunk(() => {\n if (pair.cdr instanceof Pair) {\n if (pair[__cycles__] && pair[__cycles__].cdr) {\n result.push(' . ');\n result.push(pair[__cycles__].cdr);\n } else {\n if (pair.cdr[__ref__]) {\n result.push(' . ');\n } else {\n result.push(' ');\n }\n return pairToString(pair.cdr, quote, {\n nested: true,\n result,\n cont\n });\n }\n } else if (pair.cdr !== nil) {\n result.push(' . ');\n result.push(toString(pair.cdr, quote));\n }\n }, cont);\n });\n})();\n\n// ----------------------------------------------------------------------\nPair.prototype.toString = function(quote, { nested = false } = {}) {\n var arr = [];\n if (this[__ref__]) {\n arr.push(this[__ref__] + '(');\n } else if (!nested) {\n arr.push('(');\n }\n var value;\n if (this[__cycles__] && this[__cycles__].car) {\n value = this[__cycles__].car;\n } else {\n value = toString(this.car, quote, true);\n }\n if (value !== undefined) {\n arr.push(value);\n }\n if (this.cdr instanceof Pair) {\n if (this[__cycles__] && this[__cycles__].cdr) {\n arr.push(' . ');\n arr.push(this[__cycles__].cdr);\n } else {\n if (this.cdr[__ref__]) {\n arr.push(' . ');\n } else {\n arr.push(' ');\n }\n const cdr = this.cdr.toString(quote, { nested: true });\n arr.push(cdr);\n }\n } else if (this.cdr !== nil) {\n arr = arr.concat([' . ', toString(this.cdr, quote, true)]);\n }\n if (!nested || this[__ref__]) {\n arr.push(')');\n }\n return arr.join('');\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.set = function(prop, value) {\n this[prop] = value;\n if (value instanceof Pair) {\n this.markCycles();\n }\n};\n\n// ----------------------------------------------------------------------\nPair.prototype.append = function(arg) {\n if (arg instanceof Array) {\n return this.append(Pair.fromArray(arg));\n }\n var p = this;\n if (p.car === undefined) {\n if (arg instanceof Pair) {\n this.car = arg.car;\n this.cdr = arg.cdr;\n } else {\n this.car = arg;\n }\n } else if (arg !== nil) {\n while (true) {\n if (p instanceof Pair && p.cdr !== nil) {\n p = p.cdr;\n } else {\n break;\n }\n }\n p.cdr = arg;\n }\n return this;\n};\n// ----------------------------------------------------------------------\nPair.prototype.serialize = function() {\n return [\n this.car,\n this.cdr\n ];\n};\n// ----------------------------------------------------------------------\n// :: List iterator (for do-iterator macro)\n// ----------------------------------------------------------------------\nPair.prototype[Symbol.iterator] = function() {\n var node = this;\n return {\n next: function() {\n var cur = node;\n node = cur.cdr;\n if (cur === nil) {\n return { value: undefined, done: true };\n } else {\n return { value: cur.car, done: false };\n }\n }\n };\n};\n// ----------------------------------------------------------------------\n// :: abs that work on BigInt\n// ----------------------------------------------------------------------\nfunction abs(x) {\n return x < 0 ? -x : x;\n}\n// ----------------------------------------------------------------------\nfunction seq_compare(fn, args) {\n var [a, ...rest] = args;\n while (rest.length > 0) {\n var [b] = rest;\n if (!fn(a, b)) {\n return false;\n }\n [a, ...rest] = rest;\n }\n return true;\n}\n\n// ----------------------------------------------------------------------\nfunction equal(x, y) {\n if (is_function(x)) {\n return is_function(y) && unbind(x) === unbind(y);\n } else if (x instanceof LNumber) {\n if (!(y instanceof LNumber)) {\n return false;\n }\n let type;\n if (x.__type__ === y.__type__) {\n if (x.__type__ === 'complex') {\n type = x.__im__.__type__ === y.__im__.__type__ &&\n x.__re__.__type__ === y.__re__.__type__;\n } else {\n type = true;\n }\n if (type && x.cmp(y) === 0) {\n if (x.valueOf() === 0) {\n return Object.is(x.valueOf(), y.valueOf());\n }\n return true;\n }\n }\n return false;\n } else if (typeof x === 'number') {\n if (typeof y !== 'number') {\n return false;\n }\n if (Number.isNaN(x)) {\n return Number.isNaN(y);\n }\n if (x === Number.NEGATIVE_INFINITY) {\n return y === Number.NEGATIVE_INFINITY;\n }\n if (x === Number.POSITIVE_INFINITY) {\n return y === Number.POSITIVE_INFINITY;\n }\n return equal(LNumber(x), LNumber(y));\n } else if (x instanceof LCharacter) {\n if (!(y instanceof LCharacter)) {\n return false;\n }\n return x.__char__ === y.__char__;\n } else {\n return x === y;\n }\n}\n// ----------------------------------------------------------------------\nfunction same_atom(a, b) {\n if (type(a) !== type(b)) {\n return false;\n }\n if (!is_atom(a)) {\n return false;\n }\n if (a instanceof RegExp) {\n return a.source === b.source;\n }\n if (a instanceof LString) {\n return a.valueOf() === b.valueOf();\n }\n return equal(a, b);\n}\n// ----------------------------------------------------------------------\nfunction is_atom(obj) {\n return obj instanceof LSymbol ||\n LString.isString(obj) ||\n obj === nil ||\n obj === null ||\n obj instanceof LCharacter ||\n obj instanceof LNumber ||\n obj === true ||\n obj === false;\n}\n// ----------------------------------------------------------------------\nvar truncate = (function() {\n if (Math.trunc) {\n return Math.trunc;\n } else {\n return function(x) {\n if (x === 0) {\n return 0;\n } else if (x < 0) {\n return Math.ceil(x);\n } else {\n return Math.floor(x);\n }\n };\n }\n})();\n// ----------------------------------------------------------------------\n// :: Macro constructor\n// ----------------------------------------------------------------------\nfunction Macro(name, fn, doc, dump) {\n if (typeof this !== 'undefined' && this.constructor !== Macro ||\n typeof this === 'undefined') {\n return new Macro(name, fn);\n }\n typecheck('Macro', name, 'string', 1);\n typecheck('Macro', fn, 'function', 2);\n if (doc) {\n if (dump) {\n this.__doc__ = doc;\n } else {\n this.__doc__ = trim_lines(doc);\n }\n }\n this.__name__ = name;\n this.__fn__ = fn;\n}\n// ----------------------------------------------------------------------\nMacro.defmacro = function(name, fn, doc, dump) {\n var macro = new Macro(name, fn, doc, dump);\n macro.__defmacro__ = true;\n return macro;\n};\n// ----------------------------------------------------------------------\nMacro.prototype.invoke = function(code, { env, dynamic_scope, error }, macro_expand) {\n var args = {\n dynamic_scope,\n error,\n macro_expand\n };\n var result = this.__fn__.call(env, code, args, this.__name__);\n return result;\n //return macro_expand ? quote(result) : result;\n};\n// ----------------------------------------------------------------------\nMacro.prototype.toString = function() {\n return `#`;\n};\n// ----------------------------------------------------------------------\nconst macro = 'define-macro';\n// ----------------------------------------------------------------------\nconst recur_guard = -10000;\nfunction macro_expand(single) {\n return async function(code, args) {\n var env = args['env'] = this;\n var bindings = [];\n var let_macros = ['let', 'let*', 'letrec'];\n var lambda = global_env.get('lambda');\n var define = global_env.get('define');\n function is_let_macro(symbol) {\n var name = symbol.valueOf();\n return let_macros.includes(name);\n }\n function is_procedure(value, node) {\n return value === define && node.cdr.car instanceof Pair;\n }\n function is_lambda(value) {\n return value === lambda;\n }\n function proc_bindings(node) {\n var names = [];\n while (true) {\n if (node !== nil) {\n if (node instanceof LSymbol) {\n names.push(node.valueOf());\n break;\n }\n names.push(node.car.valueOf());\n node = node.cdr;\n } else {\n break;\n }\n }\n return [...bindings, ...names];\n }\n function let_binding(node) {\n return [...bindings, ...node.to_array(false).map(function(node) {\n if (node instanceof Pair) {\n return node.car.valueOf();\n }\n throw new Error('macroexpand: Invalid let binding');\n })];\n }\n function is_macro(name, value) {\n return value instanceof Macro &&\n value.__defmacro__ &&\n !bindings.includes(name);\n }\n async function expand_let_binding(node, n) {\n if (node === nil) {\n return nil;\n }\n var pair = node.car;\n return new Pair(\n new Pair(\n pair.car,\n await traverse(pair.cdr, n, env)\n ),\n await expand_let_binding(node.cdr)\n );\n }\n async function traverse(node, n, env) {\n if (node instanceof Pair && node.car instanceof LSymbol) {\n if (node[__data__]) {\n return node;\n }\n var name = node.car.valueOf();\n var value = env.get(node.car, { throwError: false });\n var is_let = is_let_macro(node.car);\n\n var is_binding = is_let ||\n is_procedure(value, node) ||\n is_lambda(value);\n\n if (is_binding && node.cdr.car instanceof Pair) {\n var second;\n if (is_let) {\n bindings = let_binding(node.cdr.car);\n second = await expand_let_binding(node.cdr.car, n);\n } else {\n bindings = proc_bindings(node.cdr.car);\n second = node.cdr.car;\n }\n return new Pair(\n node.car,\n new Pair(\n second,\n await traverse(node.cdr.cdr, n, env)\n )\n );\n } else if (is_macro(name, value)) {\n var code = value instanceof Syntax ? node : node.cdr;\n var result = await value.invoke(code, { ...args, env }, true);\n if (value instanceof Syntax) {\n const { expr, scope } = result;\n if (expr instanceof Pair) {\n if (n !== -1 && n <= 1 || n < recur_guard) {\n return expr;\n }\n if (n !== -1) {\n n = n - 1;\n }\n return traverse(expr, n, scope);\n }\n result = expr;\n }\n if (result instanceof LSymbol) {\n return quote(result);\n }\n if (result instanceof Pair) {\n if (n !== -1 && n <= 1 || n < recur_guard) {\n return result;\n }\n if (n !== -1) {\n n = n - 1;\n }\n return traverse(result, n, env);\n }\n if (is_atom(result)) {\n return result;\n }\n }\n }\n // TODO: CYCLE DETECT\n var car = node.car;\n if (car instanceof Pair) {\n car = await traverse(car, n, env);\n }\n var cdr = node.cdr;\n if (cdr instanceof Pair) {\n cdr = await traverse(cdr, n, env);\n }\n var pair = new Pair(car, cdr);\n return pair;\n }\n //var this.__code__ = code;\n if (code.cdr instanceof Pair && LNumber.isNumber(code.cdr.car)) {\n return quote((await traverse(code, code.cdr.car.valueOf(), env)).car);\n }\n if (single) {\n return quote((await traverse(code, 1, env)).car);\n }\n return quote((await traverse(code, -1, env)).car);\n };\n}\n// ----------------------------------------------------------------------\n// TODO: Don't put Syntax as Macro they are not runtime\n// ----------------------------------------------------------------------\nfunction Syntax(fn, env) {\n this.__env__ = env;\n this.__fn__ = fn;\n // allow macroexpand\n this.__defmacro__ = true;\n}\nSyntax.__merge_env__ = Symbol.for('merge');\n// ----------------------------------------------------------------------\nSyntax.prototype = Object.create(Macro.prototype);\nSyntax.prototype.invoke = function(code, { error, env }, macro_expand) {\n var args = {\n error,\n env,\n dynamic_scope: this.__env__,\n macro_expand\n };\n return this.__fn__.call(env, code, args, this.__name__ || 'syntax');\n};\nSyntax.prototype.constructor = Syntax;\nSyntax.prototype.toString = function() {\n if (this.__name__) {\n return `#`;\n }\n return '#';\n};\nSyntax.className = 'syntax';\n// ----------------------------------------------------------------------\n// :: TODO: SRFI-139\n// ----------------------------------------------------------------------\nclass Parameter extends Syntax {\n}\nSyntax.Parameter = Parameter;\n// ----------------------------------------------------------------------\n// :: for usage in syntax-rule when pattern match it will return\n// :: list of bindings from code that match the pattern\n// :: TODO detect cycles\n// ----------------------------------------------------------------------\nfunction extract_patterns(pattern, code, symbols, ellipsis_symbol, scope = {}) {\n var bindings = {\n '...': {\n symbols: { }, // symbols ellipsis (x ...)\n lists: [ ]\n },\n symbols: { }\n };\n const { expansion, define } = scope;\n // pattern_names parameter is used to distinguish\n // multiple matches of ((x ...) ...) agains ((1 2 3) (1 2 3))\n // in loop we add x to the list so we know that this is not\n // duplicated ellipsis symbol\n function log(x) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(x);\n }\n }\n log(symbols);\n /* eslint-disable complexity */\n function traverse(pattern, code, pattern_names = [], ellipsis = false) {\n log({\n code: code && toString(code, true),\n pattern: pattern && toString(pattern, true)\n });\n if (is_atom(pattern) && !(pattern instanceof LSymbol)) {\n return same_atom(pattern, code);\n }\n if (pattern instanceof LSymbol &&\n symbols.includes(pattern.literal())) {\n const ref = expansion.ref(code);\n // shadowing the identifier works only with lambda and let\n if (LSymbol.is(code, pattern)) {\n if (typeof ref === 'undefined') {\n return true;\n }\n return ref === define || ref === global_env;\n }\n return false;\n }\n // pattern (a b (x ...)) and (x ...) match nil\n if (pattern instanceof Pair &&\n pattern.car instanceof Pair &&\n pattern.car.cdr instanceof Pair &&\n LSymbol.is(pattern.car.cdr.car, ellipsis_symbol)) {\n log('>> 0');\n if (code === nil) {\n log({ pattern: pattern.toString() });\n if (pattern.car.car instanceof LSymbol) {\n if (pattern.car.cdr instanceof Pair &&\n LSymbol.is(pattern.car.cdr.car, ellipsis_symbol)) {\n let name = pattern.car.car.valueOf();\n const last = pattern.last_pair();\n if (LSymbol.is(last.car, ellipsis_symbol)) {\n bindings['...'].symbols[name] = null;\n return true;\n } else {\n return false;\n }\n }\n let name = pattern.car.car.valueOf();\n if (bindings['...'].symbols[name]) {\n throw new Error('syntax: named ellipsis can only ' +\n 'appear onces');\n }\n bindings['...'].symbols[name] = code;\n }\n }\n }\n if (pattern instanceof Pair &&\n pattern.cdr instanceof Pair &&\n LSymbol.is(pattern.cdr.car, ellipsis_symbol)) {\n // pattern (... ???) - SRFI-46\n if (pattern.cdr.cdr !== nil) {\n if (pattern.cdr.cdr instanceof Pair) {\n // if we have (x ... a b) we need to remove two from the end\n const list_len = pattern.cdr.cdr.length();\n let code_len = code.length();\n let list = code;\n while (code_len - 1 > list_len) {\n list = list.cdr;\n code_len--;\n }\n const rest = list.cdr;\n list.cdr = nil;\n if (!traverse(pattern.cdr.cdr, rest, pattern_names, ellipsis)) {\n return false;\n }\n }\n }\n if (pattern.car instanceof LSymbol) {\n let name = pattern.car.__name__;\n if (bindings['...'].symbols[name] &&\n !pattern_names.includes(name) && !ellipsis) {\n throw new Error('syntax: named ellipsis can only appear onces');\n }\n log('>> 1');\n if (code === nil) {\n log('>> 2');\n if (ellipsis) {\n log('NIL');\n bindings['...'].symbols[name] = nil;\n } else {\n log('NULL');\n bindings['...'].symbols[name] = null;\n }\n } else if (code instanceof Pair &&\n (code.car instanceof Pair || code.car === nil)) {\n log('>> 3 ' + ellipsis);\n if (ellipsis) {\n if (bindings['...'].symbols[name]) {\n let node = bindings['...'].symbols[name];\n if (node === nil) {\n node = new Pair(nil, new Pair(code, nil));\n } else {\n node = node.append(new Pair(code, nil));\n }\n bindings['...'].symbols[name] = node;\n } else {\n bindings['...'].symbols[name] = new Pair(code, nil);\n }\n } else {\n log('>> 4');\n bindings['...'].symbols[name] = new Pair(code, nil);\n }\n } else {\n log('>> 6');\n if (code instanceof Pair) {\n log('>> 7 ' + ellipsis);\n pattern_names.push(name);\n if (!bindings['...'].symbols[name]) {\n bindings['...'].symbols[name] = new Pair(\n code,\n nil\n );\n } else {\n const node = bindings['...'].symbols[name];\n bindings['...'].symbols[name] = node.append(\n new Pair(\n code,\n nil\n )\n );\n }\n log({ IIIIII: bindings['...'].symbols[name].toString() });\n } else {\n log('>> 8');\n return false;\n //bindings['...'].symbols[name] = code;\n }\n }\n return true;\n } else if (pattern.car instanceof Pair) {\n var names = [...pattern_names];\n if (code === nil) {\n log('>> 9');\n bindings['...'].lists.push(nil);\n return true;\n }\n log('>> 10');\n let node = code;\n while (node instanceof Pair) {\n if (!traverse(pattern.car, node.car, names, true)) {\n return false;\n }\n node = node.cdr;\n }\n return true;\n }\n return false;\n }\n if (pattern instanceof LSymbol) {\n if (LSymbol.is(pattern, ellipsis_symbol)) {\n throw new Error('syntax: invalid usage of ellipsis');\n }\n log('>> 11');\n const name = pattern.__name__;\n if (symbols.includes(name)) {\n return true;\n }\n log({ name, ellipsis });\n if (ellipsis) {\n bindings['...'].symbols[name] = bindings['...'].symbols[name] || [];\n bindings['...'].symbols[name].push(code);\n }\n bindings.symbols[name] = code;\n if (!bindings.symbols[name]) {\n }\n return true;\n }\n if (pattern instanceof Pair && code instanceof Pair) {\n log('>> 12');\n log({\n a: 12,\n code: code && code.toString(),\n pattern: pattern.toString()\n });\n if (code.cdr === nil) {\n // last item in in call using in recursive calls on\n // last element of the list\n // case of pattern (p . rest) and code (0)\n var rest_pattern = pattern.car instanceof LSymbol &&\n pattern.cdr instanceof LSymbol;\n if (rest_pattern) {\n // fix for SRFI-26 in recursive call of (b) ==> (<> . x)\n // where <> is symbol\n if (!traverse(pattern.car, code.car, pattern_names, ellipsis)) {\n return false;\n }\n log('>> 12 | 1');\n let name = pattern.cdr.valueOf();\n if (!(name in bindings.symbols)) {\n bindings.symbols[name] = nil;\n }\n name = pattern.car.valueOf();\n if (!(name in bindings.symbols)) {\n bindings.symbols[name] = code.car;\n }\n return true;\n }\n }\n log({\n pattern: pattern.toString(),\n code: code.toString()\n });\n // case (x y) ===> (var0 var1 ... warn) where var1 match nil\n if (pattern.cdr instanceof Pair &&\n pattern.car instanceof LSymbol &&\n pattern.cdr.cdr instanceof Pair &&\n pattern.cdr.car instanceof LSymbol &&\n LSymbol.is(pattern.cdr.cdr.car, ellipsis_symbol) &&\n pattern.cdr.cdr.cdr instanceof Pair &&\n !LSymbol.is(pattern.cdr.cdr.cdr.car, ellipsis_symbol) &&\n traverse(pattern.car, code.car, pattern_names, ellipsis) &&\n traverse(pattern.cdr.cdr.cdr, code.cdr, pattern_names, ellipsis)) {\n const name = pattern.cdr.car.__name__;\n log({\n pattern: pattern.car.toString(),\n code: code.car.toString(),\n name\n });\n if (symbols.includes(name)) {\n return true;\n }\n bindings['...'].symbols[name] = null;\n return true;\n }\n log('recur');\n if (traverse(pattern.car, code.car, pattern_names, ellipsis) &&\n traverse(pattern.cdr, code.cdr, pattern_names, ellipsis)) {\n return true;\n }\n } else if (pattern === nil && (code === nil || code === undefined)) {\n // undefined is case when you don't have body ...\n // and you do recursive call\n return true;\n } else if (pattern.car instanceof Pair &&\n LSymbol.is(pattern.car.car, ellipsis_symbol)) {\n // pattern (...)\n throw new Error('syntax: invalid usage of ellipsis');\n } else {\n return false;\n }\n }\n /* eslint-enable complexity */\n if (traverse(pattern, code)) {\n return bindings;\n }\n}\n// ----------------------------------------------------------------------\n// :: This function is called after syntax-rules macro is evaluated\n// :: and if there are any gensyms added by macro they need to restored\n// :: to original symbols\n// ----------------------------------------------------------------------\nfunction clear_gensyms(node, gensyms) {\n function traverse(node) {\n if (node instanceof Pair) {\n if (!gensyms.length) {\n return node;\n }\n const car = traverse(node.car);\n const cdr = traverse(node.cdr);\n // TODO: check if it's safe to modify the list\n // some funky modify of code can happen in macro\n return new Pair(car, cdr);\n } else if (node instanceof LSymbol) {\n var replacement = gensyms.find((gensym) => {\n return gensym.gensym === node;\n });\n if (replacement) {\n return LSymbol(replacement.name);\n }\n return node;\n } else {\n return node;\n }\n }\n return traverse(node);\n}\n// ----------------------------------------------------------------------\nfunction transform_syntax(options = {}) {\n const {\n bindings,\n expr,\n scope,\n symbols,\n names,\n ellipsis: ellipsis_symbol } = options;\n var gensyms = {};\n function valid_symbol(symbol) {\n if (symbol instanceof LSymbol) {\n return true;\n }\n return ['string', 'symbol'].includes(typeof symbol);\n }\n function transform(symbol) {\n if (!valid_symbol(symbol)) {\n const t = type(symbol);\n throw new Error(`syntax: internal error, need symbol got ${t}`);\n }\n const name = symbol.valueOf();\n if (name === ellipsis_symbol) {\n throw new Error('syntax: internal error, ellipis not transformed');\n }\n // symbols are gensyms from nested syntax-rules\n var n_type = typeof name;\n if (['string', 'symbol'].includes(n_type)) {\n if (name in bindings.symbols) {\n return bindings.symbols[name];\n } else if (n_type === 'string' && name.match(/\\./)) {\n // calling method on pattern symbol #83\n const parts = name.split('.');\n const first = parts[0];\n if (first in bindings.symbols) {\n return Pair.fromArray([\n LSymbol('.'),\n bindings.symbols[first]\n ].concat(parts.slice(1).map(x => LString(x))));\n }\n }\n }\n if (symbols.includes(name)) {\n return LSymbol(name);\n }\n return rename(name);\n }\n function log(x) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(x);\n }\n }\n function rename(name) {\n if (!gensyms[name]) {\n var ref = scope.ref(name);\n const gensym_name = gensym(name);\n if (ref) {\n const value = scope.get(name);\n scope.set(gensym_name, value);\n } else {\n const value = scope.get(name, { throwError: false });\n // value is not in scope, but it's JavaScript object\n if (typeof value !== 'undefined') {\n scope.set(gensym_name, value);\n }\n }\n // keep names so they can be restored after evaluation\n // if there are free symbols as output\n // kind of hack\n names.push({\n name, gensym: gensym_name\n });\n gensyms[name] = gensym_name;\n // we need to check if name is a string, because it can be\n // gensym from nested syntax-rules\n if (typeof name === 'string' && name.match(/\\./)) {\n const [first, ...rest] = name.split('.').filter(Boolean);\n // save JavaScript dot notation for Env::get\n if (gensyms[first]) {\n hidden_prop(gensym_name, '__object__', [gensyms[first], ...rest]);\n }\n }\n }\n return gensyms[name];\n }\n function transform_ellipsis_expr(expr, bindings, state, next = () => {}) {\n const { nested } = state;\n log(' ==> ' + expr.toString(true));\n log(bindings);\n if (expr instanceof LSymbol) {\n const name = expr.valueOf();\n log('[t 1');\n if (bindings[name]) {\n if (bindings[name] instanceof Pair) {\n const { car, cdr } = bindings[name];\n if (nested) {\n const { car: caar, cdr: cadr } = car;\n if (cadr !== nil) {\n next(name, new Pair(cadr, nil));\n }\n return caar;\n }\n if (cdr !== nil) {\n next(name, cdr);\n }\n return car;\n } else if (bindings[name] instanceof Array) {\n next(name, bindings[name].slice(1));\n return bindings[name][0];\n }\n }\n return transform(name);\n }\n if (expr instanceof Pair) {\n if (expr.car instanceof LSymbol &&\n expr.cdr instanceof Pair &&\n LSymbol.is(expr.cdr.car, ellipsis_symbol)) {\n log('[t 2');\n const name = expr.car.valueOf();\n const item = bindings[name];\n log({ expr: expr.toString(true), name, bindings, item });\n if (item === null) {\n return;\n } else if (item) {\n log({ b: bindings[name].toString() });\n if (item instanceof Pair) {\n log('[t 2 Pair ' + nested);\n log({ ______: item.toString() });\n const { car, cdr } = item;\n if (nested) {\n if (cdr !== nil) {\n log('|| next 1');\n next(name, cdr);\n }\n log({ car: car.toString() });\n return car;\n } else {\n if (car.cdr !== nil) {\n log('|| next 2');\n next(name, new Pair(car.cdr, cdr));\n }\n log({ car: car.car.toString() });\n return car.car;\n }\n } else if (item instanceof Array) {\n log('[t 2 Array ' + nested);\n if (nested) {\n next(name, item.slice(1));\n return Pair.fromArray(item);\n } else {\n const rest = item.slice(1);\n if (rest.length) {\n next(name, rest);\n }\n return item[0];\n }\n } else {\n return item;\n }\n }\n }\n log('[t 3 recur ' + expr.toString());\n const head = transform_ellipsis_expr(expr.car, bindings, state, next);\n const rest = transform_ellipsis_expr(expr.cdr, bindings, state, next);\n return new Pair(\n head,\n rest\n );\n }\n return expr;\n }\n function have_binding(biding, skip_nulls) {\n const values = Object.values(biding);\n const symbols = Object.getOwnPropertySymbols(biding);\n if (symbols.length) {\n values.push(...symbols.map(x => biding[x]));\n }\n return values.length && values.every(x => {\n if (x === null) {\n return !skip_nulls;\n }\n return x instanceof Pair || x === nil ||\n (x instanceof Array && x.length);\n });\n }\n function get_names(object) {\n return Object.keys(object).concat(Object.getOwnPropertySymbols(object));\n }\n /* eslint-disable complexity */\n function traverse(expr, { disabled } = {}) {\n log('traverse>> ' + expr.toString());\n if (expr instanceof Pair) {\n // escape ellispsis from R7RS e.g. (... ...)\n if (!disabled && expr.car instanceof Pair &&\n LSymbol.is(expr.car.car, ellipsis_symbol)) {\n return traverse(expr.car.cdr, { disabled: true });\n }\n if (expr.cdr instanceof Pair &&\n LSymbol.is(expr.cdr.car, ellipsis_symbol) && !disabled) {\n log('>> 1');\n const symbols = bindings['...'].symbols;\n // skip expand list of pattern was (x y ... z)\n // and code was (x z) so y == null\n const values = Object.values(symbols);\n if (values.length && values.every(x => x === null)) {\n return traverse(expr.cdr.cdr, { disabled });\n }\n var keys = get_names(symbols);\n // case of list as first argument ((x . y) ...) or (x ... ...)\n // we need to recursively process the list\n // if we have pattern (_ (x y z ...) ...) and code (foo (1 2) (1 2))\n // x an y will be arrays of [1 1] and [2 2] and z will be array\n // of rest, x will also have it's own mapping to 1 and y to 2\n // in case of usage outside of ellipsis list e.g.: (x y)\n var is_spread = expr.car instanceof LSymbol &&\n LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol);\n if (expr.car instanceof Pair || is_spread) {\n // lists is free ellipsis on pairs ((???) ...)\n // TODO: will this work in every case? Do we need to handle\n // nesting here?\n if (bindings['...'].lists[0] === nil) {\n return nil;\n }\n var new_expr = expr.car;\n if (is_spread) {\n new_expr = new Pair(\n expr.car,\n new Pair(\n expr.cdr.car,\n nil));\n }\n log('>> 2');\n let result;\n if (keys.length) {\n log('>> 2 (a)');\n let bind = { ...symbols };\n result = nil;\n while (true) {\n if (!have_binding(bind)) {\n break;\n }\n const new_bind = {};\n const next = (key, value) => {\n // ellipsis decide it what should be the next value\n // there are two cases ((a . b) ...) and (a ...)\n new_bind[key] = value;\n };\n const car = transform_ellipsis_expr(\n new_expr,\n bind,\n { nested: true },\n next\n );\n // undefined can be null caused by null binding\n // on empty ellipsis\n if (car !== undefined) {\n if (is_spread) {\n if (result === nil) {\n result = car;\n } else {\n result = result.append(car);\n }\n } else {\n result = new Pair(\n car,\n result\n );\n }\n }\n bind = new_bind;\n }\n if (result !== nil && !is_spread) {\n result = result.reverse();\n }\n // case of (list) ... (rest code)\n if (expr.cdr.cdr !== nil &&\n !LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol)) {\n const rest = traverse(expr.cdr.cdr, { disabled });\n return result.append(rest);\n }\n return result;\n } else {\n log('>> 3');\n const car = transform_ellipsis_expr(expr.car, symbols, {\n nested: true\n });\n if (car) {\n return new Pair(\n car,\n nil\n );\n }\n return nil;\n }\n } else if (expr.car instanceof LSymbol) {\n log('>> 4');\n if (LSymbol.is(expr.cdr.cdr.car, ellipsis_symbol)) {\n // case (x ... ...)\n log('>> 4 (a)');\n } else {\n log('>> 4 (b)');\n }\n // case: (x ...)\n let name = expr.car.__name__;\n let bind = { [name]: symbols[name] };\n const is_null = symbols[name] === null;\n let result = nil;\n while (true) {\n if (!have_binding(bind, true)) {\n log({ bind });\n break;\n }\n const new_bind = {};\n const next = (key, value) => {\n new_bind[key] = value;\n };\n const value = transform_ellipsis_expr(\n expr,\n bind,\n { nested: false },\n next\n );\n log({ value: value.toString() });\n if (typeof value !== 'undefined') {\n result = new Pair(\n value,\n result\n );\n }\n bind = new_bind;\n }\n if (result !== nil) {\n result = result.reverse();\n }\n // case if (x ... y ...) second spread is not processed\n // and (??? . x) last symbol\n // by ellipsis transformation\n if (expr.cdr instanceof Pair) {\n if (expr.cdr.cdr instanceof Pair ||\n expr.cdr.cdr instanceof LSymbol) {\n const node = traverse(expr.cdr.cdr, { disabled });\n if (is_null) {\n return node;\n }\n log('<<<< 1');\n result.append(node);\n }\n }\n log('<<<< 2');\n return result;\n }\n }\n const head = traverse(expr.car, { disabled });\n let rest;\n let is_syntax;\n if ((expr.car instanceof LSymbol)) {\n const value = scope.get(expr.car, { throwError: false });\n is_syntax = value instanceof Macro &&\n value.__name__ === 'syntax-rules';\n }\n if (is_syntax) {\n if (expr.cdr.car instanceof LSymbol) {\n rest = new Pair(\n traverse(expr.cdr.car, { disabled }),\n new Pair(\n expr.cdr.cdr.car,\n traverse(expr.cdr.cdr.cdr, { disabled })\n )\n );\n } else {\n rest = new Pair(\n expr.cdr.car,\n traverse(expr.cdr.cdr, { disabled })\n );\n }\n log('REST >>>> ' + rest.toString());\n } else {\n rest = traverse(expr.cdr, { disabled });\n }\n log({\n a: true,\n car: toString(expr.car),\n cdr: toString(expr.cdr),\n head: toString(head),\n rest: toString(rest)\n });\n return new Pair(\n head,\n rest\n );\n }\n if (expr instanceof LSymbol) {\n if (disabled && LSymbol.is(expr, ellipsis_symbol)) {\n return expr;\n }\n const symbols = Object.keys(bindings['...'].symbols);\n const name = expr.literal();\n if (symbols.includes(name)) {\n const msg = `missing ellipsis symbol next to name \\`${name}'`;\n throw new Error(`syntax-rules: ${msg}`);\n }\n const value = transform(expr, { disabled });\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n return expr;\n }\n return traverse(expr, {});\n}\n// ----------------------------------------------------------------------\n// :: check for nullish values\n// ----------------------------------------------------------------------\nfunction is_null(value) {\n return is_undef(value) || value === nil || value === null;\n}\n// ----------------------------------------------------------------------\nfunction is_function(o) {\n return typeof o === 'function' && typeof o.bind === 'function';\n}\n// ----------------------------------------------------------------------\nfunction is_continuation(o) {\n return o instanceof Continuation;\n}\n// ----------------------------------------------------------------------\nfunction is_callable(o) {\n return is_function(o) || is_continuation(o);\n}\n// ----------------------------------------------------------------------\nfunction is_promise(o) {\n if (o instanceof QuotedPromise) {\n return false;\n }\n if (o instanceof Promise) {\n return true;\n }\n return o && is_function(o.then);\n}\n// ----------------------------------------------------------------------\nfunction is_undef(value) {\n return typeof value === 'undefined';\n}\n// ----------------------------------------------------------------------\n// :: Function utilities\n// ----------------------------------------------------------------------\nfunction box(object) {\n // we only need to box lips data, arrays and object don't need\n // to be boxed, values from objects will be boxed when accessed\n switch (typeof object) {\n case 'string':\n return LString(object);\n case 'bigint':\n return LNumber(object);\n case 'number':\n if (Number.isNaN(object)) {\n return nan;\n } else {\n return LNumber(object);\n }\n }\n return object;\n}\n// ----------------------------------------------------------------------\nfunction map_object(object, fn) {\n const props = Object.getOwnPropertyNames(object);\n const symbols = Object.getOwnPropertySymbols(object);\n props.concat(symbols).forEach(key => {\n const value = fn(object[key]);\n // check if property is read only, happen with webpack\n // and __esModule, it can happen for other properties as well\n const descriptor = Object.getOwnPropertyDescriptor(object, key);\n if (!descriptor || descriptor.writable && object[key] !== value) {\n object[key] = value;\n }\n });\n return object;\n}\n// ----------------------------------------------------------------------\nfunction unbox(object) {\n var lips_type = [LString, LCharacter, LNumber].some(x => object instanceof x);\n if (lips_type) {\n return object.valueOf();\n }\n if (object instanceof Array) {\n return object.map(unbox);\n }\n if (object instanceof QuotedPromise) {\n delete object.then;\n }\n if (is_plain_object(object)) {\n return map_object(object, unbox);\n }\n return object;\n}\n// ----------------------------------------------------------------------\nfunction patch_value(value, context) {\n if (value instanceof Pair) {\n value.markCycles();\n return quote(value);\n }\n if (is_function(value)) {\n // original function can be restored using unbind function\n // only real JS function require to be bound\n if (context) {\n return bind(value, context);\n }\n }\n return box(value);\n}\n// ----------------------------------------------------------------------\n// :: function get original function that was binded with props\n// ----------------------------------------------------------------------\nfunction unbind(obj) {\n if (is_bound(obj)) {\n return obj[__fn__];\n }\n return obj;\n}\n// ----------------------------------------------------------------------\n// :: function bind with context that can be optionally unbind\n// :: get original function with unbind\n// ----------------------------------------------------------------------\nfunction bind(fn, context) {\n if (fn[Symbol.for('__bound__')]) {\n return fn;\n }\n const bound = fn.bind(context);\n const props = Object.getOwnPropertyNames(fn);\n for (var prop of props) {\n if (filter_fn_names(prop)) {\n try {\n bound[prop] = fn[prop];\n } catch (e) {\n // ignore error from express.js while accessing bodyParser\n }\n }\n }\n hidden_prop(bound, '__fn__', fn);\n hidden_prop(bound, '__context__', context);\n hidden_prop(bound, '__bound__', true);\n if (is_native_function(fn)) {\n hidden_prop(bound, '__native__', true);\n }\n if (is_plain_object(context) && is_lambda(fn)) {\n hidden_prop(bound, '__method__', true);\n }\n bound.valueOf = function() {\n return fn;\n };\n return bound;\n}\n// ----------------------------------------------------------------------\n// function used to check if function should not get unboxed arguments,\n// so you can call Object.getPrototypeOf for lips data types\n// this is case, see dir function and #73\n// ----------------------------------------------------------------------\nfunction is_object_bound(obj) {\n return is_bound(obj) && obj[Symbol.for('__context__')] === Object;\n}\n// ----------------------------------------------------------------------\nfunction is_bound(obj) {\n return !!(is_function(obj) && obj[__fn__]);\n}\n// ----------------------------------------------------------------------\nfunction lips_context(obj) {\n if (is_function(obj)) {\n var context = obj[__context__];\n if (context && (context === lips ||\n (context.constructor &&\n context.constructor.__class__))) {\n return true;\n }\n }\n return false;\n}\n// ----------------------------------------------------------------------\nfunction is_port(obj) {\n return obj instanceof InputPort || obj instanceof OutputPort;\n}\n// ----------------------------------------------------------------------\nfunction is_port_method(obj) {\n if (is_function(obj)) {\n if (is_port(obj[__context__])) {\n return true;\n }\n }\n return false;\n}\n// ----------------------------------------------------------------------\n// hidden props\n// ----------------------------------------------------------------------\nvar __context__ = Symbol.for('__context__');\nvar __fn__ = Symbol.for('__fn__');\nvar __data__ = Symbol.for('__data__');\nvar __ref__ = Symbol.for('__ref__');\nvar __cycles__ = Symbol.for('__cycles__');\nvar __class__ = Symbol.for('__class__');\nvar __method__ = Symbol.for('__method__');\nvar __prototype__ = Symbol.for('__prototype__');\nvar __lambda__ = Symbol.for('__lambda__');\n// ----------------------------------------------------------------------\n// :: function bind fn with context but it also move all props\n// :: mostly used for Object function\n// ----------------------------------------------------------------------\nvar exluded_names = ['name', 'length', 'caller', 'callee', 'arguments', 'prototype'];\nfunction filter_fn_names(name) {\n return !exluded_names.includes(name);\n}\n// ----------------------------------------------------------------------\nfunction hidden_prop(obj, name, value) {\n Object.defineProperty(obj, Symbol.for(name), {\n get: () => value,\n set: () => {},\n configurable: false,\n enumerable: false\n });\n}\n// ----------------------------------------------------------------------\nfunction set_fn_length(fn, length) {\n try {\n Object.defineProperty(fn, 'length', {\n get: function() {\n return length;\n }\n });\n return fn;\n } catch (e) {\n // hack that create function with specific length should work for browsers\n // that don't support Object.defineProperty like old IE\n var args = new Array(length).fill(0).map((_, i) => 'a' + i).join(',');\n var wrapper = new Function(`f`, `return function(${args}) {\n return f.apply(this, arguments);\n };`);\n return wrapper(fn);\n }\n}\n// ----------------------------------------------------------------------\nfunction is_lambda(obj) {\n return obj && obj[__lambda__];\n}\n// ----------------------------------------------------------------------\nfunction is_method(obj) {\n return obj && obj[__method__];\n}\n// ----------------------------------------------------------------------\nfunction is_raw_lambda(fn) {\n return is_lambda(fn) && !fn[__prototype__] &&\n !is_method(fn) && !is_port_method(fn);\n}\n// ----------------------------------------------------------------------\nfunction is_native_function(fn) {\n var native = Symbol.for('__native__');\n return is_function(fn) &&\n fn.toString().match(/\\{\\s*\\[native code\\]\\s*\\}/) &&\n ((fn.name.match(/^bound /) && fn[native] === true) ||\n (!fn.name.match(/^bound /) && !fn[native]));\n}\n// ----------------------------------------------------------------------\n// :: function that return macro for let, let* and letrec\n// ----------------------------------------------------------------------\nfunction let_macro(symbol) {\n var name;\n switch (symbol) {\n case Symbol.for('letrec'):\n name = 'letrec';\n break;\n case Symbol.for('let'):\n name = 'let';\n break;\n case Symbol.for('let*'):\n name = 'let*';\n break;\n default:\n throw new Error('Invalid let_macro value');\n }\n return Macro.defmacro(name, function(code, options) {\n var { dynamic_scope, error, macro_expand } = options;\n var args;\n // named let:\n // (let iter ((x 10)) (iter (- x 1))) -> (let* ((iter (lambda (x) ...\n if (code.car instanceof LSymbol) {\n if (!(code.cdr.car instanceof Pair || code.cdr.car === nil)) {\n throw new Error('let require list of pairs');\n }\n var params;\n if (code.cdr.car === nil) {\n args = nil;\n params = nil;\n } else {\n params = code.cdr.car.map(pair => pair.car);\n args = code.cdr.car.map(pair => pair.cdr.car);\n }\n return Pair.fromArray([\n LSymbol('letrec'),\n [[code.car, Pair(\n LSymbol('lambda'),\n Pair(params, code.cdr.cdr))]],\n Pair(code.car, args)\n ]);\n } else if (macro_expand) {\n // Macro.defmacro are special macros that should return lisp code\n // here we use evaluate, so we need to check special flag set by\n // macroexpand to prevent evaluation of code in normal let\n return;\n }\n var self = this;\n args = global_env.get('list->array')(code.car);\n var env = self.inherit(name);\n var values, var_body_env;\n if (name === 'let*') {\n var_body_env = env;\n } else if (name === 'let') {\n values = []; // collect potential promises\n }\n var i = 0;\n function exec() {\n var output = new Pair(new LSymbol('begin'), code.cdr);\n return evaluate(output, {\n env,\n dynamic_scope,\n error\n });\n }\n return (function loop() {\n var pair = args[i++];\n if (dynamic_scope) {\n dynamic_scope = name === 'let*' ? env : self;\n }\n if (!pair) {\n // resolve all promises\n if (values && values.length) {\n var v = values.map(x => x.value);\n var promises = v.filter(is_promise);\n if (promises.length) {\n return promise_all(v).then((arr) => {\n for (var i = 0, len = arr.length; i < len; ++i) {\n env.set(values[i].name, arr[i]);\n }\n }).then(exec);\n } else {\n for (let { name, value } of values) {\n env.set(name, value);\n }\n }\n }\n return exec();\n } else {\n if (name === 'let') {\n var_body_env = self;\n } else if (name === 'letrec') {\n var_body_env = env;\n }\n var value = evaluate(pair.cdr.car, {\n env: var_body_env,\n dynamic_scope,\n error\n });\n if (name === 'let*') {\n var_body_env = env = var_body_env.inherit('let*[' + i + ']');\n }\n if (values) {\n values.push({ name: pair.car, value });\n return loop();\n } else {\n return unpromise(value, function(value) {\n env.set(pair.car, value);\n return loop();\n });\n }\n }\n })();\n });\n}\n// -------------------------------------------------------------------------\nfunction pararel(name, fn) {\n return new Macro(name, function(code, { dynamic_scope, error } = {}) {\n var env = this;\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var node = code;\n var results = [];\n while (node instanceof Pair) {\n results.push(evaluate(node.car, { env, dynamic_scope, error }));\n node = node.cdr;\n }\n var havePromises = results.filter(is_promise).length;\n if (havePromises) {\n return promise_all(results).then(fn.bind(this));\n } else {\n return fn.call(this, results);\n }\n });\n}\n// -------------------------------------------------------------------------\nfunction guard_math_call(fn, ...args) {\n args.forEach(arg => {\n typecheck('', arg, 'number');\n });\n return fn(...args);\n}\n// ----------------------------------------------------------------------\nfunction pipe(...fns) {\n fns.forEach((fn, i) => {\n typecheck('pipe', fn, 'function', i + 1);\n });\n return (...args) => {\n return fns.reduce((args, f) => [f.apply(this, args)], args)[0];\n };\n}\n// -------------------------------------------------------------------------\nfunction compose(...fns) {\n fns.forEach((fn, i) => {\n typecheck('compose', fn, 'function', i + 1);\n });\n return pipe(...fns.reverse());\n}\n// -------------------------------------------------------------------------\n// :: fold functions generator\n// -------------------------------------------------------------------------\nfunction fold(name, fold) {\n var self = this;\n return function recur(fn, init, ...lists) {\n typecheck(name, fn, 'function');\n if (lists.some(is_null)) {\n if (typeof init === 'number') {\n return LNumber(init);\n }\n return init;\n } else {\n return fold.call(self, recur, fn, init, ...lists);\n }\n };\n}\n// -------------------------------------------------------------------------\nfunction limit_math_op(n, fn) {\n // + 1 so it include function in guard_math_call\n return limit(n + 1, curry(guard_math_call, fn));\n}\n// -------------------------------------------------------------------------\n// some functional magic\nvar single_math_op = curry(limit_math_op, 1);\nvar binary_math_op = curry(limit_math_op, 2);\n// -------------------------------------------------------------------------\nfunction reduce_math_op(fn, init = null) {\n return function(...args) {\n if (init !== null) {\n args = [init, ...args];\n }\n return args.reduce(binary_math_op(fn));\n };\n}\n// -------------------------------------------------------------------------\nfunction curry(fn, ...init_args) {\n typecheck('curry', fn, 'function');\n var len = fn.length;\n return function() {\n var args = init_args.slice();\n function call(...more_args) {\n args = args.concat(more_args);\n if (args.length >= len) {\n return fn.apply(this, args);\n } else {\n return call;\n }\n }\n return call.apply(this, arguments);\n };\n}\n// -------------------------------------------------------------------------\n// return function with limited number of arguments\nfunction limit(n, fn) {\n typecheck('limit', fn, 'function', 2);\n return function(...args) {\n return fn(...args.slice(0, n));\n };\n}\n// -------------------------------------------------------------------------\n// :: character object representation\n// -------------------------------------------------------------------------\nfunction LCharacter(char) {\n if (typeof this !== 'undefined' && !(this instanceof LCharacter) ||\n typeof this === 'undefined') {\n return new LCharacter(char);\n }\n if (char instanceof LString) {\n char = char.valueOf();\n }\n var name;\n if (Array.from(char).length > 1) {\n // this is name\n char = char.toLowerCase();\n if (LCharacter.__names__[char]) {\n name = char;\n char = LCharacter.__names__[char];\n } else {\n // this should never happen\n // parser don't allow not defined named characters\n throw new Error('Internal: Unknown named character');\n }\n } else {\n name = LCharacter.__rev_names__[char];\n }\n Object.defineProperty(this, '__char__', {\n value: char,\n enumerable: true\n });\n if (name) {\n Object.defineProperty(this, '__name__', {\n value: name,\n enumerable: true\n });\n }\n}\nLCharacter.__names__ = characters;\nLCharacter.__rev_names__ = {};\nObject.keys(LCharacter.__names__).forEach(key => {\n var value = LCharacter.__names__[key];\n LCharacter.__rev_names__[value] = key;\n});\nLCharacter.prototype.toUpperCase = function() {\n return LCharacter(this.__char__.toUpperCase());\n};\nLCharacter.prototype.toLowerCase = function() {\n return LCharacter(this.__char__.toLowerCase());\n};\nLCharacter.prototype.toString = function() {\n return '#\\\\' + (this.__name__ || this.__char__);\n};\nLCharacter.prototype.valueOf = LCharacter.prototype.serialize = function() {\n return this.__char__;\n};\n// -------------------------------------------------------------------------\n// :: String wrapper that handle copy and in place change\n// -------------------------------------------------------------------------\nfunction LString(string) {\n if (typeof this !== 'undefined' && !(this instanceof LString) ||\n typeof this === 'undefined') {\n return new LString(string);\n }\n if (string instanceof Array) {\n this.__string__ = string.map((x, i) => {\n typecheck('LString', x, 'character', i + 1);\n return x.toString();\n }).join('');\n } else {\n this.__string__ = string.valueOf();\n }\n}\n{\n const ignore = ['length', 'constructor'];\n const _keys = Object.getOwnPropertyNames(String.prototype).filter(name => {\n return !ignore.includes(name);\n });\n const wrap = (fn) => function(...args) {\n return fn.apply(this.__string__, args);\n };\n for (let key of _keys) {\n LString.prototype[key] = wrap(String.prototype[key]);\n }\n}\nLString.prototype.serialize = function() {\n return this.valueOf();\n};\nLString.isString = function(x) {\n return x instanceof LString || typeof x === 'string';\n};\nLString.prototype.get = function(n) {\n typecheck('LString::get', n, 'number');\n return Array.from(this.__string__)[n.valueOf()];\n};\nLString.prototype.cmp = function(string) {\n typecheck('LString::cmp', string, 'string');\n var a = this.valueOf();\n var b = string.valueOf();\n if (a < b) {\n return -1;\n } else if (a === b) {\n return 0;\n } else {\n return 1;\n }\n};\nLString.prototype.lower = function() {\n return LString(this.__string__.toLowerCase());\n};\nLString.prototype.upper = function() {\n return LString(this.__string__.toUpperCase());\n};\nLString.prototype.set = function(n, char) {\n typecheck('LString::set', n, 'number');\n typecheck('LString::set', char, ['string', 'character']);\n n = n.valueOf();\n if (char instanceof LCharacter) {\n char = char.__char__;\n }\n var string = [];\n if (n > 0) {\n string.push(this.__string__.substring(0, n));\n }\n string.push(char);\n if (n < this.__string__.length - 1) {\n string.push(this.__string__.substring(n + 1));\n }\n this.__string__ = string.join('');\n};\nObject.defineProperty(LString.prototype, \"length\", {\n get: function() {\n return this.__string__.length;\n }\n});\nLString.prototype.clone = function() {\n return LString(this.valueOf());\n};\nLString.prototype.fill = function(char) {\n typecheck('LString::fill', char, ['string', 'character']);\n if (char instanceof LCharacter) {\n char = char.toString();\n }\n var len = this.__string__.length;\n this.__string__ = new Array(len + 1).join(char);\n};\n// -------------------------------------------------------------------------\n// :: Number wrapper that handle BigNumbers\n// -------------------------------------------------------------------------\nfunction LNumber(n, force = false) {\n if (n instanceof LNumber) {\n return n;\n }\n if (typeof this !== 'undefined' && !(this instanceof LNumber) ||\n typeof this === 'undefined') {\n return new LNumber(n, force);\n }\n if (typeof n === 'undefined') {\n throw new Error('Invalid LNumber constructor call');\n }\n var _type = LNumber.getType(n);\n if (LNumber.types[_type]) {\n return LNumber.types[_type](n, force);\n }\n var parsable = n instanceof Array && LString.isString(n[0]) &&\n LNumber.isNumber(n[1]);\n if (n instanceof LNumber) {\n return LNumber(n.value);\n }\n if (!LNumber.isNumber(n) && !parsable) {\n throw new Error(`You can't create LNumber from ${type(n)}`);\n }\n // prevent infinite loop https://github.com/indutny/bn.js/issues/186\n if (n === null) {\n n = 0;\n }\n var value;\n if (parsable) {\n var [str, radix] = n;\n if (str instanceof LString) {\n str = str.valueOf();\n }\n if (radix instanceof LNumber) {\n radix = radix.valueOf();\n }\n var sign = str.match(/^([+-])/);\n var minus = false;\n if (sign) {\n str = str.replace(/^[+-]/, '');\n if (sign[1] === '-') {\n minus = true;\n }\n }\n }\n if (Number.isNaN(n)) {\n return LFloat(n);\n } else if (typeof BigInt !== 'undefined') {\n if (typeof n !== 'bigint') {\n if (parsable) {\n let prefix;\n // default number base (radix) supported by BigInt constructor\n switch (radix) {\n case 8:\n prefix = '0o';\n break;\n case 16:\n prefix = '0x';\n break;\n case 2:\n prefix = '0b';\n break;\n case 10:\n prefix = '';\n break;\n }\n if (typeof prefix === 'undefined') {\n // non standard radix we convert by hand\n var n_radix = BigInt(radix);\n value = [...str].map((x, i) => {\n return BigInt(parseInt(x, radix)) * pow(n_radix, BigInt(i));\n }).reduce((a, b) => a + b);\n } else {\n value = BigInt(prefix + str);\n }\n } else {\n value = BigInt(n);\n }\n if (minus) {\n value *= BigInt(-1);\n }\n } else {\n value = n;\n }\n return LBigInteger(value, true);\n } else if (typeof BN !== 'undefined' && !(n instanceof BN)) {\n if (n instanceof Array) {\n return LBigInteger(new BN(...n));\n }\n return LBigInteger(new BN(n));\n } else if (parsable) {\n this.constant(parseInt(str, radix), 'integer');\n } else {\n this.constant(n, 'integer');\n }\n}\n// -------------------------------------------------------------------------\nLNumber.prototype.constant = function(value, type) {\n Object.defineProperty(this, '__value__', {\n value,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: type,\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLNumber.types = {\n float: function(n, force = false) {\n return new LFloat(n, force);\n },\n complex: function(n, force = false) {\n if (!LNumber.isComplex(n)) {\n n = { im: 0, re: n };\n }\n return new LComplex(n, force);\n },\n rational: function(n, force = false) {\n if (!LNumber.isRational(n)) {\n n = { num: n, denom: 1 };\n }\n return new LRational(n, force);\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.serialize = function() {\n return this.__value__;\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isNaN = function() {\n return Number.isNaN(this.__value__);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.gcd = function(b) {\n // ref: https://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\n var a = this.abs();\n b = b.abs();\n if (b.cmp(a) === 1) {\n var temp = a;\n a = b;\n b = temp;\n }\n while (true) {\n a = a.rem(b);\n if (a.cmp(0) === 0) {\n return b;\n }\n b = b.rem(a);\n if (b.cmp(0) === 0) {\n return a;\n }\n }\n};\n// -------------------------------------------------------------------------\nLNumber.isFloat = function isFloat(n) {\n return n instanceof LFloat || (Number(n) === n && n % 1 !== 0);\n};\n// -------------------------------------------------------------------------\nLNumber.isNumber = function(n) {\n return n instanceof LNumber ||\n (LNumber.isNative(n) || LNumber.isBN(n));\n};\n// -------------------------------------------------------------------------\nLNumber.isComplex = function(n) {\n if (!n) {\n return false;\n }\n var ret = n instanceof LComplex ||\n ((LNumber.isNumber(n.im) || Number.isNaN(n.im)) &&\n (LNumber.isNumber(n.re) || Number.isNaN(n.re)));\n return ret;\n};\n// -------------------------------------------------------------------------\nLNumber.isRational = function(n) {\n if (!n) {\n return false;\n }\n return n instanceof LRational ||\n (LNumber.isNumber(n.num) && LNumber.isNumber(n.denom));\n};\n// -------------------------------------------------------------------------\nLNumber.isInteger = function(n) {\n if (!(LNumber.isNative(n) || n instanceof LNumber)) {\n return false;\n }\n if (LNumber.isFloat(n)) {\n return false;\n }\n if (LNumber.isRational(n)) {\n return false;\n }\n if (LNumber.isComplex(n)) {\n return false;\n }\n return true;\n};\n// -------------------------------------------------------------------------\nLNumber.isNative = function(n) {\n return typeof n === 'bigint' || typeof n === 'number';\n};\n// -------------------------------------------------------------------------\nLNumber.isBigInteger = function(n) {\n return n instanceof LBigInteger || typeof n === 'bigint' ||\n LNumber.isBN(n);\n};\n// -------------------------------------------------------------------------\nLNumber.isBN = function(n) {\n return typeof BN !== 'undefined' && n instanceof BN;\n};\n// -------------------------------------------------------------------------\nLNumber.getArgsType = function(a, b) {\n if (a instanceof LFloat || b instanceof LFloat) {\n return LFloat;\n }\n if (a instanceof LBigInteger || b instanceof LBigInteger) {\n return LBigInteger;\n }\n return LNumber;\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.toString = function(radix) {\n if (Number.isNaN(this.__value__)) {\n return '+nan.0';\n }\n if (radix > 2 && radix < 36) {\n return this.__value__.toString(radix);\n }\n return this.__value__.toString();\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.asType = function(n) {\n var _type = LNumber.getType(this);\n return LNumber.types[_type] ? LNumber.types[_type](n) : LNumber(n);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isBigNumber = function() {\n return typeof this.__value__ === 'bigint' ||\n typeof BN !== 'undefined' && !(this.value instanceof BN);\n};\n// -------------------------------------------------------------------------\n['floor', 'ceil', 'round'].forEach(fn => {\n LNumber.prototype[fn] = function() {\n if (this.float || LNumber.isFloat(this.__value__)) {\n return LNumber(Math[fn](this.__value__));\n } else {\n return LNumber(Math[fn](this.valueOf()));\n }\n };\n});\n// -------------------------------------------------------------------------\nLNumber.prototype.valueOf = function() {\n if (LNumber.isNative(this.__value__)) {\n return Number(this.__value__);\n } else if (LNumber.isBN(this.__value__)) {\n return this.__value__.toNumber();\n }\n};\n// -------------------------------------------------------------------------\n// type coercion matrix\n// -------------------------------------------------------------------------\nconst matrix = (function() {\n var i = (a, b) => [a, b];\n return {\n bigint: {\n bigint: i,\n float: (a, b) => [LFloat(a.valueOf(), true), b],\n rational: (a, b) => [{ num: a, denom: 1 }, b],\n complex: (a, b) => [{ im: 0, re: a }, b]\n },\n integer: {\n integer: i,\n float: (a, b) => [LFloat(a.valueOf(), true), b],\n rational: (a, b) => [{ num: a, denom: 1 }, b],\n complex: (a, b) => [{ im: 0, re: a }, b]\n },\n float: {\n bigint: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n integer: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n float: i,\n rational: (a, b) => [a, b && LFloat(b.valueOf(), true)],\n complex: (a, b) => [{ re: a, im: LFloat(0, true) }, b]\n },\n complex: {\n bigint: complex('bigint'),\n integer: complex('integer'),\n float: complex('float'),\n rational: complex('rational'),\n complex: (a, b) => {\n const [a_re, b_re] = LNumber.coerce(a.__re__, b.__re__);\n const [a_im, b_im] = LNumber.coerce(a.__im__, b.__im__);\n return [\n { im: a_im, re: a_re },\n { im: b_im, re: b_re }\n ];\n }\n },\n rational: {\n bigint: (a, b) => [a, b && { num: b, denom: 1 }],\n integer: (a, b) => [a, b && { num: b, denom: 1 }],\n float: (a, b) => [LFloat(a.valueOf()), b],\n rational: i,\n complex: (a, b) => {\n return [\n {\n im: coerce(a.__type__, b.__im__.__type__, 0)[0],\n re: coerce(a.__type__, b.__re__.__type__, a)[0]\n },\n {\n im: coerce(a.__type__, b.__im__.__type__, b.__im__)[0],\n re: coerce(a.__type__, b.__re__.__type__, b.__re__)[0]\n }\n ];\n }\n }\n };\n function complex(type) {\n return (a, b) => {\n return [\n {\n im: coerce(type, a.__im__.__type__, 0, a.__im__)[1],\n re: coerce(type, a.__re__.__type__, 0, a.__re__)[1]\n },\n {\n im: coerce(type, a.__im__.__type__, 0, 0)[1],\n re: coerce(type, b.__type__, 0, b)[1]\n }\n ];\n };\n }\n})();\n// -------------------------------------------------------------------------\nfunction coerce(type_a, type_b, a, b) {\n return matrix[type_a][type_b](a, b);\n}\n// -------------------------------------------------------------------------\nLNumber.coerce = function(a, b) {\n const a_type = LNumber.getType(a);\n const b_type = LNumber.getType(b);\n if (!matrix[a_type]) {\n throw new Error(`LNumber::coerce unknown lhs type ${a_type}`);\n } else if (!matrix[a_type][b_type]) {\n throw new Error(`LNumber::coerce unknown rhs type ${b_type}`);\n }\n var tmp = matrix[a_type][b_type](a, b);\n return tmp.map(n => LNumber(n, true));\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.coerce = function(n) {\n if (!(typeof n === 'number' || n instanceof LNumber)) {\n throw new Error(`LNumber: you can't coerce ${type(n)}`);\n }\n if (typeof n === 'number') {\n n = LNumber(n);\n }\n return LNumber.coerce(this, n);\n};\n// -------------------------------------------------------------------------\nLNumber.getType = function(n) {\n if (n instanceof LNumber) {\n return n.__type__;\n }\n if (LNumber.isFloat(n)) {\n return 'float';\n }\n if (LNumber.isComplex(n)) {\n return 'complex';\n }\n if (LNumber.isRational(n)) {\n return 'rational';\n }\n if (typeof n === 'number') {\n return 'integer';\n }\n if ((typeof BigInt !== 'undefined' && typeof n !== 'bigint') ||\n (typeof BN !== 'undefined' && !(n instanceof BN))) {\n return 'bigint';\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isFloat = function() {\n return !!(LNumber.isFloat(this.__value__) || this.float);\n};\n// -------------------------------------------------------------------------\nvar mapping = {\n 'add': '+',\n 'sub': '-',\n 'mul': '*',\n 'div': '/',\n 'rem': '%',\n 'or': '|',\n 'and': '&',\n 'neg': '~',\n 'shl': '>>',\n 'shr': '<<'\n};\nvar rev_mapping = {};\nObject.keys(mapping).forEach((key) => {\n rev_mapping[mapping[key]] = key;\n LNumber.prototype[key] = function(n) {\n return this.op(mapping[key], n);\n };\n});\n// -------------------------------------------------------------------------\nLNumber._ops = {\n '*': function(a, b) {\n return a * b;\n },\n '+': function(a, b) {\n return a + b;\n },\n '-': function(a, b) {\n if (typeof b === 'undefined') {\n return -a;\n }\n return a - b;\n },\n '/': function(a, b) {\n return a / b;\n },\n '%': function(a, b) {\n return a % b;\n },\n '|': function(a, b) {\n return a | b;\n },\n '&': function(a, b) {\n return a & b;\n },\n '~': function(a) {\n return ~a;\n },\n '>>': function(a, b) {\n return a >> b;\n },\n '<<': function(a, b) {\n return a << b;\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.op = function(op, n) {\n if (typeof n === 'undefined') {\n return LNumber(LNumber._ops[op](this.valueOf()));\n }\n if (typeof n === 'number') {\n n = LNumber(n);\n }\n if (Number.isNaN(this.__value__) && !LNumber.isComplex(n) ||\n !LNumber.isComplex(this) && Number.isNaN(n.__value__)) {\n return LNumber(NaN);\n }\n const [a, b] = this.coerce(n);\n if (a._op) {\n return a._op(op, b);\n }\n return LNumber(LNumber._ops[op](a, b));\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.sqrt = function() {\n var value = this.valueOf();\n if (this.cmp(0) < 0) {\n var im = Math.sqrt(-value);\n return LComplex({ re: 0, im });\n }\n return LNumber(Math.sqrt(value));\n};\n// -------------------------------------------------------------------------\nvar pow = function(a, b) {\n var e = typeof a === 'bigint' ? BigInt(1) : 1;\n return new Array(Number(b)).fill(0).reduce(x => x * a, e);\n};\n// -------------------------------------------------------------------------\n// use native exponential operator if possible (it's way faster)\n// -------------------------------------------------------------------------\nvar exp_op = new Function('a,b', 'return a ** b');\ntry {\n if (exp_op(2, 2) === 4) {\n pow = exp_op;\n }\n} catch (e) {\n // ignore\n}\n// -------------------------------------------------------------------------\nLNumber.prototype.pow = function(n) {\n var value;\n if (LNumber.isBN(this.__value__)) {\n value = this.__value__.pow(n.__value__);\n } else {\n value = pow(this.__value__, n.__value__);\n }\n return LNumber(value);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.abs = function() {\n var value = this.__value__;\n if (LNumber.isNative(this.__value__)) {\n if (value < 0) {\n value = -value;\n }\n } else if (LNumber.isBN(value)) {\n value.iabs();\n }\n return new LNumber(value);\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isOdd = function() {\n if (LNumber.isNative(this.__value__)) {\n if (this.isBigNumber()) {\n return this.__value__ % BigInt(2) === BigInt(1);\n }\n return this.__value__ % 2 === 1;\n } else if (LNumber.isBN(this.__value__)) {\n return this.__value__.isOdd();\n }\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.isEven = function() {\n return !this.isOdd();\n};\n// -------------------------------------------------------------------------\nLNumber.prototype.cmp = function(n) {\n const [a, b] = this.coerce(n);\n function cmp(a, b) {\n if (a.__value__ < b.__value__) {\n return -1;\n } else if (a.__value__ === b.__value__) {\n return 0;\n } else {\n return 1;\n }\n }\n if (a.__type__ === 'bigint') {\n if (LNumber.isNative(a.__value__)) {\n return cmp(a, b);\n } else if (LNumber.isBN(a.__value__)) {\n return this.__value__.cmp(b.__value__);\n }\n } else if (a instanceof LFloat) {\n return cmp(a, b);\n }\n};\n// -------------------------------------------------------------------------\n// :: COMPLEX TYPE\n// -------------------------------------------------------------------------\nfunction LComplex(n, force = false) {\n if (typeof this !== 'undefined' && !(this instanceof LComplex) ||\n typeof this === 'undefined') {\n return new LComplex(n, force);\n }\n if (n instanceof LComplex) {\n return LComplex({ im: n.__im__, re: n.__re__ });\n }\n if (LNumber.isNumber(n) && force) {\n if (!force) {\n return Number(n);\n }\n } else if (!LNumber.isComplex(n)) {\n throw new Error('Invalid constructor call for LComplex');\n }\n var im = n.im instanceof LNumber ? n.im : LNumber(n.im);\n var re = n.re instanceof LNumber ? n.re : LNumber(n.re);\n this.constant(im, re);\n}\n// -------------------------------------------------------------------------\nLComplex.prototype = Object.create(LNumber.prototype);\nLComplex.prototype.constructor = LComplex;\n// -------------------------------------------------------------------------\nLComplex.prototype.constant = function(im, re) {\n Object.defineProperty(this, '__im__', {\n value: im,\n enumerable: true\n });\n Object.defineProperty(this, '__re__', {\n value: re,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: 'complex',\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.serialize = function() {\n return {\n re: this.__re__,\n im: this.__im__\n };\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.toRational = function(n) {\n if (LNumber.isFloat(this.__im__) && LNumber.isFloat(this.__re__)) {\n const im = LFloat(this.__im__).toRational(n);\n const re = LFloat(this.__re__).toRational(n);\n return LComplex({ im, re });\n }\n return this;\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.add = function(n) {\n return this.complex_op('add', n, function(a_re, b_re, a_im, b_im) {\n return {\n re: a_re.add(b_re),\n im: a_im.add(b_im)\n };\n });\n};\n// -------------------------------------------------------------------------\n// :: factor is used in / and modulus\n// -------------------------------------------------------------------------\nLComplex.prototype.factor = function() {\n // fix rounding when calculating (/ 1.0 1/10+1/10i)\n if (this.__im__ instanceof LFloat || this.__im__ instanceof LFloat) {\n let { __re__: re, __im__: im } = this;\n let x, y;\n if (re instanceof LFloat) {\n x = re.toRational().mul(re.toRational());\n } else {\n x = re.mul(re);\n }\n if (im instanceof LFloat) {\n y = im.toRational().mul(im.toRational());\n } else {\n y = im.mul(im);\n }\n return x.add(y);\n } else {\n return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__));\n }\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.modulus = function() {\n return this.factor().sqrt();\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.conjugate = function() {\n return LComplex({ re: this.__re__, im: this.__im__.sub() });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.sqrt = function() {\n const r = this.modulus();\n // code based ok Kawa Scheme source code (file DComplex.java)\n // Copyright (c) 1997 Per M.A. Bothner.\n // Released under MIT License\n let re, im;\n if (r.cmp(0) === 0) {\n re = im = r;\n } else if (this.__re__.cmp(0) === 1) {\n re = LFloat(0.5).mul(r.add(this.__re__)).sqrt();\n im = this.__im__.div(re).div(2);\n } else {\n im = LFloat(0.5).mul(r.sub(this.__re__)).sqrt();\n if (this.__im__.cmp(0) === -1) {\n im = im.sub();\n }\n re = this.__im__.div(im).div(2);\n }\n return LComplex({ im, re });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.div = function(n) {\n if (LNumber.isNumber(n) && !LNumber.isComplex(n)) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n);\n }\n const re = this.__re__.div(n);\n const im = this.__im__.div(n);\n return LComplex({ re, im });\n } else if (!LNumber.isComplex(n)) {\n throw new Error('[LComplex::div] Invalid value');\n }\n const [ a, b ] = this.coerce(n);\n const denom = b.factor();\n const num = a.mul(b.conjugate());\n const re = num.__re__.op('/', denom);\n const im = num.__im__.op('/', denom);\n return LComplex({ re, im });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.sub = function(n) {\n return this.complex_op('sub', n, function(a_re, b_re, a_im, b_im) {\n return {\n re: a_re.sub(b_re),\n im: a_im.sub(b_im)\n };\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.mul = function(n) {\n return this.complex_op('mul', n, function(a_re, b_re, a_im, b_im) {\n var ret = {\n re: a_re.mul(b_re).sub(a_im.mul(b_im)),\n im: a_re.mul(b_im).add(b_re.mul(a_im))\n };\n return ret;\n });\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.complex_op = function(name, n, fn) {\n const calc = (re, im) => {\n var result = fn(this.__re__, re, this.__im__, im);\n if ('im' in result && 're' in result) {\n if (result.im.cmp(0) === 0 && !LNumber.isFloat(result.im)) {\n return result.re;\n }\n return LComplex(result, true);\n }\n return result;\n };\n if (typeof n === 'undefined') {\n return calc();\n }\n if (LNumber.isNumber(n) && !LNumber.isComplex(n)) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n);\n }\n const im = n.asType(0);\n n = { __im__: im, __re__: n };\n } else if (!LNumber.isComplex(n)) {\n throw new Error(`[LComplex::${name}] Invalid value`);\n }\n var re = n.__re__ instanceof LNumber ? n.__re__ : this.__re__.asType(n.__re__);\n var im = n.__im__ instanceof LNumber ? n.__im__ : this.__im__.asType(n.__im__);\n return calc(re, im);\n};\n// -------------------------------------------------------------------------\nLComplex._op = {\n '+': 'add',\n '-': 'sub',\n '*': 'mul',\n '/': 'div'\n};\n// -------------------------------------------------------------------------\nLComplex.prototype._op = function(op, n) {\n const fn = LComplex._op[op];\n return this[fn](n);\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.cmp = function(n) {\n const [a, b] = this.coerce(n);\n const [re_a, re_b] = a.__re__.coerce(b.__re__);\n const re_cmp = re_a.cmp(re_b);\n if (re_cmp !== 0) {\n return re_cmp;\n } else {\n const [im_a, im_b] = a.__im__.coerce(b.__im__);\n return im_a.cmp(im_b);\n }\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.valueOf = function() {\n return [this.__re__, this.__im__].map(x => x.valueOf());\n};\n// -------------------------------------------------------------------------\nLComplex.prototype.toString = function() {\n var result;\n if (this.__re__.cmp(0) !== 0) {\n result = [toString(this.__re__)];\n } else {\n result = [];\n }\n // NaN and inf already have sign\n var im = this.__im__.valueOf();\n var inf = [Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY].includes(im);\n var im_str = toString(this.__im__);\n if (!inf && !Number.isNaN(im)) {\n var zero_check = this.__im__.cmp(0);\n if (zero_check < 0 || (zero_check === 0 && this.__im__._minus)) {\n result.push('-');\n } else {\n result.push('+');\n }\n im_str = im_str.replace(/^-/, '');\n }\n result.push(im_str);\n result.push('i');\n return result.join('');\n};\n// -------------------------------------------------------------------------\n// :: FLOAT TYPE\n// -------------------------------------------------------------------------\nfunction LFloat(n) {\n if (typeof this !== 'undefined' && !(this instanceof LFloat) ||\n typeof this === 'undefined') {\n return new LFloat(n);\n }\n if (!LNumber.isNumber(n)) {\n throw new Error('Invalid constructor call for LFloat');\n }\n if (n instanceof LNumber) {\n return LFloat(n.valueOf());\n }\n if (typeof n === 'number') {\n if (Object.is(n, -0)) {\n Object.defineProperty(this, '_minus', {\n value: true\n });\n }\n this.constant(n, 'float');\n }\n}\n// -------------------------------------------------------------------------\nLFloat.prototype = Object.create(LNumber.prototype);\nLFloat.prototype.constructor = LFloat;\n// -------------------------------------------------------------------------\nLFloat.prototype.toString = function() {\n if (this.__value__ === Number.NEGATIVE_INFINITY) {\n return '-inf.0';\n }\n if (this.__value__ === Number.POSITIVE_INFINITY) {\n return '+inf.0';\n }\n if (Number.isNaN(this.__value__)) {\n return '+nan.0';\n }\n var str = this.__value__.toString();\n if (!LNumber.isFloat(this.__value__) && !str.match(/e/i)) {\n var result = str + '.0';\n return this._minus ? ('-' + result) : result;\n }\n return str.replace(/^([0-9]+)e/, '$1.0e');\n};\n// -------------------------------------------------------------------------\nLFloat.prototype._op = function(op, n) {\n if (n instanceof LNumber) {\n n = n.__value__;\n }\n const fn = LNumber._ops[op];\n if (op === '/' && this.__value__ === 0 && n === 0) {\n return NaN;\n }\n return LFloat(fn(this.__value__, n), true);\n};\n// -------------------------------------------------------------------------\n// same approximation as in guile scheme\nLFloat.prototype.toRational = function(n = null) {\n if (n === null) {\n return toRational(this.__value__.valueOf());\n }\n return approxRatio(n.valueOf())(this.__value__.valueOf());\n};\n// -------------------------------------------------------------------------\nLFloat.prototype.sqrt = function() {\n var value = this.valueOf();\n if (this.cmp(0) < 0) {\n var im = LFloat(Math.sqrt(-value));\n return LComplex({ re: 0, im });\n }\n return LFloat(Math.sqrt(value));\n};\n// -------------------------------------------------------------------------\nLFloat.prototype.abs = function() {\n var value = this.valueOf();\n if (value < 0) {\n value = -value;\n }\n return LFloat(value);\n};\n// -------------------------------------------------------------------------\n// ref: https://rosettacode.org/wiki/Convert_decimal_number_to_rational\n// -------------------------------------------------------------------------\nvar toRational = approxRatio(1e-10);\nfunction approxRatio(eps) {\n return function(n) {\n const gcde = (e, x, y) => {\n const _gcd = (a, b) => (b < e ? a : _gcd(b, a % b));\n if (Number.isNaN(x) || Number.isNaN(y)) {\n return NaN;\n }\n return _gcd(Math.abs(x), Math.abs(y));\n },\n c = gcde(eps ? eps : (1 / 10000), 1, n);\n return LRational({ num: Math.floor(n / c), denom: Math.floor(1 / c) });\n };\n}\n// -------------------------------------------------------------------------\n// :: source: Kawa gnu.math.RatNum.java\n// :: This algorithm is by Alan Bawden. It has been transcribed\n// :: with permission from Kawa copyright M.A. Bothner.\n// :: which was transcribed from from C-Gambit, copyright Marc Feeley.\n// -------------------------------------------------------------------------\nfunction rationalize(x, y) {\n var a = x.sub(y);\n var b = x.add(y);\n var result;\n if (a.cmp(b) > 0) {\n result = simplest_rational2(b, a);\n } else if (b.cmp(a) <= 0) {\n result = a;\n } else if (a.cmp(0) > 0) {\n result = simplest_rational2(a, b);\n } else if (y.cmp(0) < 0) {\n result = LNumber(simplest_rational2(b.sub(), a.sub())).sub();\n } else {\n result = LNumber(0);\n }\n if (LNumber.isFloat(y) || LNumber.isFloat(x)) {\n return LFloat(result);\n }\n return result;\n}\n// -------------------------------------------------------------------------\nfunction simplest_rational2(x, y) {\n var fx = LNumber(x).floor();\n var fy = LNumber(y).floor();\n if (x.cmp(fx) < 1) {\n return fx;\n } else if (fx.cmp(fy) === 0) {\n var n = LNumber(1).div(y.sub(fy));\n var d = LNumber(1).div(x.sub(fx));\n return fx.add(LNumber(1).div(simplest_rational2(n, d)));\n } else {\n return fx.add(LNumber(1));\n }\n}\n// -------------------------------------------------------------------------\nfunction LRational(n, force = false) {\n if (typeof this !== 'undefined' && !(this instanceof LRational) ||\n typeof this === 'undefined') {\n return new LRational(n, force);\n }\n if (!LNumber.isRational(n)) {\n throw new Error('Invalid constructor call for LRational');\n }\n var num, denom;\n if (n instanceof LRational) {\n num = LNumber(n.__num__);\n denom = LNumber(n.__denom__);\n } else {\n num = LNumber(n.num);\n denom = LNumber(n.denom);\n }\n if (!force && denom.cmp(0) !== 0) {\n var is_integer = num.op('%', denom).cmp(0) === 0;\n if (is_integer) {\n return LNumber(num.div(denom));\n }\n }\n this.constant(num, denom);\n}\n// -------------------------------------------------------------------------\nLRational.prototype = Object.create(LNumber.prototype);\nLRational.prototype.constructor = LRational;\n// -------------------------------------------------------------------------\nLRational.prototype.constant = function(num, denom) {\n Object.defineProperty(this, '__num__', {\n value: num,\n enumerable: true\n });\n Object.defineProperty(this, '__denom__', {\n value: denom,\n enumerable: true\n });\n Object.defineProperty(this, '__type__', {\n value: 'rational',\n enumerable: true\n });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.serialize = function() {\n return {\n num: this.__num__,\n denom: this.__denom__\n };\n};\n// -------------------------------------------------------------------------\nLRational.prototype.pow = function(n) {\n var cmp = n.cmp(0);\n if (cmp === 0) {\n return LNumber(1);\n }\n if (cmp === -1) {\n n = n.sub();\n var num = this.__denom__.pow(n);\n var denom = this.__num__.pow(n);\n return LRational({ num, denom });\n }\n var result = this;\n n = n.valueOf();\n while (n > 1) {\n result = result.mul(this);\n n--;\n }\n return result;\n};\n// -------------------------------------------------------------------------\nLRational.prototype.sqrt = function() {\n const num = this.__num__.sqrt();\n const denom = this.__denom__.sqrt();\n if (num instanceof LFloat || denom instanceof LFloat) {\n return num.div(denom);\n }\n return LRational({ num, denom });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.abs = function() {\n var num = this.__num__;\n var denom = this.__denom__;\n if (num.cmp(0) === -1) {\n num = num.sub();\n }\n if (denom.cmp(0) !== 1) {\n denom = denom.sub();\n }\n return LRational({ num, denom });\n};\n// -------------------------------------------------------------------------\nLRational.prototype.cmp = function(n) {\n return LNumber(this.valueOf(), true).cmp(n);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.toString = function() {\n var gcd = this.__num__.gcd(this.__denom__);\n var num, denom;\n if (gcd.cmp(1) !== 0) {\n num = this.__num__.div(gcd);\n if (num instanceof LRational) {\n num = LNumber(num.valueOf(true));\n }\n denom = this.__denom__.div(gcd);\n if (denom instanceof LRational) {\n denom = LNumber(denom.valueOf(true));\n }\n } else {\n num = this.__num__;\n denom = this.__denom__;\n }\n const minus = this.cmp(0) < 0;\n if (minus) {\n if (num.abs().cmp(denom.abs()) === 0) {\n return num.toString();\n }\n } else if (num.cmp(denom) === 0) {\n return num.toString();\n }\n return num.toString() + '/' + denom.toString();\n};\n// -------------------------------------------------------------------------\nLRational.prototype.valueOf = function(exact) {\n if (this.__denom__.cmp(0) === 0) {\n if (this.__num__.cmp(0) < 0) {\n return Number.NEGATIVE_INFINITY;\n }\n return Number.POSITIVE_INFINITY;\n }\n if (exact) {\n return LNumber._ops['/'](this.__num__.value, this.__denom__.value);\n }\n return LFloat(this.__num__.valueOf()).div(this.__denom__.valueOf());\n};\n// -------------------------------------------------------------------------\nLRational.prototype.mul = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (mul 2))\n }\n if (LNumber.isRational(n)) {\n var num = this.__num__.mul(n.__num__);\n var denom = this.__denom__.mul(n.__denom__);\n return LRational({ num, denom });\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.mul(b);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.div = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (div 2))\n }\n if (LNumber.isRational(n)) {\n var num = this.__num__.mul(n.__denom__);\n var denom = this.__denom__.mul(n.__num__);\n return LRational({ num, denom });\n }\n const [a, b] = LNumber.coerce(this, n);\n const ret = a.div(b);\n return ret;\n};\n// -------------------------------------------------------------------------\nLRational.prototype._op = function(op, n) {\n return this[rev_mapping[op]](n);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.sub = function(n) {\n if (typeof n === 'undefined') {\n return this.mul(-1);\n }\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (sub 1))\n }\n if (LNumber.isRational(n)) {\n var num = n.__num__.sub();\n var denom = n.__denom__;\n return this.add(LRational({ num, denom }));\n }\n if (!(n instanceof LNumber)) {\n n = LNumber(n).sub();\n } else {\n n = n.sub();\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.add(b);\n};\n// -------------------------------------------------------------------------\nLRational.prototype.add = function(n) {\n if (!(n instanceof LNumber)) {\n n = LNumber(n); // handle (--> 1/2 (add 1))\n }\n if (LNumber.isRational(n)) {\n const a_denom = this.__denom__;\n const b_denom = n.__denom__;\n const a_num = this.__num__;\n const b_num = n.__num__;\n let denom, num;\n if (a_denom !== b_denom) {\n num = b_denom.mul(a_num).add(b_num.mul(a_denom));\n denom = a_denom.mul(b_denom);\n } else {\n num = a_num.add(b_num);\n denom = a_denom;\n }\n return LRational({ num, denom });\n }\n if (LNumber.isFloat(n)) {\n return LFloat(this.valueOf()).add(n);\n }\n const [a, b] = LNumber.coerce(this, n);\n return a.add(b);\n};\n// -------------------------------------------------------------------------\nfunction LBigInteger(n, native) {\n if (typeof this !== 'undefined' && !(this instanceof LBigInteger) ||\n typeof this === 'undefined') {\n return new LBigInteger(n, native);\n }\n if (n instanceof LBigInteger) {\n return LBigInteger(n.__value__, n._native);\n }\n if (!LNumber.isBigInteger(n)) {\n throw new Error('Invalid constructor call for LBigInteger');\n }\n this.constant(n, 'bigint');\n Object.defineProperty(this, '_native', {\n value: native\n });\n}\n// -------------------------------------------------------------------------\nLBigInteger.prototype = Object.create(LNumber.prototype);\nLBigInteger.prototype.constructor = LBigInteger;\n// -------------------------------------------------------------------------\nLBigInteger.bn_op = {\n '+': 'iadd',\n '-': 'isub',\n '*': 'imul',\n '/': 'idiv',\n '%': 'imod',\n '|': 'ior',\n '&': 'iand',\n '~': 'inot',\n '<<': 'ishrn',\n '>>': 'ishln'\n};\nLBigInteger.prototype.serialize = function() {\n return this.__value__.toString();\n};\n// -------------------------------------------------------------------------\nLBigInteger.prototype._op = function(op, n) {\n if (typeof n === 'undefined') {\n if (LNumber.isBN(this.__value__)) {\n op = LBigInteger.bn_op[op];\n return LBigInteger(this.__value__.clone()[op](), false);\n }\n return LBigInteger(LNumber._ops[op](this.__value__), true);\n }\n if (LNumber.isBN(this.__value__) && LNumber.isBN(n.__value__)) {\n op = LBigInteger.bn_op[op];\n return LBigInteger(this.__value__.clone()[op](n), false);\n }\n const ret = LNumber._ops[op](this.__value__, n.__value__);\n if (op === '/') {\n var is_integer = this.op('%', n).cmp(0) === 0;\n if (is_integer) {\n return LNumber(ret);\n }\n return LRational({ num: this, denom: n });\n }\n // use native calculation because it's real bigint value\n return LBigInteger(ret, true);\n};\n// -------------------------- -----------------------------------------------\nLBigInteger.prototype.sqrt = function() {\n var value;\n var minus = this.cmp(0) < 0;\n if (LNumber.isNative(this.__value__)) {\n value = LNumber(Math.sqrt(minus ? -this.valueOf() : this.valueOf()));\n } else if (LNumber.isBN(this.__value__)) {\n value = minus ? this.__value__.neg().sqrt() : this.__value__.sqrt();\n }\n if (minus) {\n return LComplex({ re: 0, im: value });\n }\n return value;\n};\n// -------------------------------------------------------------------------\nLNumber.NaN = LNumber(NaN);\n// -------------------------------------------------------------------------\n// :: Port abstraction - read should be a function that return next line\n// -------------------------------------------------------------------------\nfunction InputPort(read) {\n if (typeof this !== 'undefined' && !(this instanceof InputPort) ||\n typeof this === 'undefined') {\n return new InputPort(read);\n }\n typecheck('InputPort', read, 'function');\n read_only(this, '__type__', text_port);\n var parser;\n Object.defineProperty(this, '__parser__', {\n enumerable: true,\n get: function() {\n return parser;\n },\n set: function(value) {\n typecheck('InputPort::__parser__', value, 'parser');\n parser = value;\n }\n });\n this._read = read;\n this._with_parser = this._with_init_parser.bind(this, async () => {\n if (!this.char_ready()) {\n const line = await this._read();\n parser = new Parser(line, { env: this });\n }\n return this.__parser__;\n });\n this.char_ready = function() {\n return !!this.__parser__ && this.__parser__.__lexer__.peek() !== eof;\n };\n this._make_defaults();\n}\nInputPort.prototype._make_defaults = function() {\n this.read = this._with_parser((parser) => {\n return parser.read_object();\n });\n this.read_line = this._with_parser((parser) => {\n return parser.__lexer__.read_line();\n });\n this.read_char = this._with_parser((parser) => {\n return parser.__lexer__.read_char();\n });\n this.read_string = this._with_parser((parser, number) => {\n if (!LNumber.isInteger(number)) {\n const type = LNumber.getType(number);\n typeErrorMessage('read-string', type, 'integer');\n }\n return parser.__lexer__.read_string(number.valueOf());\n });\n this.peek_char = this._with_parser((parser) => {\n return parser.__lexer__.peek_char();\n });\n};\nInputPort.prototype._with_init_parser = function(make_parser, fn) {\n var self = this;\n return async function(...args) {\n var parser = await make_parser.call(self);\n return fn(parser, ...args);\n };\n};\nInputPort.prototype.is_open = function() {\n return this._with_parser !== null;\n};\nInputPort.prototype.close = function() {\n this.__parser__ = null;\n // make content garbage collected, we assign null,\n // because the value is in prototype\n this._with_parser = null;\n ['read', 'close', 'read_char', 'peek-char', 'read_line'].forEach(name => {\n this[name] = function() {\n throw new Error('input-port: port is closed');\n };\n });\n this.char_ready = function() {\n return false;\n };\n};\nInputPort.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nfunction OutputPort(write) {\n if (typeof this !== 'undefined' && !(this instanceof OutputPort) ||\n typeof this === 'undefined') {\n return new OutputPort(write);\n }\n typecheck('OutputPort', write, 'function');\n read_only(this, '__type__', text_port);\n this.write = write;\n}\nOutputPort.prototype.is_open = function() {\n return this._closed !== true;\n};\nOutputPort.prototype.close = function() {\n Object.defineProperty(this, '_closed', {\n get: () => true,\n set: () => {},\n configurable: false,\n enumerable: false\n });\n this.write = function() {\n throw new Error('output-port: port is closed');\n };\n};\nOutputPort.prototype.flush = function() {\n // do nothing\n};\nOutputPort.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nclass BufferedOutputPort extends OutputPort {\n constructor(fn) {\n super((...args) => this._write(...args));\n typecheck('BufferedOutputPort', fn, 'function');\n read_only(this, '_fn', fn, { hidden: true });\n read_only(this, '_buffer', [], { hidden: true });\n }\n flush() {\n if (this._buffer.length) {\n this._fn(this._buffer.join(''));\n this._buffer.length = 0;\n }\n }\n _write(...args) {\n if (args.length) {\n args.forEach(arg => {\n this._buffer.push(arg);\n });\n const last_value = this._buffer[this._buffer.length - 1];\n if (last_value.match(/\\n$/)) {\n this._buffer[this._buffer.length - 1] = last_value.replace(/\\n$/, '');\n this.flush();\n }\n }\n }\n}\n// -------------------------------------------------------------------------\nfunction OutputStringPort(toString) {\n if (typeof this !== 'undefined' && !(this instanceof OutputStringPort) ||\n typeof this === 'undefined') {\n return new OutputStringPort(toString);\n }\n typecheck('OutputStringPort', toString, 'function');\n read_only(this, '__type__', text_port);\n read_only(this, '__buffer__', []);\n this.write = (x) => {\n if (!LString.isString(x)) {\n x = toString(x);\n } else {\n x = x.valueOf();\n }\n this.__buffer__.push(x);\n };\n}\nOutputStringPort.prototype = Object.create(OutputPort.prototype);\nOutputStringPort.prototype.constructor = OutputStringPort;\nOutputStringPort.prototype.toString = function() {\n return '#';\n};\nOutputStringPort.prototype.valueOf = function() {\n return this.__buffer__.map(x => x.valueOf()).join('');\n};\n// -------------------------------------------------------------------------\nfunction OutputFilePort(filename, fd) {\n if (typeof this !== 'undefined' && !(this instanceof OutputFilePort) ||\n typeof this === 'undefined') {\n return new OutputFilePort(filename, fd);\n }\n typecheck('OutputFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n read_only(this, '_fd', fd.valueOf(), { hidden: true });\n read_only(this, '__type__', text_port);\n this.write = (x) => {\n if (!LString.isString(x)) {\n x = toString(x);\n } else {\n x = x.valueOf();\n }\n this.fs().write(this._fd, x, function(err) {\n if (err) {\n throw err;\n }\n });\n };\n}\nOutputFilePort.prototype = Object.create(OutputPort.prototype);\nOutputFilePort.prototype.constructor = OutputFilePort;\nOutputFilePort.prototype.fs = function() {\n if (!this._fs) {\n this._fs = this.internal('fs');\n }\n return this._fs;\n};\nOutputFilePort.prototype.internal = function(name) {\n return user_env.get('**internal-env**').get(name);\n};\nOutputFilePort.prototype.close = function() {\n return new Promise((resolve, reject) => {\n this.fs().close(this._fd, (err) => {\n if (err) {\n reject(err);\n } else {\n read_only(this, '_fd', null, { hidden: true });\n OutputPort.prototype.close.call(this);\n resolve();\n }\n });\n });\n};\nOutputFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputStringPort(string, env) {\n if (typeof this !== 'undefined' && !(this instanceof InputStringPort) ||\n typeof this === 'undefined') {\n return new InputStringPort(string);\n }\n typecheck('InputStringPort', string, 'string');\n env = env || global_env;\n string = string.valueOf();\n this._with_parser = this._with_init_parser.bind(this, () => {\n if (!this.__parser__) {\n this.__parser__ = new Parser(string, { env });\n }\n return this.__parser__;\n });\n read_only(this, '__type__', text_port);\n this._make_defaults();\n}\nInputStringPort.prototype.char_ready = function() {\n return true;\n};\nInputStringPort.prototype = Object.create(InputPort.prototype);\nInputStringPort.prototype.constructor = InputStringPort;\nInputStringPort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputByteVectorPort(bytevectors) {\n if (typeof this !== 'undefined' && !(this instanceof InputByteVectorPort) ||\n typeof this === 'undefined') {\n return new InputByteVectorPort(bytevectors);\n }\n typecheck('InputByteVectorPort', bytevectors, 'uint8array');\n read_only(this, '__vector__', bytevectors);\n read_only(this, '__type__', binary_port);\n var index = 0;\n Object.defineProperty(this, '__index__', {\n enumerable: true,\n get: function() {\n return index;\n },\n set: function(value) {\n typecheck('InputByteVectorPort::__index__', value, 'number');\n if (value instanceof LNumber) {\n value = value.valueOf();\n }\n if (typeof value === 'bigint') {\n value = Number(value);\n }\n if (Math.floor(value) !== value) {\n throw new Error('InputByteVectorPort::__index__ value is ' +\n 'not integer');\n }\n index = value;\n }\n });\n}\nInputByteVectorPort.prototype = Object.create(InputPort.prototype);\nInputByteVectorPort.prototype.constructor = InputByteVectorPort;\nInputByteVectorPort.prototype.toString = function() {\n return `#`;\n};\nInputByteVectorPort.prototype.close = function() {\n read_only(this, '__vector__', nil);\n ['read_u8', 'close', 'peek_u8', 'read_u8_vector'].forEach(name => {\n this[name] = function() {\n throw new Error('Input-binary-port: port is closed');\n };\n });\n this.char_ready = function() {\n return false;\n };\n};\nInputByteVectorPort.prototype.u8_ready = function() {\n return true;\n};\nInputByteVectorPort.prototype.peek_u8 = function() {\n if (this.__index__ >= this.__vector__.length) {\n return eof;\n }\n return this.__vector__[this.__index__];\n};\nInputByteVectorPort.prototype.skip = function() {\n if (this.__index__ <= this.__vector__.length) {\n ++this.__index__;\n }\n};\nInputByteVectorPort.prototype.read_u8 = function() {\n const byte = this.peek_u8();\n this.skip();\n return byte;\n};\nInputByteVectorPort.prototype.read_u8_vector = function(len) {\n if (typeof len === 'undefined') {\n len = this.__vector__.length;\n } else if (len > this.__index__ + this.__vector__.length) {\n len = this.__index__ + this.__vector__.length;\n }\n if (this.peek_u8() === eof) {\n return eof;\n }\n return this.__vector__.slice(this.__index__, len);\n};\n// -------------------------------------------------------------------------\nfunction OutputByteVectorPort() {\n if (typeof this !== 'undefined' && !(this instanceof OutputByteVectorPort) ||\n typeof this === 'undefined') {\n return new OutputByteVectorPort();\n }\n read_only(this, '__type__', binary_port);\n read_only(this, '_buffer', [], { hidden: true });\n this.write = function(x) {\n typecheck('write', x, ['number', 'uint8array']);\n if (LNumber.isNumber(x)) {\n this._buffer.push(x.valueOf());\n } else {\n this._buffer.push(...Array.from(x));\n }\n };\n Object.defineProperty(this, '__buffer__', {\n enumerable: true,\n get: function() {\n return Uint8Array.from(this._buffer);\n }\n });\n}\nOutputByteVectorPort.prototype = Object.create(OutputPort.prototype);\nOutputByteVectorPort.prototype.constructor = OutputByteVectorPort;\nOutputByteVectorPort.prototype.close = function() {\n OutputPort.prototype.close.call(this);\n read_only(this, '_buffer', null, { hidden: true });\n};\nOutputByteVectorPort.prototype._close_guard = function() {\n if (this._closed) {\n throw new Error('output-port: binary port is closed');\n }\n};\nOutputByteVectorPort.prototype.write_u8 = function(byte) {\n typecheck('OutputByteVectorPort::write_u8', byte, 'number');\n this.write(byte);\n};\nOutputByteVectorPort.prototype.write_u8_vector = function(vector) {\n typecheck('OutputByteVectorPort::write_u8_vector', vector, 'uint8array');\n this.write(vector);\n};\nOutputByteVectorPort.prototype.toString = function() {\n return '#';\n};\nOutputByteVectorPort.prototype.valueOf = function() {\n return this.__buffer__;\n};\n// -------------------------------------------------------------------------\nfunction InputFilePort(content, filename) {\n if (typeof this !== 'undefined' && !(this instanceof InputFilePort) ||\n typeof this === 'undefined') {\n return new InputFilePort(content, filename);\n }\n InputStringPort.call(this, content);\n typecheck('InputFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n}\nInputFilePort.prototype = Object.create(InputStringPort.prototype);\nInputFilePort.prototype.constructor = InputFilePort;\nInputFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction InputBinaryFilePort(content, filename) {\n if (typeof this !== 'undefined' && !(this instanceof InputBinaryFilePort) ||\n typeof this === 'undefined') {\n return new InputBinaryFilePort(content, filename);\n }\n InputByteVectorPort.call(this, content);\n typecheck('InputBinaryFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n}\nInputBinaryFilePort.prototype = Object.create(InputByteVectorPort.prototype);\nInputBinaryFilePort.prototype.constructor = InputBinaryFilePort;\nInputBinaryFilePort.prototype.toString = function() {\n return `#`;\n};\n// -------------------------------------------------------------------------\nfunction OutputBinaryFilePort(filename, fd) {\n if (typeof this !== 'undefined' && !(this instanceof OutputBinaryFilePort) ||\n typeof this === 'undefined') {\n return new OutputBinaryFilePort(filename, fd);\n }\n typecheck('OutputBinaryFilePort', filename, 'string');\n read_only(this, '__filename__', filename);\n read_only(this, '_fd', fd.valueOf(), { hidden: true });\n read_only(this, '__type__', binary_port);\n var fs, Buffer;\n this.write = function(x) {\n typecheck('write', x, ['number', 'uint8array']);\n var buffer;\n if (!fs) {\n fs = this.internal('fs');\n }\n if (!Buffer) {\n Buffer = this.internal('Buffer');\n }\n if (LNumber.isNumber(x)) {\n buffer = Buffer.from([x.valueOf()]);\n } else {\n buffer = Buffer.from(Array.from(x));\n }\n return new Promise((resolve, reject) => {\n fs.write(this._fd, buffer, function(err) {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n };\n}\nOutputBinaryFilePort.prototype = Object.create(OutputFilePort.prototype);\nOutputBinaryFilePort.prototype.constructor = OutputBinaryFilePort;\nOutputBinaryFilePort.prototype.write_u8 = function(byte) {\n typecheck('OutputByteVectorPort::write_u8', byte, 'number');\n this.write(byte);\n};\nOutputBinaryFilePort.prototype.write_u8_vector = function(vector) {\n typecheck('OutputByteVectorPort::write_u8_vector', vector, 'uint8array');\n this.write(vector);\n};\n// -------------------------------------------------------------------------\nconst binary_port = Symbol.for('binary');\nconst text_port = Symbol.for('text');\nvar eof = new EOF();\nfunction EOF() {}\nEOF.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\n// simpler way to create interpreter with interaction-environment\n// -------------------------------------------------------------------------\nfunction Interpreter(name, { stderr, stdin, stdout, ...obj } = {}) {\n if (typeof this !== 'undefined' && !(this instanceof Interpreter) ||\n typeof this === 'undefined') {\n return new Interpreter(name, { stdin, stdout, stderr, ...obj });\n }\n if (typeof name === 'undefined') {\n name = 'anonymous';\n }\n this.__env__ = user_env.inherit(name, obj);\n this.__env__.set('parent.frame', doc('parent.frame', () => {\n return this.__env__;\n }, global_env.__env__['parent.frame'].__doc__));\n const defaults_name = '**interaction-environment-defaults**';\n this.set(defaults_name, get_props(obj).concat(defaults_name));\n var inter = internal_env.inherit(`internal-${name}`);\n if (is_port(stdin)) {\n inter.set('stdin', stdin);\n }\n if (is_port(stderr)) {\n inter.set('stderr', stderr);\n }\n if (is_port(stdout)) {\n inter.set('stdout', stdout);\n }\n set_interaction_env(this.__env__, inter);\n}\n// -------------------------------------------------------------------------\nInterpreter.prototype.exec = function(code, dynamic = false, env = null) {\n typecheck('Interpreter::exec', code, ['string', 'array'], 1);\n typecheck('Interpreter::exec', dynamic, 'boolean', 2);\n // simple solution to overwrite this variable in each interpreter\n // before evaluation of user code\n global_env.set('**interaction-environment**', this.__env__);\n if (env === null) {\n env = this.__env__;\n }\n return exec(code, env, dynamic ? env : false);\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.get = function(value) {\n const result = this.__env__.get(value);\n if (is_function(result)) {\n return result.bind(this.__env__);\n }\n return result;\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.set = function(name, value) {\n return this.__env__.set(name, value);\n};\n// -------------------------------------------------------------------------\nInterpreter.prototype.constant = function(name, value) {\n return this.__env__.constant(name, value);\n};\n// -------------------------------------------------------------------------\n// Lips Exception used in error function\n// -------------------------------------------------------------------------\nfunction LipsError(message, args) {\n this.name = 'LipsError';\n this.message = message;\n this.args = args;\n this.stack = (new Error()).stack;\n}\nLipsError.prototype = new Error();\nLipsError.prototype.constructor = LipsError;\n// -------------------------------------------------------------------------\n// :: Environment constructor (parent and name arguments are optional)\n// -------------------------------------------------------------------------\nfunction Environment(obj, parent, name) {\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'object') {\n obj = arguments[0];\n parent = null;\n } else if (typeof arguments[0] === 'string') {\n obj = {};\n parent = null;\n name = arguments[0];\n }\n }\n this.__docs__ = new Map();\n this.__env__ = obj;\n this.__parent__ = parent;\n this.__name__ = name || 'anonymous';\n}\n// -------------------------------------------------------------------------\nEnvironment.prototype.list = function() {\n return get_props(this.__env__);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.fs = function() {\n return this.get('**fs**');\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.unset = function(name) {\n if (name instanceof LSymbol) {\n name = name.valueOf();\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n delete this.__env__[name];\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.inherit = function(name, obj = {}) {\n if (typeof name === \"object\") {\n obj = name;\n }\n if (!name || typeof name === \"object\") {\n name = 'child of ' + (this.__name__ || 'unknown');\n }\n return new Environment(obj || {}, this, name);\n};\n// -------------------------------------------------------------------------\n// :: lookup function for variable doc strings\n// -------------------------------------------------------------------------\nEnvironment.prototype.doc = function(name, value = null, dump = false) {\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n if (value) {\n if (!dump) {\n value = trim_lines(value);\n }\n this.__docs__.set(name, value);\n return this;\n }\n if (this.__docs__.has(name)) {\n return this.__docs__.get(name);\n }\n if (this.__parent__) {\n return this.__parent__.doc(name);\n }\n};\n// -------------------------------------------------------------------------\n// :: function create frame environment for usage in functions\n// :: frames are used to it's easier to find environments of the functions\n// :: in scope chain, they are dummy environments just for lookup\n// -------------------------------------------------------------------------\nEnvironment.prototype.newFrame = function(fn, args) {\n var frame = this.inherit('__frame__');\n frame.set('parent.frame', doc('parent.frame', function(n = 1) {\n n = n.valueOf();\n var scope = frame.__parent__;\n if (!(scope instanceof Environment)) {\n return nil;\n }\n if (n <= 0) {\n return scope;\n }\n var parent_frame = scope.get('parent.frame');\n return parent_frame(n - 1);\n }, global_env.__env__['parent.frame'].__doc__));\n args.callee = fn;\n frame.set('arguments', args);\n return frame;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype._lookup = function(symbol) {\n if (symbol instanceof LSymbol) {\n symbol = symbol.__name__;\n }\n if (symbol instanceof LString) {\n symbol = symbol.valueOf();\n }\n if (this.__env__.hasOwnProperty(symbol)) {\n return Value(this.__env__[symbol]);\n }\n if (this.__parent__) {\n return this.__parent__._lookup(symbol);\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.clone = function() {\n // duplicate refs\n var env = {};\n // TODO: duplicated Symbols\n Object.keys(this.__env__).forEach(key => {\n env[key] = this.__env__[key];\n });\n return new Environment(env, this.__parent__, this.__name__);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.merge = function(env, name = 'merge') {\n typecheck('Environment::merge', env, 'environment');\n return this.inherit(name, env.__env__);\n};\n// -------------------------------------------------------------------------\n// value returned in lookup if found value in env and in promise_all\n// -------------------------------------------------------------------------\nfunction Value(value) {\n if (typeof this !== 'undefined' && !(this instanceof Value) ||\n typeof this === 'undefined') {\n return new Value(value);\n }\n this.value = value;\n}\n// -------------------------------------------------------------------------\nValue.isUndefined = function(x) {\n return x instanceof Value && typeof x.value === 'undefined';\n};\n// -------------------------------------------------------------------------\nValue.prototype.valueOf = function() {\n return this.value;\n};\n// -------------------------------------------------------------------------\n// :: different object than value used as object for (values)\n// -------------------------------------------------------------------------\nfunction Values(values) {\n if (values.length) {\n if (values.length === 1) {\n return values[0];\n }\n }\n if (typeof this !== 'undefined' && !(this instanceof Values) ||\n typeof this === 'undefined') {\n return new Values(values);\n }\n this.__values__ = values;\n}\nValues.prototype.toString = function() {\n return this.__values__.map(x => toString(x)).join('\\n');\n};\nValues.prototype.valueOf = function() {\n return this.__values__;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.get = function(symbol, options = {}) {\n // we keep original environment as context for bind\n // so print will get user stdout\n typecheck('Environment::get', symbol, ['symbol', 'string']);\n const { throwError = true } = options;\n var name = symbol;\n if (name instanceof LSymbol || name instanceof LString) {\n name = name.valueOf();\n }\n var value = this._lookup(name);\n if (value instanceof Value) {\n if (Value.isUndefined(value)) {\n return undefined;\n }\n return patch_value(value.valueOf());\n }\n var parts;\n if (symbol instanceof LSymbol && symbol[LSymbol.object]) {\n // dot notation symbols from syntax-rules that are gensyms\n parts = symbol[LSymbol.object];\n } else if (typeof name === 'string') {\n parts = name.split('.').filter(Boolean);\n }\n if (parts && parts.length > 0) {\n var [first, ...rest] = parts;\n value = this._lookup(first);\n if (rest.length) {\n try {\n if (value instanceof Value) {\n value = value.valueOf();\n } else {\n value = get(root, first);\n if (is_function(value)) {\n value = unbind(value);\n }\n }\n if (typeof value !== 'undefined') {\n // object accessor\n return get(value, ...rest);\n }\n } catch (e) {\n throw e;\n }\n } else if (value instanceof Value) {\n return patch_value(value.valueOf());\n }\n value = get(root, name);\n }\n if (typeof value !== 'undefined') {\n return value;\n }\n if (throwError) {\n throw new Error(\"Unbound variable `\" + name.toString() + \"'\");\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.set = function(name, value, doc = null) {\n typecheck('Environment::set', name, ['string', 'symbol']);\n if (LNumber.isNumber(value)) {\n value = LNumber(value);\n }\n if (name instanceof LSymbol) {\n name = name.__name__;\n }\n if (name instanceof LString) {\n name = name.valueOf();\n }\n this.__env__[name] = value;\n if (doc) {\n this.doc(name, doc, true);\n }\n return this;\n};\n// -------------------------------------------------------------------------\n// for internal use only\n// -------------------------------------------------------------------------\nEnvironment.prototype.constant = function(name, value) {\n if (this.__env__.hasOwnProperty(name)) {\n throw new Error(`Environment::constant: ${name} already exists`);\n }\n if (arguments.length === 1 && is_plain_object(arguments[0])) {\n var obj = arguments[0];\n Object.keys(obj).forEach(key => {\n this.constant(name, obj[key]);\n });\n } else {\n Object.defineProperty(this.__env__, name, {\n value,\n enumerable: true\n });\n }\n return this;\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.has = function(name) {\n return this.__env__.hasOwnProperty(name);\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.ref = function(name) {\n var env = this;\n while (true) {\n if (!env) {\n break;\n }\n if (env.has(name)) {\n return env;\n }\n env = env.__parent__;\n }\n};\n// -------------------------------------------------------------------------\nEnvironment.prototype.parents = function() {\n var env = this;\n var result = [];\n while (env) {\n result.unshift(env);\n env = env.__parent__;\n }\n return result;\n};\n// -------------------------------------------------------------------------\n// :: Quote function used to pause evaluation from Macro\n// -------------------------------------------------------------------------\nfunction quote(value) {\n if (is_promise(value)) {\n return value.then(quote);\n }\n if (value instanceof Pair || value instanceof LSymbol) {\n value[__data__] = true;\n }\n return value;\n}\n// -------------------------------------------------------------------------\n// :: Unquote is used for multiple backticks and unquote\n// -------------------------------------------------------------------------\nfunction Unquote(value, count, max) {\n this.value = value;\n this.count = count;\n this.max = max;\n}\nUnquote.prototype.toString = function() {\n return '#';\n};\n// -------------------------------------------------------------------------------\nvar native_lambda = parse(tokenize(`(lambda ()\n \"[native code]\"\n (throw \"Invalid Invocation\"))`))[0];\n// -------------------------------------------------------------------------------\nvar get = doc('get', function get(object, ...args) {\n var value;\n var len = args.length;\n while (args.length) {\n // if arg is symbol someone probably want to get __fn__ from binded function\n if (is_function(object) && typeof args[0] !== 'symbol') {\n object = unbind(object);\n }\n var arg = args.shift();\n var name = unbox(arg);\n // the value was set to false to prevent resolving\n // by Real Promises #153\n if (name === 'then' && object instanceof QuotedPromise) {\n value = QuotedPromise.prototype.then;\n } else if (name === '__code__' && is_function(object) &&\n typeof object.__code__ === 'undefined') {\n value = native_lambda;\n } else {\n value = object[name];\n }\n if (typeof value === 'undefined') {\n if (args.length) {\n throw new Error(`Try to get ${args[0]} from undefined`);\n }\n return value;\n } else {\n var context;\n if (args.length - 1 < len) {\n context = object;\n }\n value = patch_value(value, context);\n }\n object = value;\n }\n return value;\n}, `(. obj . args)\n (get obj . args)\n\n Function use object as base and keep using arguments to get the\n property of JavaScript object. Arguments need to be a strings.\n e.g. \\`(. console \"log\")\\` if you use any function inside LIPS is\n will be weakly bind (can be rebind), so you can call this log function\n without problem unlike in JavaScript when you use\n \\`var log = console.log\\`.\n \\`get\\` is an alias because . don't work in every place, e.g. you can't\n pass it as argument.`);\n// -------------------------------------------------------------------------\n// function get internal protected data\n// -------------------------------------------------------------------------\nfunction internal(env, name) {\n var internal_env = interaction(env, '**internal-env**');\n return internal_env.get(name);\n}\n// -------------------------------------------------------------------------\n// get variable from interaction environment\n// -------------------------------------------------------------------------\nfunction interaction(env, name) {\n var interaction_env = env.get('**interaction-environment**');\n return interaction_env.get(name);\n}\n// -------------------------------------------------------------------------\nvar internal_env = new Environment({\n stdout: new BufferedOutputPort(function(...args) {\n console.log(...args);\n }),\n // ------------------------------------------------------------------\n stderr: new BufferedOutputPort(function(...args) {\n console.error(...args);\n }),\n // ------------------------------------------------------------------\n stdin: InputPort(function() {\n return Promise.resolve(prompt(''));\n }),\n // those will be compiled by babel regex plugin\n 'letter-unicode-regex': /\\p{L}/u,\n 'numeral-unicode-regex': /\\p{N}/u,\n 'space-unicode-regex': /\\s/u\n}, undefined, 'internal');\n// -------------------------------------------------------------------------\nvar nan = LNumber(NaN);\nvar constants = {\n 'true': true,\n 'false': false,\n '#true': true,\n '#false': false,\n '#t': true,\n '#f': false,\n nil,\n 'undefined': undefined,\n 'null': null,\n 'NaN': nan,\n '+nan.0': nan,\n '-nan.0': nan\n};\n// -------------------------------------------------------------------------\nvar global_env = new Environment({\n eof,\n undefined, // undefined as parser constant breaks most of the unit tests\n // ---------------------------------------------------------------------\n 'peek-char': doc('peek-char', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('peek-char', port, 'input-port');\n return port.peek_char();\n }, `(peek-char port)\n\n Function get character from string port or EOF object if no more\n data in string port.`),\n // ------------------------------------------------------------------\n 'read-line': doc('read-line', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('read-line', port, 'input-port');\n return port.read_line();\n }, `(read-char port)\n\n Function read next character from input port.`),\n // ------------------------------------------------------------------\n 'read-char': doc('read-char', function(port = null) {\n if (port === null) {\n port = internal(this, 'stdin');\n }\n typecheck_text_port('read-char', port, 'input-port');\n return port.read_char();\n }, `(read-char port)\n\n Function read next character from input port.`),\n // ------------------------------------------------------------------\n read: doc('read', async function read(arg = null) {\n if (LString.isString(arg)) {\n for await (let value of parse(arg, this)) {\n return value;\n }\n }\n var port;\n if (arg === null) {\n port = internal(this, 'stdin');\n } else {\n port = arg;\n }\n typecheck_text_port('read', port, 'input-port');\n return port.read.call(this);\n }, `(read [string])\n\n Function if used with string will parse the string and return\n list structure of LIPS code. If called without an argument it\n will read string from standard input (using browser prompt or\n user defined way) and call itself with that string (parse is)\n function can be used together with eval to evaluate code from\n string`),\n // ------------------------------------------------------------------\n pprint: doc('pprint', function pprint(arg) {\n if (arg instanceof Pair) {\n arg = new lips.Formatter(arg.toString(true)).break().format();\n global_env.get('display').call(global_env, arg);\n } else {\n global_env.get('write').call(global_env, arg);\n }\n global_env.get('newline').call(global_env);\n }, `(pprint expression)\n\n Pretty print list expression, if called with non-pair it just call\n print function with passed argument.`),\n // ------------------------------------------------------------------\n print: doc('print', function print(...args) {\n const display = global_env.get('display');\n const newline = global_env.get('newline');\n args.forEach(arg => {\n display.call(global_env, arg);\n newline.call(global_env);\n });\n }, `(print . args)\n\n Function convert each argument to string and print the result to\n standard output (by default it's console but it can be defined\n it user code), the function call newline after printing each arg.`),\n // ------------------------------------------------------------------\n format: doc('format', function format(str, ...args) {\n typecheck('format', str, 'string');\n const re = /(~[as%~])/g;\n let m = str.match(/(~[as])/g);\n if (m && m.length > args.length) {\n throw new Error('Not enough arguments');\n }\n var i = 0;\n var repr = global_env.get('repr');\n str = str.replace(re, (x) => {\n const chr = x[1];\n if (chr === '~') {\n return '~';\n } else if (chr === '%') {\n return '\\n';\n } else {\n const arg = args[i++];\n if (chr === 'a') {\n return repr(arg);\n } else {\n return repr(arg, true);\n }\n }\n });\n m = str.match(/~([\\S])/);\n if (m) {\n throw new Error(`format: Unrecognized escape sequence ${m[1]}`);\n }\n return str;\n }, `(format string n1 n2 ...)\n\n Function accepts string template and replacing any escape sequences\n by arguments:\n\n * ~a value as if printed with display\n * ~s value as if printed with write\n * ~% newline character\n * ~~ literal tilde '~' is inserted\n\n if there missing arguments or other escape character it throw exception.`),\n // ------------------------------------------------------------------\n display: doc('display', function display(arg, port = null) {\n if (port === null) {\n port = internal(this, 'stdout');\n } else {\n typecheck('display', port, 'output-port');\n }\n const value = global_env.get('repr')(arg);\n port.write.call(global_env, value);\n }, `(display arg [port])\n\n Function send string to standard output or provied port.`),\n // ------------------------------------------------------------------\n 'display-error': doc('display-error', function error(...args) {\n const port = internal(this, 'stderr');\n const repr = global_env.get('repr');\n const value = args.map(repr).join(' ');\n port.write.call(global_env, value);\n global_env.get('newline')(port);\n }, `(display-error . args)\n\n Display error message.`),\n // ------------------------------------------------------------------\n '%same-functions': doc('%same-functions', function(a, b) {\n if (!is_function(a)) {\n return false;\n }\n if (!is_function(b)) {\n return false;\n }\n return unbind(a) === unbind(b);\n }, `(%same-functions a b)\n\n Helper function that check if two bound functions are the same`),\n // ------------------------------------------------------------------\n help: doc(new Macro('help', function(code, { dynamic_scope, error }) {\n var symbol;\n if (code.car instanceof LSymbol) {\n symbol = code.car;\n } else if (code.car instanceof Pair && code.car.car instanceof LSymbol) {\n symbol = code.car.car;\n } else {\n var env = this;\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var ret = evaluate(code.car, { env, error, dynamic_scope });\n if (ret && ret.__doc__) {\n return ret.__doc__;\n }\n return;\n }\n var __doc__;\n var value = this.get(symbol);\n __doc__ = value && value.__doc__;\n if (__doc__) {\n return __doc__;\n }\n var ref = this.ref(symbol);\n if (ref) {\n __doc__ = ref.doc(symbol);\n if (__doc__) {\n return __doc__;\n }\n }\n }), `(help object)\n\n Macro returns documentation for function or macro. You can save the function\n or macro in variable and use it in context. But help for variable require\n to pass the symbol itself.`),\n // ------------------------------------------------------------------\n cons: doc('cons', function cons(car, cdr) {\n return new Pair(car, cdr);\n }, `(cons left right)\n\n Function return new Pair out of two arguments.`),\n // ------------------------------------------------------------------\n car: doc('car', function car(list) {\n typecheck('car', list, 'pair');\n return list.car;\n }, `(car pair)\n\n Function returns car (head) of the list/pair.`),\n // ------------------------------------------------------------------\n cdr: doc('cdr', function cdr(list) {\n typecheck('cdr', list, 'pair');\n return list.cdr;\n }, `(cdr pair)\n\n Function returns cdr (tail) of the list/pair.`),\n // ------------------------------------------------------------------\n 'set!': doc(new Macro('set!', function(code, { dynamic_scope, error } = {}) {\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var env = this;\n var ref;\n var value = evaluate(code.cdr.car, { env: this, dynamic_scope, error });\n value = resolve_promises(value);\n function set(object, key, value) {\n if (is_promise(object)) {\n return object.then(key => set(object, key, value));\n }\n if (is_promise(key)) {\n return key.then(key => set(object, key, value));\n }\n if (is_promise(value)) {\n return value.then(value => set(object, key, value));\n }\n env.get('set-obj!').call(env, object, key, value);\n return value;\n }\n if (code.car instanceof Pair && LSymbol.is(code.car.car, '.')) {\n var second = code.car.cdr.car;\n var third = code.car.cdr.cdr.car;\n var object = evaluate(second, { env: this, dynamic_scope, error });\n var key = evaluate(third, { env: this, dynamic_scope, error });\n return set(object, key, value);\n }\n if (!(code.car instanceof LSymbol)) {\n throw new Error('set! first argument need to be a symbol or ' +\n 'dot accessor that evaluate to object.');\n }\n var symbol = code.car.valueOf();\n ref = this.ref(code.car.__name__);\n // we don't return value because we only care about sync of set value\n // when value is a promise\n return unpromise(value, value => {\n if (!ref) {\n // case (set! fn.toString (lambda () \"xxx\"))\n var parts = symbol.split('.');\n if (parts.length > 1) {\n var key = parts.pop();\n var name = parts.join('.');\n var obj = this.get(name, { throwError: false });\n if (obj) {\n set(obj, key, value);\n return;\n }\n }\n throw new Error('Unbound variable `' + symbol + '\\'');\n }\n ref.set(symbol, value);\n });\n }), `(set! name value)\n\n Macro that can be used to set the value of the variable (mutate)\n it search the scope chain until it finds first non empty slot and set it.`),\n // ------------------------------------------------------------------\n 'unset!': doc(new Macro('set!', function(code) {\n if (!(code.car instanceof LSymbol)) {\n throw new Error('unset! first argument need to be a symbol or ' +\n 'dot accessor that evaluate to object.');\n }\n const symbol = code.car;\n var ref = this.ref(symbol);\n if (ref) {\n delete ref.__env__[symbol.__name__];\n }\n }), `(unset! name)\n\n Function delete specified name from environment.`),\n // ------------------------------------------------------------------\n 'set-car!': doc('set-car!', function(slot, value) {\n typecheck('set-car!', slot, 'pair');\n slot.car = value;\n }, `(set-car! obj value)\n\n Function that set car (head) of the list/pair to specified value.\n It can destroy the list. Old value is lost.`),\n // ------------------------------------------------------------------\n 'set-cdr!': doc('set-cdr!', function(slot, value) {\n typecheck('set-cdr!', slot, 'pair');\n slot.cdr = value;\n }, `(set-cdr! obj value)\n\n Function that set cdr (tail) of the list/pair to specified value.\n It can destroy the list. Old value is lost.`),\n // ------------------------------------------------------------------\n 'empty?': doc('empty?', function(x) {\n return typeof x === 'undefined' || x === nil;\n }, `(empty? object)\n\n Function return true if value is undefined empty list.`),\n // ------------------------------------------------------------------\n gensym: doc(\n 'gensym',\n gensym,\n `(gensym)\n\n Function generate unique symbol, to use with macros as meta name.`),\n // ------------------------------------------------------------------\n // TODO: (load filename environment-specifier)\n // ------------------------------------------------------------------\n load: doc('load', function load(file, env) {\n typecheck('load', file, 'string');\n var g_env = this;\n if (g_env.__name__ === '__frame__') {\n g_env = g_env.__parent__;\n }\n if (!(env instanceof Environment)) {\n if (g_env === global_env) {\n // this is used for let-env + load\n // this may be obsolete when there is env arg\n env = g_env;\n } else {\n env = this.get('**interaction-environment**');\n }\n }\n const PATH = '**module-path**';\n var module_path = global_env.get(PATH, { throwError: false });\n file = file.valueOf();\n if (!file.match(/.[^.]+$/)) {\n file += '.scm';\n }\n const IS_BIN = file.match(/\\.xcb$/);\n function run(code) {\n if (IS_BIN) {\n code = unserialize_bin(code);\n } else {\n if (type(code) === 'buffer') {\n code = code.toString();\n }\n code = code.replace(/^#!.*/, '');\n if (code.match(/^\\{/)) {\n code = unserialize(code);\n }\n }\n return exec(code, env);\n }\n function fetch(file) {\n return root.fetch(file)\n .then(res => IS_BIN ? res.arrayBuffer() : res.text())\n .then((code) => {\n if (IS_BIN) {\n code = new Uint8Array(code);\n }\n return code;\n });\n }\n if (is_node()) {\n return new Promise((resolve, reject) => {\n var path = nodeRequire('path');\n if (module_path) {\n module_path = module_path.valueOf();\n file = path.join(module_path, file);\n }\n global_env.set(PATH, path.dirname(file));\n nodeRequire('fs').readFile(file, function(err, data) {\n if (err) {\n reject(err);\n global_env.set(PATH, module_path);\n } else {\n try {\n run(data).then(() => {\n resolve();\n global_env.set(PATH, module_path);\n }).catch(reject);\n } catch (e) {\n reject(e);\n }\n }\n });\n });\n }\n if (module_path) {\n module_path = module_path.valueOf();\n file = module_path + '/' + file.replace(/^\\.?\\/?/, '');\n }\n return fetch(file).then(code => {\n global_env.set(PATH, file.replace(/\\/[^/]*$/, ''));\n return run(code);\n }).then(() => {}).finally(() => {\n global_env.set(PATH, module_path);\n });\n }, `(load filename)\n (load filename environment)\n\n Function fetch the file and evaluate its content as LIPS code,\n If second argument is provided and it's environment the evaluation\n will happen in that environment.`),\n // ------------------------------------------------------------------\n 'do': doc(new Macro('do', async function(code, { dynamic_scope, error }) {\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n var scope = self.inherit('do');\n var vars = code.car;\n var test = code.cdr.car;\n var body = code.cdr.cdr;\n if (body !== nil) {\n body = new Pair(LSymbol('begin'), body);\n }\n let eval_args = { env: self, dynamic_scope, error };\n let node = vars;\n while (node !== nil) {\n const item = node.car;\n scope.set(item.car, await evaluate(item.cdr.car, eval_args));\n node = node.cdr;\n }\n eval_args = { env: scope, dynamic_scope, error };\n while ((await evaluate(test.car, eval_args)) === false) {\n if (body !== nil) {\n await lips.evaluate(body, eval_args);\n }\n let node = vars;\n const next = {};\n while (node !== nil) {\n const item = node.car;\n if (item.cdr.cdr !== nil) {\n const value = await evaluate(item.cdr.cdr.car, eval_args);\n next[item.car.valueOf()] = value;\n }\n node = node.cdr;\n }\n const symbols = Object.getOwnPropertySymbols(next);\n Object.keys(next).concat(symbols).forEach(key => {\n scope.set(key, next[key]);\n });\n }\n if (test.cdr !== nil) {\n return await evaluate(test.cdr.car, eval_args);\n }\n }), `(do (( )) (test expression) . body)\n\n Iteration macro that evaluate the expression body in scope of the variables.\n On Eeach loop it increase the variables according to next expression and run\n test to check if the loop should continue. If test is signle call the macro\n will not return anything. If the test is pair of expression and value the\n macro will return that value after finish.`),\n // ------------------------------------------------------------------\n 'if': doc(new Macro('if', function(code, { dynamic_scope, error }) {\n if (dynamic_scope) {\n dynamic_scope = this;\n }\n var env = this;\n var resolve = (cond) => {\n if (cond === false) {\n return evaluate(code.cdr.cdr.car, {\n env,\n dynamic_scope,\n error\n });\n } else {\n return evaluate(code.cdr.car, {\n env,\n dynamic_scope,\n error\n });\n }\n };\n if (code === nil) {\n throw new Error('too few expressions for `if`');\n }\n var cond = evaluate(code.car, { env, dynamic_scope, error });\n return unpromise(cond, resolve);\n }), `(if cond true-expr false-expr)\n\n Macro evaluate condition expression and if the value is true, it\n evaluate and return true expression if not it evaluate and return\n false expression`),\n // ------------------------------------------------------------------\n 'let-env': new Macro('let-env', function(code, options = {}) {\n const { dynamic_scope, error } = options;\n typecheck('let-env', code, 'pair');\n var ret = evaluate(code.car, { env: this, dynamic_scope, error });\n return unpromise(ret, function(value) {\n typecheck('let-env', value, 'environment');\n return evaluate(Pair(LSymbol('begin'), code.cdr), {\n env: value, dynamic_scope, error\n });\n });\n }, `(let-env env . body)\n\n Special macro that evaluate body in context of given environment\n object.`),\n // ------------------------------------------------------------------\n 'letrec': doc(\n let_macro(Symbol.for('letrec')),\n `(letrec ((a value-a) (b value-b)) body)\n\n Macro that creates new environment, then evaluate and assign values to\n names and then evaluate the body in context of that environment.\n Values are evaluated sequentially and next value can access to\n previous values/names.`),\n // ---------------------------------------------------------------------\n 'letrec*': doc(\n let_macro(Symbol.for('letrec')),\n `(letrec* ((a value-a) (b value-b)) body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so use can use recursive code as well as reference previous binding.\n In LIPS both letrec and letrec* behave the same.`),\n // ---------------------------------------------------------------------\n 'let*': doc(\n let_macro(Symbol.for('let*')),\n `(let* ((a value-a) (b value-b)) body)\n\n Macro similar to \\`let\\` but next argument get environment\n from previous let variable, so they you can define one variable,\n and use in next argument.`),\n // ---------------------------------------------------------------------\n 'let': doc(\n let_macro(Symbol.for('let')),\n `(let ((a value-a) (b value-b)) body)\n\n Macro that creates new environment, then evaluate and assign values to\n names and then evaluate the body in context of that environment.\n Values are evaluated sequentially but you can't access\n previous values/names when next are evaluated. You can only get them\n from body of let expression.`),\n // ------------------------------------------------------------------\n 'begin*': doc(pararel('begin*', function(values) {\n return values.pop();\n }), `(begin* . expr)\n\n This macro is parallel version of begin. It evaluate each expression and\n if it's a promise it will evaluate it in parallel and return value\n of last expression.`),\n // ------------------------------------------------------------------\n 'begin': doc(new Macro('begin', function(code, options) {\n var args = Object.assign({ }, options);\n var arr = global_env.get('list->array')(code);\n if (args.dynamic_scope) {\n args.dynamic_scope = this;\n }\n args.env = this;\n var result;\n return (function loop() {\n if (arr.length) {\n var code = arr.shift();\n var ret = evaluate(code, args);\n return unpromise(ret, value => {\n result = value;\n return loop();\n });\n } else {\n return result;\n }\n })();\n }), `(begin . args)\n\n Macro runs list of expression and return valuate of the list one.\n It can be used in place where you can only have single expression,\n like if expression.`),\n // ------------------------------------------------------------------\n 'ignore': new Macro('ignore', function(code, { dynamic_scope, error }) {\n var args = { env: this, error };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n evaluate(new Pair(new LSymbol('begin'), code), args);\n }, `(ignore expression)\n\n Macro that will evaluate expression and swallow any promises that may\n be created. It wil run and ignore any value that may be returned by\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined.`),\n // ------------------------------------------------------------------\n 'call/cc': doc(Macro.defmacro('call/cc', function(code, eval_args = {}) {\n const args = {\n env: this,\n ...eval_args\n };\n return unpromise(evaluate(code.car, args), (result) => {\n if (is_function(result)) {\n return result(new Continuation(null));\n }\n });\n }), `(call/cc proc)\n\n TODO`),\n // ------------------------------------------------------------------\n define: doc(Macro.defmacro('define', function(code, eval_args) {\n var env = this;\n if (code.car instanceof Pair &&\n code.car.car instanceof LSymbol) {\n var new_code = new Pair(\n new LSymbol(\"define\"),\n new Pair(\n code.car.car,\n new Pair(\n new Pair(\n new LSymbol(\"lambda\"),\n new Pair(\n code.car.cdr,\n code.cdr\n )\n )\n )\n )\n );\n return new_code;\n } else if (eval_args.macro_expand) {\n // prevent evaluation in macroexpand\n return;\n }\n if (eval_args.dynamic_scope) {\n eval_args.dynamic_scope = this;\n }\n eval_args.env = env;\n var value = code.cdr.car;\n let new_expr;\n if (value instanceof Pair) {\n value = evaluate(value, eval_args);\n new_expr = true;\n } else if (value instanceof LSymbol) {\n value = env.get(value);\n }\n typecheck('define', code.car, 'symbol');\n return unpromise(value, value => {\n if (env.__name__ === Syntax.__merge_env__) {\n env = env.__parent__;\n }\n if (new_expr &&\n ((is_function(value) && is_lambda(value)) ||\n (value instanceof Syntax))) {\n value.__name__ = code.car.valueOf();\n if (value.__name__ instanceof LString) {\n value.__name__ = value.__name__.valueOf();\n }\n }\n let __doc__;\n if (code.cdr.cdr instanceof Pair &&\n LString.isString(code.cdr.cdr.car)) {\n __doc__ = code.cdr.cdr.car.valueOf();\n }\n env.set(code.car, value, __doc__, true);\n });\n }), `(define name expression)\n (define name expression \"doc string\")\n (define (function-name . args) body)\n\n Macro for defining values. It can be used to define variables,\n or function. If first argument is list it will create function\n with name beeing first element of the list. The macro evaluate\n code \\`(define function (lambda args body))\\``),\n // ------------------------------------------------------------------\n 'set-obj!': doc('set-obj!', function(obj, key, value) {\n var obj_type = typeof obj;\n if (is_null(obj) || (obj_type !== 'object' && obj_type !== 'function')) {\n var msg = typeErrorMessage('set-obj!', type(obj), ['object', 'function']);\n throw new Error(msg);\n }\n typecheck('set-obj!', key, ['string', 'symbol', 'number']);\n obj = unbind(obj);\n key = key.valueOf();\n if (arguments.length === 2) {\n delete obj[key];\n } else if (is_prototype(obj) && is_function(value)) {\n obj[key] = unbind(value);\n obj[key][__prototype__] = true;\n } else if (is_function(value) || is_native(value) || value === nil) {\n obj[key] = value;\n } else {\n obj[key] = value && !is_prototype(value) ? value.valueOf() : value;\n }\n }, `(set-obj! obj key value)\n\n Function set property of JavaScript object`),\n // ------------------------------------------------------------------\n 'null-environment': doc('null-environment', function() {\n return global_env.inherit('null');\n }, `(null-environment)\n\n Function return new base environment with std lib.`),\n // ------------------------------------------------------------------\n 'values': doc('values', function values(...args) {\n return Values(args);\n }, `(values a1 a2 ...)\n\n If called with more then one element it will create special\n Values object that can be used in call-with-values function`),\n // ------------------------------------------------------------------\n 'call-with-values': doc('call-with-values', function(producer, consumer) {\n typecheck('call-with-values', producer, 'function', 1);\n typecheck('call-with-values', consumer, 'function', 2);\n var maybe = producer();\n if (maybe instanceof Values) {\n return consumer(...maybe.valueOf());\n }\n return consumer(maybe);\n }, `(call-with-values producer consumer)\n\n Calls its producer argument with no values and a continuation that,\n when passed some values, calls the consumer procedure with those\n values as arguments.`),\n // ------------------------------------------------------------------\n 'current-environment': doc('current-environment', function() {\n if (this.__name__ === '__frame__') {\n return this.__parent__;\n }\n return this;\n }, `(current-environment)\n\n Function return current environment.`),\n // ------------------------------------------------------------------\n 'parent.frame': doc('parent.frame', function() {\n return user_env;\n }, `(parent.frame)\n\n Return parent environment if called from inside function.\n If no parent frame found it return nil.`),\n // ------------------------------------------------------------------\n 'eval': doc('eval', function(code, env) {\n env = env || this.get('current-environment').call(this);\n return evaluate(code, {\n env,\n //dynamic_scope: this,\n error: e => {\n var error = global_env.get('display-error');\n error.call(this, e.message);\n if (e.code) {\n var stack = e.code.map((line, i) => {\n return `[${i + 1}]: ${line}`;\n }).join('\\n');\n error.call(this, stack);\n }\n }\n });\n }, `(eval expr)\n (eval expr environment)\n\n Function evaluate LIPS Scheme code.`),\n // ------------------------------------------------------------------\n lambda: new Macro('lambda', function(code, { dynamic_scope, error } = {}) {\n var self = this;\n var __doc__;\n if (code.cdr instanceof Pair &&\n LString.isString(code.cdr.car) &&\n code.cdr.cdr !== nil) {\n __doc__ = code.cdr.car.valueOf();\n }\n function lambda(...args) {\n var env;\n // this is function calling env\n // self is lexical scope when function was defined\n if (dynamic_scope) {\n if (!(this instanceof Environment)) {\n env = self;\n } else {\n env = this;\n }\n } else {\n env = self;\n }\n env = env.inherit('lambda');\n var name = code.car;\n var i = 0;\n var value;\n if (typeof this !== 'undefined' && !(this instanceof Environment)) {\n if (this && !this.__instance__) {\n Object.defineProperty(this, '__instance__', {\n enumerable: false,\n get: () => true,\n set: () => {},\n configurable: false\n });\n }\n env.set('this', this);\n }\n // arguments and arguments.callee inside lambda function\n if (this instanceof Environment) {\n var options = { throwError: false };\n env.set('arguments', this.get('arguments', options));\n env.set('parent.frame', this.get('parent.frame', options));\n } else {\n // this case is for lambda as callback function in JS; e.g. setTimeout\n var _args = args.slice();\n _args.callee = lambda;\n _args.env = env;\n env.set('arguments', _args);\n }\n if (name instanceof LSymbol || name !== nil) {\n while (true) {\n if (name.car !== nil) {\n if (name instanceof LSymbol) {\n // rest argument, can also be first argument\n value = quote(Pair.fromArray(args.slice(i), false));\n env.__env__[name.__name__] = value;\n break;\n } else {\n value = args[i];\n env.__env__[name.car.__name__] = value;\n }\n }\n if (name.cdr === nil) {\n break;\n }\n i++;\n name = name.cdr;\n }\n }\n if (dynamic_scope) {\n dynamic_scope = env;\n }\n var rest = __doc__ ? code.cdr.cdr : code.cdr;\n var output = new Pair(new LSymbol('begin'), rest);\n return evaluate(output, { env, dynamic_scope, error });\n }\n var length = code.car instanceof Pair ? code.car.length() : null;\n lambda.__code__ = new Pair(new LSymbol('lambda'), code);\n lambda[__lambda__] = true;\n if (!(code.car instanceof Pair)) {\n return doc(lambda, __doc__, true); // variable arguments\n }\n // wrap and decorate with __doc__\n return doc(set_fn_length(lambda, length), __doc__, true);\n }, `(lambda (a b) body)\n (lambda args body)\n (lambda (a b . rest) body)\n\n Macro lambda create new anonymous function, if first element of the body\n is string and there is more elements it will be documentation, that can\n be read using (help fn)`),\n 'macroexpand': new Macro('macroexpand', macro_expand()),\n 'macroexpand-1': new Macro('macroexpand-1', macro_expand(true)),\n // ------------------------------------------------------------------\n 'define-macro': doc(new Macro(macro, function(macro, { dynamic_scope, error }) {\n if (macro.car instanceof Pair && macro.car.car instanceof LSymbol) {\n var name = macro.car.car.__name__;\n var __doc__;\n if (LString.isString(macro.cdr.car) && macro.cdr.cdr instanceof Pair) {\n __doc__ = macro.cdr.car.valueOf();\n }\n var makro_instance = Macro.defmacro(name, function(code) {\n var env = new Environment({}, this, 'defmacro');\n var name = macro.car.cdr;\n var arg = code;\n while (true) {\n if (name === nil) {\n break;\n }\n if (name instanceof LSymbol) {\n env.__env__[name.__name__] = arg;\n break;\n } else if (name.car !== nil) {\n if (arg === nil) {\n env.__env__[name.car.__name__] = nil;\n } else {\n if (arg.car instanceof Pair) {\n arg.car[__data__] = true;\n }\n env.__env__[name.car.__name__] = arg.car;\n }\n }\n if (name.cdr === nil) {\n break;\n }\n if (arg !== nil) {\n arg = arg.cdr;\n }\n name = name.cdr;\n }\n if (dynamic_scope) {\n dynamic_scope = env;\n }\n var eval_args = {\n env,\n dynamic_scope,\n error\n };\n // evaluate macro\n if (macro.cdr instanceof Pair) {\n // this eval will return lips code\n var rest = __doc__ ? macro.cdr.cdr : macro.cdr;\n var result = rest.reduce(function(result, node) {\n return evaluate(node, eval_args);\n });\n return unpromise(result, function(result) {\n if (typeof result === 'object') {\n delete result[__data__];\n }\n return result;\n });\n }\n }, __doc__, true);\n makro_instance.__code__ = new Pair(new LSymbol('define-macro'), macro);\n this.set(name, makro_instance);\n }\n }), `(define-macro (name . args) body)\n\n Meta macro, macro that create new macros, if return value is list structure\n it will be evaluated when macro is invoked. You can use quasiquote \\` and\n unquote , and unquote-splicing ,@ inside to create expression that will be\n evaluated on runtime. Macros works like this: if you pass any expression to\n macro the arguments will not be evaluated unless macro itself evaluate it.\n Because of this macro can manipulate expression (arguments) as lists.`),\n // ------------------------------------------------------------------\n 'syntax-rules': new Macro('syntax-rules', function(macro, options) {\n var { dynamic_scope, error } = options;\n var env = this;\n function get_identifiers(node) {\n let symbols = [];\n while (node !== nil) {\n const x = node.car;\n symbols.push(x.valueOf());\n node = node.cdr;\n }\n return symbols;\n }\n function validate_identifiers(node) {\n while (node !== nil) {\n const x = node.car;\n if (!(x instanceof LSymbol)) {\n throw new Error('syntax-rules: wrong identifier');\n }\n node = node.cdr;\n }\n }\n if (macro.car instanceof LSymbol) {\n validate_identifiers(macro.cdr.car);\n } else {\n validate_identifiers(macro.car);\n }\n const syntax = new Syntax(function(code, { macro_expand }) {\n var scope = env.inherit('syntax');\n if (dynamic_scope) {\n dynamic_scope = scope;\n }\n var var_scope = this;\n // for macros that define variables used in macro (2 levels nestting)\n if (var_scope.__name__ === Syntax.__merge_env__) {\n // copy refs for defined gynsyms\n const props = Object.getOwnPropertySymbols(var_scope.__env__);\n props.forEach(symbol => {\n var_scope.__parent__.set(symbol, var_scope.__env__[symbol]);\n });\n var_scope = var_scope.__parent__;\n }\n var eval_args = { env: scope, dynamic_scope, error };\n let ellipsis, rules, symbols;\n if (macro.car instanceof LSymbol) {\n ellipsis = macro.car;\n symbols = get_identifiers(macro.cdr.car);\n rules = macro.cdr.cdr;\n } else {\n ellipsis = '...';\n symbols = get_identifiers(macro.car);\n rules = macro.cdr;\n }\n try {\n while (rules !== nil) {\n var rule = rules.car.car;\n var expr = rules.car.cdr.car;\n log(rule);\n var bindings = extract_patterns(rule, code, symbols, ellipsis, {\n expansion: this, define: env\n });\n if (bindings) {\n /* istanbul ignore next */\n if (is_debug()) {\n console.log(JSON.stringify(symbolize(bindings), true, 2));\n console.log('PATTERN: ' + rule.toString(true));\n console.log('MACRO: ' + code.toString(true));\n }\n // name is modified in transform_syntax\n var names = [];\n const new_expr = transform_syntax({\n bindings,\n expr,\n symbols,\n scope,\n lex_scope: var_scope,\n names,\n ellipsis\n });\n log('OUPUT>>> ' + new_expr.toString());\n if (new_expr) {\n expr = new_expr;\n }\n var new_env = var_scope.merge(scope, Syntax.__merge_env__);\n if (macro_expand) {\n return { expr, scope: new_env };\n }\n var result = evaluate(expr, { ...eval_args, env: new_env });\n // Hack: update the result if there are generated\n // gensyms that should be literal symbols\n // TODO: maybe not the part move when literal elisps may\n // be generated, maybe they will need to be mark somehow\n return clear_gensyms(result, names);\n }\n rules = rules.cdr;\n }\n } catch (e) {\n e.message += ` in macro: ${macro.toString(true)}`;\n throw e;\n }\n throw new Error(`Invalid Syntax ${code.toString(true)}`);\n }, env);\n syntax.__code__ = macro;\n return syntax;\n }, `(syntax-rules () (pattern expression) ...)\n\n Base of Hygienic macro, it will return new syntax expander\n that works like lisp macros.`),\n // ------------------------------------------------------------------\n quote: doc(new Macro('quote', function(arg) {\n return quote(arg.car);\n }), `(quote expression)\n\n Macro that return single lips expression as data (it don't evaluate its\n argument). It will return list of pairs if put in front of lips code.\n And if put in fron of symbol it will return that symbol not value\n associated with that name.`),\n 'unquote-splicing': doc('unquote-splicing', function() {\n throw new Error(`You can't call \\`unquote-splicing\\` outside of quasiquote`);\n }, `(unquote-splicing code)\n\n Special form to be used in quasiquote macro, parser is processing special\n characters ,@ and create call to this pseudo function. It can be used\n to evaluate expression inside and return the value without parenthesis.\n the value will be joined to the output list structure.`),\n 'unquote': doc('unquote', function() {\n throw new Error(`You can't call \\`unquote\\` outside of quasiquote`);\n }, `(unquote code)\n\n Special form to be used in quasiquote macro, parser is processing special\n characters , and create call to this pseudo function. It can be used\n to evaluate expression inside and return the value, the output is inserted\n into list structure created by queasiquote.`),\n // ------------------------------------------------------------------\n quasiquote: Macro.defmacro('quasiquote', function(arg, env) {\n var { dynamic_scope, error } = env;\n var self = this;\n //var max_unquote = 1;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n // -----------------------------------------------------------------\n function is_struct(value) {\n return value instanceof Pair ||\n is_plain_object(value) ||\n Array.isArray(value);\n }\n // -----------------------------------------------------------------\n function resolve_pair(pair, fn, test = is_struct) {\n if (pair instanceof Pair) {\n var car = pair.car;\n var cdr = pair.cdr;\n if (test(car)) {\n car = fn(car);\n }\n if (test(cdr)) {\n cdr = fn(cdr);\n }\n if (is_promise(car) || is_promise(cdr)) {\n return promise_all([car, cdr]).then(([car, cdr]) => {\n return new Pair(car, cdr);\n });\n } else {\n return new Pair(car, cdr);\n }\n }\n return pair;\n }\n // -----------------------------------------------------------------\n function join(eval_pair, value) {\n if (eval_pair === nil && value === nil) {\n //return nil;\n }\n if (eval_pair instanceof Pair) {\n if (value !== nil) {\n eval_pair.append(value);\n }\n } else {\n eval_pair = new Pair(\n eval_pair,\n value\n );\n }\n return eval_pair;\n }\n // -----------------------------------------------------------------\n function unquoted_arr(arr) {\n return !!arr.filter(value => {\n return value instanceof Pair &&\n LSymbol.is(value.car, /^(unquote|unquote-splicing)$/);\n }).length;\n }\n // -----------------------------------------------------------------\n function quote_vector(arr, unquote_cnt, max_unq) {\n return arr.reduce((acc, x) => {\n if (!(x instanceof Pair)) {\n acc.push(x);\n return acc;\n }\n if (LSymbol.is(x.car, 'unquote-splicing')) {\n let result;\n if (unquote_cnt + 1 < max_unq) {\n result = recur(x.cdr, unquote_cnt + 1, max_unq);\n } else {\n result = evaluate(x.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n if (!(result instanceof Pair)) {\n throw new Error(`Expecting list ${type(x)} found`);\n }\n return acc.concat(result.to_array());\n }\n acc.push(recur(x, unquote_cnt, max_unq));\n return acc;\n }, []);\n }\n // -----------------------------------------------------------------\n function quote_object(object, unquote_cnt, max_unq) {\n const result = {};\n unquote_cnt++;\n Object.keys(object).forEach(key => {\n const value = object[key];\n if (value instanceof Pair) {\n if (LSymbol.is(value.car, 'unquote-splicing')) {\n throw new Error(\"You can't call `unquote-splicing` \" +\n \"inside object\");\n }\n let output;\n if (unquote_cnt < max_unq) {\n output = recur(value.cdr.car, unquote_cnt, max_unq);\n } else {\n output = evaluate(value.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n result[key] = output;\n } else {\n result[key] = value;\n }\n });\n if (Object.isFrozen(object)) {\n Object.freeze(result);\n }\n return result;\n }\n // -----------------------------------------------------------------\n function unquote_splice(pair, unquote_cnt, max_unq) {\n if (unquote_cnt < max_unq) {\n return new Pair(\n new Pair(\n pair.car.car,\n recur(pair.car.cdr, unquote_cnt, max_unq)\n ),\n nil\n );\n }\n var lists = [];\n return (function next(node) {\n var value = evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n });\n lists.push(value);\n if (node.cdr instanceof Pair) {\n return next(node.cdr);\n }\n return unpromise(lists, function(arr) {\n if (arr.some(x => !(x instanceof Pair))) {\n if (pair.cdr instanceof Pair &&\n LSymbol.is(pair.cdr.car, '.') &&\n pair.cdr.cdr instanceof Pair &&\n pair.cdr.cdr.cdr === nil) {\n return pair.cdr.cdr.car;\n }\n if (!(pair.cdr === nil || pair.cdr instanceof Pair)) {\n const msg = \"You can't splice atom inside list\";\n throw new Error(msg);\n }\n if (arr.length > 1) {\n const msg = \"You can't splice multiple atoms inside list\";\n throw new Error(msg);\n }\n if (!(pair.cdr instanceof Pair && arr[0] === nil)) {\n return arr[0];\n }\n }\n // don't create Cycles\n arr = arr.map(eval_pair => {\n if (splices.has(eval_pair)) {\n return eval_pair.clone();\n } else {\n splices.add(eval_pair);\n return eval_pair;\n }\n });\n const value = recur(pair.cdr, 0, 1);\n if (value === nil && arr[0] === nil) {\n return undefined;\n }\n return unpromise(value, value => {\n if (arr[0] === nil) {\n return value;\n }\n if (arr.length === 1) {\n return join(arr[0], value);\n }\n var result = arr.reduce((result, eval_pair) => {\n return join(result, eval_pair);\n });\n return join(result, value);\n });\n });\n })(pair.car.cdr);\n }\n // -----------------------------------------------------------------\n var splices = new Set();\n function recur(pair, unquote_cnt, max_unq) {\n if (pair instanceof Pair) {\n if (pair.car instanceof Pair) {\n if (LSymbol.is(pair.car.car, 'unquote-splicing')) {\n return unquote_splice(pair, unquote_cnt + 1, max_unq);\n }\n if (LSymbol.is(pair.car.car, 'unquote')) {\n // + 2 - one for unquote and one for unquote splicing\n if (unquote_cnt + 2 === max_unq &&\n pair.car.cdr instanceof Pair &&\n pair.car.cdr.car instanceof Pair &&\n LSymbol.is(pair.car.cdr.car.car, 'unquote-splicing')) {\n const rest = pair.car.cdr;\n return new Pair(\n new Pair(\n new LSymbol('unquote'),\n unquote_splice(rest, unquote_cnt + 2, max_unq)\n ),\n nil\n );\n } else if (pair.car.cdr instanceof Pair &&\n pair.car.cdr.cdr !== nil) {\n if (pair.car.cdr.car instanceof Pair) {\n // values inside unquote are lists\n const result = [];\n return (function recur(node) {\n if (node === nil) {\n return Pair.fromArray(result);\n }\n return unpromise(evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n }), function(next) {\n result.push(next);\n return recur(node.cdr);\n });\n })(pair.car.cdr);\n } else {\n // same as in guile if (unquote 1 2 3) it should be\n // spliced - scheme spec say it's unspecify but it\n // work like in CL\n return pair.car.cdr;\n }\n }\n }\n }\n if (LSymbol.is(pair.car, 'quasiquote')) {\n var cdr = recur(pair.cdr, unquote_cnt, max_unq + 1);\n return new Pair(pair.car, cdr);\n }\n if (LSymbol.is(pair.car, 'quote')) {\n return new Pair(\n pair.car,\n recur(pair.cdr, unquote_cnt, max_unq)\n );\n }\n if (LSymbol.is(pair.car, 'unquote')) {\n unquote_cnt++;\n if (unquote_cnt < max_unq) {\n return new Pair(\n new LSymbol('unquote'),\n recur(pair.cdr, unquote_cnt, max_unq)\n );\n }\n if (unquote_cnt > max_unq) {\n throw new Error(\"You can't call `unquote` outside \" +\n \"of quasiquote\");\n }\n if (pair.cdr instanceof Pair) {\n if (pair.cdr.cdr !== nil) {\n if (pair.cdr.car instanceof Pair) {\n // TODO: test if this part is needed\n // this part was duplicated in previous section\n // if (LSymbol.is(pair.car.car, 'unquote')) {\n // so this probably can be removed\n const result = [];\n // evaluate all values in unquote\n return (function recur(node) {\n if (node === nil) {\n return Pair.fromArray(result);\n }\n return unpromise(evaluate(node.car, {\n env: self,\n dynamic_scope,\n error\n }), function(next) {\n result.push(next);\n return recur(node.cdr);\n });\n })(pair.cdr);\n } else {\n return pair.cdr;\n }\n } else {\n return evaluate(pair.cdr.car, {\n env: self,\n dynamic_scope,\n error\n });\n }\n } else {\n return pair.cdr;\n }\n }\n return resolve_pair(pair, (pair) => {\n return recur(pair, unquote_cnt, max_unq);\n });\n } else if (is_plain_object(pair)) {\n return quote_object(pair, unquote_cnt, max_unq);\n } else if (pair instanceof Array) {\n return quote_vector(pair, unquote_cnt, max_unq);\n }\n return pair;\n }\n // -----------------------------------------------------------------\n function clear(node) {\n if (node instanceof Pair) {\n delete node[__data__];\n if (!node.haveCycles('car')) {\n clear(node.car);\n }\n if (!node.haveCycles('cdr')) {\n clear(node.cdr);\n }\n }\n }\n // -----------------------------------------------------------------\n if (is_plain_object(arg.car) && !unquoted_arr(Object.values(arg.car))) {\n return quote(arg.car);\n }\n if (Array.isArray(arg.car) && !unquoted_arr(arg.car)) {\n return quote(arg.car);\n }\n if (arg.car instanceof Pair &&\n !arg.car.find('unquote') &&\n !arg.car.find('unquote-splicing') &&\n !arg.car.find('quasiquote')) {\n return quote(arg.car);\n }\n var x = recur(arg.car, 0, 1);\n return unpromise(x, value => {\n // clear nested data for tests\n clear(value);\n return quote(value);\n });\n }, `(quasiquote list ,value ,@value)\n\n Similar macro to \\`quote\\` but inside it you can use special\n expressions unquote abbreviated to , that will evaluate expression inside\n and return its value or unquote-splicing abbreviated to ,@ that will\n evaluate expression but return value without parenthesis (it will join)\n the list with its value. Best used with macros but it can be used outside`),\n // ------------------------------------------------------------------\n clone: doc('clone', function clone(list) {\n typecheck('clone', list, 'pair');\n return list.clone();\n }, `(clone list)\n\n Function return clone of the list.`),\n // ------------------------------------------------------------------\n append: doc('append', function append(...items) {\n items = items.map(item => {\n if (item instanceof Pair) {\n return item.clone();\n }\n return item;\n });\n return global_env.get('append!').call(this, ...items);\n }, `(append item ...)\n\n Function will create new list with eac argument appended to the end.\n It will always return new list and not modify it's arguments.`),\n // ------------------------------------------------------------------\n 'append!': doc('append!', function(...items) {\n var is_list = global_env.get('list?');\n return items.reduce((acc, item) => {\n typecheck('append!', acc, ['nil', 'pair']);\n if ((item instanceof Pair || item === nil) && !is_list(item)) {\n throw new Error('append!: Invalid argument, value is not a list');\n }\n if (is_null(item)) {\n return acc;\n }\n if (acc === nil) {\n if (item === nil) {\n return nil;\n }\n return item;\n }\n return acc.append(item);\n }, nil);\n }, `(append! arg1 ...)\n\n Destructive version of append, it modify the list in place. It return\n new list where each argument is appened to the end. It may modify\n lists added as arguments.`),\n // ------------------------------------------------------------------\n reverse: doc('reverse', function reverse(arg) {\n typecheck('reverse', arg, ['array', 'pair', 'nil']);\n if (arg === nil) {\n return nil;\n }\n if (arg instanceof Pair) {\n var arr = global_env.get('list->array')(arg).reverse();\n return global_env.get('array->list')(arr);\n } else if (!(arg instanceof Array)) {\n throw new Error(typeErrorMessage('reverse', type(arg), 'array or pair'));\n } else {\n return arg.reverse();\n }\n }, `(reverse list)\n\n Function will reverse the list or array. If value is not a list\n or array it will throw exception.`),\n // ------------------------------------------------------------------\n nth: doc('nth', function nth(index, obj) {\n typecheck('nth', index, 'number');\n typecheck('nth', obj, ['array', 'pair']);\n if (obj instanceof Pair) {\n var node = obj;\n var count = 0;\n while (count < index) {\n if (!node.cdr || node.cdr === nil || node.haveCycles('cdr')) {\n return nil;\n }\n node = node.cdr;\n count++;\n }\n return node.car;\n } else if (obj instanceof Array) {\n return obj[index];\n } else {\n throw new Error(typeErrorMessage('nth', type(obj), 'array or pair', 2));\n }\n }, `(nth index obj)\n\n Function return nth element of the list or array. If used with different\n value it will throw exception`),\n // ------------------------------------------------------------------\n list: doc('list', function list(...args) {\n return args.reverse().reduce((list, item) => new Pair(item, list), nil);\n }, `(list . args)\n\n Function create new list out of its arguments.`),\n // ------------------------------------------------------------------\n substring: doc('substring', function substring(string, start, end) {\n typecheck('substring', string, 'string');\n typecheck('substring', start, 'number');\n typecheck('substring', end, ['number', 'undefined']);\n return string.substring(start.valueOf(), end && end.valueOf());\n }, `(substring string start end)\n\n Function return part of the string starting at start ending with end.`),\n // ------------------------------------------------------------------\n concat: doc('concat', function concat(...args) {\n args.forEach((arg, i) => typecheck('concat', arg, 'string', i + 1));\n return args.join('');\n }, `(concat . strings)\n\n Function create new string by joining its arguments`),\n // ------------------------------------------------------------------\n join: doc('join', function join(separator, list) {\n typecheck('join', separator, 'string');\n typecheck('join', list, ['pair', 'nil']);\n return global_env.get('list->array')(list).join(separator);\n }, `(join separator list)\n\n Function return string by joining elements of the list`),\n // ------------------------------------------------------------------\n split: doc('split', function split(separator, string) {\n typecheck('split', separator, ['regex', 'string']);\n typecheck('split', string, 'string');\n return global_env.get('array->list')(string.split(separator));\n }, `(split separator string)\n\n Function create list by splitting string by separatar that can\n be a string or regular expression.`),\n // ------------------------------------------------------------------\n replace: doc('replace', function replace(pattern, replacement, string) {\n typecheck('replace', pattern, ['regex', 'string']);\n typecheck('replace', replacement, ['string', 'function']);\n typecheck('replace', string, 'string');\n return string.replace(pattern, replacement);\n }, `(replace pattern replacement string)\n\n Function change pattern to replacement inside string. Pattern can be string\n or regex and replacement can be function or string.`),\n // ------------------------------------------------------------------\n match: doc('match', function match(pattern, string) {\n typecheck('match', pattern, ['regex', 'string']);\n typecheck('match', string, 'string');\n var m = string.match(pattern);\n return m ? global_env.get('array->list')(m) : false;\n }, `(match pattern string)\n\n function return match object from JavaScript as list or #f if not match.`),\n // ------------------------------------------------------------------\n search: doc('search', function search(pattern, string) {\n typecheck('search', pattern, ['regex', 'string']);\n typecheck('search', string, 'string');\n return string.search(pattern);\n }, `(search pattern string)\n\n Function return first found index of the pattern inside a string`),\n // ------------------------------------------------------------------\n repr: doc('repr', function repr(obj, quote) {\n return toString(obj, quote);\n }, `(repr obj)\n\n Function return string LIPS representation of an object as string.`),\n // ------------------------------------------------------------------\n 'escape-regex': doc('escape-regex', function(string) {\n typecheck('escape-regex', string, 'string');\n return escape_regex(string.valueOf());\n }, `(escape-regex string)\n\n Function return new string where all special operators used in regex,\n are escaped with slash so they can be used in RegExp constructor\n to match literal string`),\n // ------------------------------------------------------------------\n env: doc('env', function env(env) {\n env = env || this;\n var names = Object.keys(env.__env__).map(LSymbol);\n // TODO: get symbols\n var result;\n if (names.length) {\n result = Pair.fromArray(names);\n } else {\n result = nil;\n }\n if (env.__parent__ instanceof Environment) {\n return global_env.get('env')(env.__parent__).append(result);\n }\n return result;\n }, `(env)\n (env obj)\n\n Function return list of values (functions, macros and variables)\n inside environment and it's parents.`),\n // ------------------------------------------------------------------\n 'new': doc('new', function(obj, ...args) {\n var instance = new (unbind(obj))(...args.map(x => unbox(x)));\n return instance;\n }, `(new obj . args)\n\n Function create new JavaScript instance of an object.`),\n // ------------------------------------------------------------------\n 'typecheck': doc(\n typecheck,\n `(typecheck label value type [position])\n\n Function check type and throw exception if type don't match.\n Type can be string or list of strings. Position optional argument\n is used to created proper error message.`),\n // ------------------------------------------------------------------\n 'unset-special!': doc('unset-special!', function(symbol) {\n typecheck('remove-special!', symbol, 'string');\n delete specials.remove(symbol.valueOf());\n }, `(unset-special! name)\n\n Function remove special symbol from parser. Added by \\`set-special!\\`,\n name must be a string.`),\n // ------------------------------------------------------------------\n 'set-special!': doc('set-special!', function(seq, name, type = specials.LITERAL) {\n typecheck('set-special!', seq, 'string', 1);\n typecheck('set-special!', name, 'symbol', 2);\n specials.append(seq.valueOf(), name, type);\n }, `(set-special! symbol name [type])\n\n Add special symbol to the list of transforming operators by the parser.\n e.g.: \\`(add-special! \"#\" 'x)\\` will allow to use \\`#(1 2 3)\\` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional and it can be constant value\n lips.specials.SPLICE if this constant is used it will transform\n \\`#(1 2 3)\\` into (x 1 2 3) that is required by # that define vectors.`),\n // ------------------------------------------------------------------\n 'get': get,\n '.': get,\n // ------------------------------------------------------------------\n 'unbind': doc(\n unbind,\n `(unbind fn)\n\n Function remove binding from function so you can get props from it.`),\n // ------------------------------------------------------------------\n type: doc(\n type,\n `(type object)\n\n Function return type of an object as string.`),\n // ------------------------------------------------------------------\n 'debugger': doc('debugger', function() {\n /* eslint-disable */\n debugger;\n /* eslint-enable */\n }, `(debugger)\n\n Function stop JavaScript code in debugger.`),\n // ------------------------------------------------------------------\n 'in': doc('in', function(a, b) {\n if (a instanceof LSymbol ||\n a instanceof LString ||\n a instanceof LNumber) {\n a = a.valueOf();\n }\n return a in unbox(b);\n }, `(in key value)\n\n Function use is in operator to check if value is in object.`),\n // ------------------------------------------------------------------\n 'instanceof': doc('instanceof', function(type, obj) {\n return obj instanceof unbind(type);\n }, `(instanceof type obj)\n\n Function check of object is instance of object.`),\n // ------------------------------------------------------------------\n 'prototype?': doc(\n 'prototype?',\n is_prototype,\n `(prototype? obj)\n\n Function check if value is JavaScript Object prototype.`),\n // ------------------------------------------------------------------\n 'macro?': doc('macro?', function(obj) {\n return obj instanceof Macro;\n }, `(macro? expression)\n\n Function check if value is a macro.`),\n // ------------------------------------------------------------------\n 'function?': doc(\n 'function?',\n is_function,\n `(function? expression)\n\n Function check if value is a function.`),\n // ------------------------------------------------------------------\n 'real?': doc('real?', function(value) {\n if (type(value) !== 'number') {\n return false;\n }\n if (value instanceof LNumber) {\n return value.isFloat();\n }\n return LNumber.isFloat(value);\n }, `(real? number)\n\n Function check if value is real number.`),\n // ------------------------------------------------------------------\n 'number?': doc('number?', function(x) {\n return Number.isNaN(x) || LNumber.isNumber(x);\n }, `(number? expression)\n\n Function check if value is a number or NaN value.`),\n // ------------------------------------------------------------------\n 'string?': doc('string?', function(obj) {\n return LString.isString(obj);\n }, `(string? expression)\n\n Function check if value is a string.`),\n // ------------------------------------------------------------------\n 'pair?': doc('pair?', function(obj) {\n return obj instanceof Pair;\n }, `(pair? expression)\n\n Function check if value is a pair or list structure.`),\n // ------------------------------------------------------------------\n 'regex?': doc('regex?', function(obj) {\n return obj instanceof RegExp;\n }, `(regex? expression)\n\n Function check if value is regular expression.`),\n // ------------------------------------------------------------------\n 'null?': doc('null?', function(obj) {\n return is_null(obj);\n }, `(null? expression)\n\n Function check if value is nulish.`),\n // ------------------------------------------------------------------\n 'boolean?': doc('boolean?', function(obj) {\n return typeof obj === 'boolean';\n }, `(boolean? expression)\n\n Function check if value is boolean.`),\n // ------------------------------------------------------------------\n 'symbol?': doc('symbol?', function(obj) {\n return obj instanceof LSymbol;\n }, `(symbol? expression)\n\n Function check if value is LIPS symbol`),\n // ------------------------------------------------------------------\n 'array?': doc('array?', function(obj) {\n return obj instanceof Array;\n }, `(array? expression)\n\n Function check if value is an array.`),\n // ------------------------------------------------------------------\n 'object?': doc('object?', function(obj) {\n return obj !== nil && obj !== null &&\n !(obj instanceof LCharacter) &&\n !(obj instanceof RegExp) &&\n !(obj instanceof LString) &&\n !(obj instanceof Pair) &&\n !(obj instanceof LNumber) &&\n typeof obj === 'object' &&\n !(obj instanceof Array);\n }, `(object? expression)\n\n Function check if value is an plain object.`),\n // ------------------------------------------------------------------\n flatten: doc('flatten', function flatten(list) {\n typecheck('flatten', list, 'pair');\n return list.flatten();\n }, `(flatten list)\n\n Return shallow list from tree structure (pairs).`),\n // ------------------------------------------------------------------\n 'array->list': doc('array->list', function(array) {\n typecheck('array->list', array, 'array');\n return Pair.fromArray(array);\n }, `(array->list array)\n\n Function convert JavaScript array to LIPS list.`),\n // ------------------------------------------------------------------\n 'tree->array': doc(\n 'tree->array',\n to_array('tree->array', true),\n `(tree->array list)\n\n Function convert LIPS list structure into JavaScript array.`),\n // ------------------------------------------------------------------\n 'list->array': doc(\n 'list->array',\n to_array('list->array'),\n `(list->array list)\n\n Function convert LIPS list into JavaScript array.`),\n // ------------------------------------------------------------------\n apply: doc('apply', function apply(fn, ...args) {\n typecheck('apply', fn, 'function', 1);\n var last = args.pop();\n typecheck('apply', last, ['pair', 'nil'], args.length + 2);\n args = args.concat(global_env.get('list->array').call(this, last));\n return fn.apply(this, prepare_fn_args(fn, args));\n }, `(apply fn list)\n\n Function that call function with list of arguments.`),\n // ------------------------------------------------------------------\n length: doc('length', function length(obj) {\n if (!obj || obj === nil) {\n return 0;\n }\n if (obj instanceof Pair) {\n return obj.length();\n }\n if (\"length\" in obj) {\n return obj.length;\n }\n }, `(length expression)\n\n Function return length of the object, the object can be list\n or any object that have length property.`),\n // ------------------------------------------------------------------\n 'string->number': doc('string->number', function(arg, radix = 10) {\n typecheck('string->number', arg, 'string', 1);\n typecheck('string->number', radix, 'number', 2);\n arg = arg.valueOf();\n radix = radix.valueOf();\n if (arg.match(rational_bare_re) || arg.match(rational_re)) {\n return parse_rational(arg, radix);\n } else if (arg.match(complex_bare_re) || arg.match(complex_re)) {\n return parse_complex(arg, radix);\n } else {\n const valid_bare = (radix === 10 && !arg.match(/e/i)) || radix === 16;\n if (arg.match(int_bare_re) && valid_bare || arg.match(int_re)) {\n return parse_integer(arg, radix);\n }\n if (arg.match(float_re)) {\n return parse_float(arg);\n }\n }\n return false;\n }, `(string->number number [radix])\n\n Function convert string to number.`),\n // ------------------------------------------------------------------\n 'try': doc(new Macro('try', function(code, { dynamic_scope, error }) {\n return new Promise((resolve, reject) => {\n var catch_clause, finally_clause;\n if (LSymbol.is(code.cdr.car.car, 'catch')) {\n catch_clause = code.cdr.car;\n if (code.cdr.cdr instanceof Pair &&\n LSymbol.is(code.cdr.cdr.car.car, 'finally')) {\n finally_clause = code.cdr.cdr.car;\n }\n } else if (LSymbol.is(code.cdr.car.car, 'finally')) {\n finally_clause = code.cdr.car;\n }\n if (!(finally_clause || catch_clause)) {\n throw new Error('try: invalid syntax');\n }\n var next = resolve;\n if (finally_clause) {\n next = function(result, cont) {\n // prevent infinite loop when finally throw exception\n next = reject;\n unpromise(evaluate(new Pair(\n new LSymbol('begin'),\n finally_clause.cdr\n ), args), function() {\n cont(result);\n });\n };\n }\n var args = {\n env: this,\n error: (e) => {\n var env = this.inherit('try');\n if (catch_clause) {\n env.set(catch_clause.cdr.car.car, e);\n var args = {\n env,\n error\n };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n unpromise(evaluate(new Pair(\n new LSymbol('begin'),\n catch_clause.cdr.cdr\n ), args), function(result) {\n next(result, resolve);\n });\n } else {\n next(e, error);\n }\n }\n };\n if (dynamic_scope) {\n args.dynamic_scope = this;\n }\n var result = evaluate(code.car, args);\n if (is_promise(result)) {\n result.then(result => {\n next(result, resolve);\n }).catch(args.error);\n } else {\n next(result, resolve);\n }\n });\n }), `(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro execute user code and catch exception. If catch is provided\n it's executed when expression expr throw error. If finally is provide\n it's always executed at the end.`),\n // ------------------------------------------------------------------\n 'raise': doc('raise', function(obj) {\n throw obj;\n }, `(raise obj)\n\n Throws new exception with given object.`),\n 'throw': doc('throw', function(message) {\n throw new Error(message);\n }, `(throw string)\n\n Throws new expection.`),\n // ------------------------------------------------------------------\n find: doc('find', function find(arg, list) {\n typecheck('find', arg, ['regex', 'function']);\n typecheck('find', list, ['pair', 'nil']);\n if (is_null(list)) {\n return nil;\n }\n var fn = matcher('find', arg);\n return unpromise(fn(list.car), function(value) {\n if (value && value !== nil) {\n return list.car;\n }\n return find(arg, list.cdr);\n });\n }, `(find fn list)\n (find regex list)\n\n Higher order Function find first value for which function return true.\n If called with regex it will create matcher function.`),\n // ------------------------------------------------------------------\n 'for-each': doc('for-each', function(fn, ...lists) {\n typecheck('for-each', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('for-each', arg, ['pair', 'nil'], i + 1);\n });\n // we need to use call(this because babel transpile this code into:\n // var ret = map.apply(void 0, [fn].concat(lists));\n // it don't work with weakBind\n var ret = global_env.get('map').call(this, fn, ...lists);\n if (is_promise(ret)) {\n return ret.then(() => {});\n }\n }, `(for-each fn . lists)\n\n Higher order function that call function \\`fn\\` by for each\n value of the argument. If you provide more then one list as argument\n it will take each value from each list and call \\`fn\\` function\n with that many argument as number of list arguments.`),\n // ------------------------------------------------------------------\n map: doc('map', function map(fn, ...lists) {\n typecheck('map', fn, 'function');\n var is_list = global_env.get('list?');\n lists.forEach((arg, i) => {\n typecheck('map', arg, ['pair', 'nil'], i + 1);\n // detect cycles\n if (arg instanceof Pair && !is_list.call(this, arg)) {\n throw new Error(`map: argument ${i + 1} is not a list`);\n }\n });\n if (lists.length === 0) {\n return nil;\n }\n if (lists.some(x => x === nil)) {\n return nil;\n }\n var args = lists.map(l => l.car);\n var parent_frame = this.get('parent.frame');\n var env = this.newFrame(fn, args);\n env.set('parent.frame', parent_frame);\n return unpromise(fn.call(env, ...args), (head) => {\n return unpromise(map.call(this, fn, ...lists.map(l => l.cdr)), (rest) => {\n return new Pair(head, rest);\n });\n });\n }, `(map fn . lists)\n\n Higher order function that call function \\`fn\\` by for each\n value of the argument. If you provide more then one list as argument\n it will take each value from each list and call \\`fn\\` function\n with that many argument as number of list arguments. The return\n values of the function call is accumulated in result list and\n returned by the call to map.`),\n // ------------------------------------------------------------------\n 'list?': doc('list?', function(obj) {\n var node = obj;\n while (true) {\n if (node === nil) {\n return true;\n }\n if (!(node instanceof Pair)) {\n return false;\n }\n if (node.haveCycles('cdr')) {\n return false;\n }\n node = node.cdr;\n }\n }, `(list? obj)\n\n Function test if value is proper linked list structure.\n The car of each pair can be any value. It return false on cycles.\"`),\n // ------------------------------------------------------------------\n some: doc('some', function some(fn, list) {\n typecheck('some', fn, 'function');\n typecheck('some', list, ['pair', 'nil']);\n if (is_null(list)) {\n return false;\n } else {\n return unpromise(fn(list.car), (value) => {\n return value || some(fn, list.cdr);\n });\n }\n }, `(some fn list)\n\n Higher order function that call argument on each element of the list.\n It stops when function fn return true for a value if so it will\n return true. If none of the values give true, the function return false`),\n // ------------------------------------------------------------------\n fold: doc('fold', fold('fold', function(fold, fn, init, ...lists) {\n typecheck('fold', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('fold', arg, ['pair', 'nil'], i + 1);\n });\n if (lists.some(x => x === nil)) {\n return init;\n }\n const value = fold.call(this, fn, init, ...lists.map(l => l.cdr));\n return unpromise(value, value => {\n return fn(...lists.map(l => l.car), value);\n });\n }), `(fold fn init . lists)\n\n Function fold is reverse of the reduce. it call function \\`fn\\`\n on each elements of the list and return single value.\n e.g. it call (fn a1 b1 (fn a2 b2 (fn a3 b3 '())))\n for: (fold fn '() alist blist)`),\n // ------------------------------------------------------------------\n pluck: doc('pluck', function pluck(...keys) {\n return function(obj) {\n keys = keys.map(x => x instanceof LSymbol ? x.__name__ : x);\n if (keys.length === 0) {\n return nil;\n } else if (keys.length === 1) {\n const [key] = keys;\n return obj[key];\n }\n var result = {};\n keys.forEach((key) => {\n result[key] = obj[key];\n });\n return result;\n };\n }, `(pluck . string)\n\n If called with single string it will return function that will return\n key from object. If called with more then one argument function will\n return new object by taking all properties from given object.`),\n // ------------------------------------------------------------------\n reduce: doc('reduce', fold('reduce', function(reduce, fn, init, ...lists) {\n typecheck('reduce', fn, 'function');\n lists.forEach((arg, i) => {\n typecheck('reduce', arg, ['pair', 'nil'], i + 1);\n });\n if (lists.some(x => x === nil)) {\n return init;\n }\n return unpromise(fn(...lists.map(l => l.car), init), (value) => {\n return reduce.call(this, fn, value, ...lists.map(l => l.cdr));\n });\n }), `(reduce fn init list . lists)\n\n Higher order function take each element of the list and call\n the function with result of previous call or init and next element\n on the list until each element is processed and return single value\n as result of last call to \\`fn\\` function.\n e.g. it call (fn a3 b3 (fn a2 b2 (fn a1 b1 init)))\n for (reduce fn init alist blist)`),\n // ------------------------------------------------------------------\n filter: doc('filter', function filter(arg, list) {\n typecheck('filter', arg, ['regex', 'function']);\n typecheck('filter', list, ['pair', 'nil']);\n var array = global_env.get('list->array')(list);\n var result = [];\n var fn = matcher('filter', arg);\n return (function loop(i) {\n function next(value) {\n if (value && value !== nil) {\n result.push(item);\n }\n return loop(++i);\n }\n if (i === array.length) {\n return Pair.fromArray(result);\n }\n var item = array[i];\n return unpromise(fn(item), next);\n })(0);\n }, `(filter fn list)\n (filter regex list)\n\n Higher order function that call \\`fn\\` for each element of the list\n and return list for only those elements for which function return\n true value. If called with regex it will create matcher function.`),\n // ------------------------------------------------------------------\n compose: doc(\n compose,\n `(compose . fns)\n\n Higher order function and create new function that apply all functions\n From right to left and return it's value. Reverse of compose.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 3)\n 11\n `),\n pipe: doc(\n pipe,\n `(pipe . fns)\n\n Higher order function and create new function that apply all functions\n From left to right and return it's value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 3)\n 15`),\n curry: doc(\n curry,\n `(curry fn . args)\n\n Higher order function that create curried version of the function.\n The result function will have partially applied arguments and it\n will keep returning functions until all arguments are added\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))`),\n // ------------------------------------------------------------------\n // Numbers\n // ------------------------------------------------------------------\n gcd: doc('gcd', function gcd(...args) {\n typecheck_args('lcm', args, 'number');\n return args.reduce(function(result, item) {\n return result.gcd(item);\n });\n }, `(gcd n1 n2 ...)\n\n Function return the greatest common divisor of their arguments.`),\n // ------------------------------------------------------------------\n lcm: doc('lcm', function lcm(...args) {\n typecheck_args('lcm', args, 'number');\n // ref: https://rosettacode.org/wiki/Least_common_multiple#JavaScript\n var n = args.length, a = abs(args[0]);\n for (var i = 1; i < n; i++) {\n var b = abs(args[i]), c = a;\n while (a && b) {\n a > b ? a %= b : b %= a;\n }\n a = abs(c * args[i]) / (a + b);\n }\n return LNumber(a);\n }, `(lcm n1 n2 ...)\n\n Function return the least common multiple of their arguments.`),\n // ------------------------------------------------------------------\n 'odd?': doc('odd?', single_math_op(function(num) {\n return LNumber(num).isOdd();\n }), `(odd? number)\n\n Function check if number os odd.`),\n // ------------------------------------------------------------------\n 'even?': doc('even?', single_math_op(function(num) {\n return LNumber(num).isEven();\n }), `(even? number)\n\n Function check if number is even.`),\n // ------------------------------------------------------------------\n // math functions\n '*': doc('*', reduce_math_op(function(a, b) {\n return LNumber(a).mul(b);\n }, LNumber(1)), `(* . numbers)\n\n Multiplicate all numbers passed as arguments. If single value is passed\n it will return that value.`),\n // ------------------------------------------------------------------\n '+': doc('+', reduce_math_op(function(a, b) {\n return LNumber(a).add(b);\n }, LNumber(0)), `(+ . numbers)\n\n Sum all numbers passed as arguments. If single value is passed it will\n return that value.`),\n // ------------------------------------------------------------------\n '-': doc('-', function(...args) {\n if (args.length === 0) {\n throw new Error('-: procedure require at least one argument');\n }\n typecheck_args('-', args, 'number');\n if (args.length === 1) {\n return LNumber(args[0]).sub();\n }\n if (args.length) {\n return args.reduce(binary_math_op(function(a, b) {\n return LNumber(a).sub(b);\n }));\n }\n }, `(- n1 n2 ...)\n (- n)\n\n Subtract number passed as argument. If only one argument is passed\n it will negate the value.`),\n // ------------------------------------------------------------------\n '/': doc('/', function(...args) {\n if (args.length === 0) {\n throw new Error('/: procedure require at least one argument');\n }\n typecheck_args('/', args, 'number');\n if (args.length === 1) {\n return LNumber(1).div(args[0]);\n }\n return args.reduce(binary_math_op(function(a, b) {\n return LNumber(a).div(b);\n }));\n }, `(/ n1 n2 ...)\n (/ n)\n\n Divide number passed as arguments one by one. If single argument\n is passed it will calculate (/ 1 n1).`),\n // ------------------------------------------------------------------\n abs: doc('abs', single_math_op(function(n) {\n return LNumber(n).abs();\n }), `(abs number)\n\n Function create absolute value from number.`),\n // ------------------------------------------------------------------\n truncate: doc('truncate', function(n) {\n typecheck('truncate', n, 'number');\n if (LNumber.isFloat(n)) {\n if (n instanceof LNumber) {\n n = n.valueOf();\n }\n return LFloat(truncate(n));\n }\n return n;\n }, `(truncate n)\n\n Function return integer value from real number.`),\n // ------------------------------------------------------------------\n sqrt: doc('sqrt', single_math_op(function(n) {\n return LNumber(n).sqrt();\n }), `(sqrt number)\n\n Function return square root of the number.`),\n // ------------------------------------------------------------------\n '**': doc('**', binary_math_op(function(a, b) {\n a = LNumber(a);\n b = LNumber(b);\n if (b.cmp(0) === -1) {\n return LFloat(1).div(a).pow(b.sub());\n }\n return a.pow(b);\n }), `(** a b)\n\n Function calculate number a to to the power of b.`),\n // ------------------------------------------------------------------\n '1+': doc('1+', single_math_op(function(number) {\n return LNumber(number).add(1);\n }), `(1+ number)\n\n Function add 1 to the number and return result.`),\n // ------------------------------------------------------------------\n '1-': doc(single_math_op(function(number) {\n return LNumber(number).sub(1);\n }), `(1- number)\n\n Function subtract 1 from the number and return result.`),\n // ------------------------------------------------------------------\n '%': doc('%', function(a, b) {\n typecheck_args('%', [a, b], 'number');\n return LNumber(a).rem(b);\n }, `(% n1 n2)\n\n Function get reminder of it's arguments.`),\n // ------------------------------------------------------------------\n // Booleans\n '==': doc('==', function(...args) {\n typecheck_args('==', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === 0, args);\n }, `(== x1 x2 ...)\n\n Function compare its numerical arguments and check if they are equal`),\n // ------------------------------------------------------------------\n '>': doc('>', function(...args) {\n typecheck_args('>', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === 1, args);\n }, `(> x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically increasing`),\n // ------------------------------------------------------------------\n '<': doc('<', function(...args) {\n typecheck_args('<', args, 'number');\n return seq_compare((a, b) => LNumber(a).cmp(b) === -1, args);\n }, `(< x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically decreasing`),\n // ------------------------------------------------------------------\n '<=': doc('<=', function(...args) {\n typecheck_args('<=', args, 'number');\n return seq_compare((a, b) => [0, -1].includes(LNumber(a).cmp(b)), args);\n }, `(<= x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically nonincreasing`),\n // ------------------------------------------------------------------\n '>=': doc('>=', function(...args) {\n typecheck_args('>=', args, 'number');\n return seq_compare((a, b) => [0, 1].includes(LNumber(a).cmp(b)), args);\n }, `(>= x1 x2 ...)\n\n Function compare its numerical arguments and check if they are\n monotonically nondecreasing`),\n // ------------------------------------------------------------------\n 'eq?': doc(\n 'eq?',\n equal,\n `(eq? a b)\n\n Function compare two values if they are identical.`),\n // ------------------------------------------------------------------\n or: doc(new Macro('or', function(code, { dynamic_scope, error }) {\n var args = global_env.get('list->array')(code);\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n if (!args.length) {\n return false;\n }\n var result;\n return (function loop() {\n function next(value) {\n result = value;\n if (result !== false) {\n return result;\n } else {\n return loop();\n }\n }\n if (!args.length) {\n if (result !== false) {\n return result;\n } else {\n return false;\n }\n } else {\n var arg = args.shift();\n var value = evaluate(arg, { env: self, dynamic_scope, error });\n return unpromise(value, next);\n }\n })();\n }), `(or . expressions)\n\n Macro execute the values one by one and return the one that is truthy value.\n If there are no expression that evaluate to true it return false.`),\n // ------------------------------------------------------------------\n and: doc(new Macro('and', function(code, { dynamic_scope, error } = {}) {\n var args = global_env.get('list->array')(code);\n var self = this;\n if (dynamic_scope) {\n dynamic_scope = self;\n }\n if (!args.length) {\n return true;\n }\n var result;\n return (function loop() {\n function next(value) {\n result = value;\n if (result === false) {\n return false;\n } else {\n return loop();\n }\n }\n if (!args.length) {\n if (result !== false) {\n return result;\n } else {\n return false;\n }\n } else {\n var arg = args.shift();\n var value = evaluate(arg, { env: self, dynamic_scope, error });\n return unpromise(value, next);\n }\n })();\n }), `(and . expressions)\n\n Macro evaluate each expression in sequence if any value return false it will\n return false. If each value return true it will return the last value.\n If it's called without arguments it will return true.`),\n // bit operations\n '|': doc('|', function(a, b) {\n return LNumber(a).or(b);\n }, `(| a b)\n\n Function calculate or bit operation.`),\n '&': doc('&', function(a, b) {\n return LNumber(a).and(b);\n }, `(& a b)\n\n Function calculate and bit operation.`),\n '~': doc('~', function(a) {\n return LNumber(a).neg();\n }, `(~ number)\n\n Function negate the value.`),\n '>>': doc('>>', function(a, b) {\n return LNumber(a).shr(b);\n }, `(>> a b)\n\n Function right shit the value a by value b.`),\n '<<': doc('<<', function(a, b) {\n return LNumber(a).shl(b);\n }, `(<< a b)\n\n Function left shit the value a by value b.`),\n not: doc('not', function not(value) {\n if (is_null(value)) {\n return true;\n }\n return !value;\n }, `(not object)\n\n Function return negation of the argument.`)\n}, undefined, 'global');\nvar user_env = global_env.inherit('user-env');\n// -------------------------------------------------------------------------\nfunction set_interaction_env(interaction, internal) {\n interaction.constant('**internal-env**', internal);\n interaction.doc(\n '**internal-env**',\n `**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are internal type\n of variables that can't be redefined, defining variable with same name\n will throw an error.`\n );\n global_env.set('**interaction-environment**', interaction);\n}\n// -------------------------------------------------------------------------\nset_interaction_env(user_env, internal_env);\nglobal_env.doc(\n '**interaction-environment**',\n `**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contain references to stdin, stdout and stderr.`\n);\n// -------------------------------------------------------------------------\n(function() {\n var map = { ceil: 'ceiling' };\n ['floor', 'round', 'ceil'].forEach(fn => {\n var name = map[fn] ? map[fn] : fn;\n global_env.set(name, doc(name, function(value) {\n typecheck(name, value, 'number');\n if (value instanceof LNumber) {\n return value[fn]();\n }\n }, `(${name} number)\n\n Function calculate ${name} of a number.`));\n });\n})();\n// -------------------------------------------------------------------------\n// ref: https://stackoverflow.com/a/4331218/387194\nfunction allPossibleCases(arr) {\n if (arr.length === 1) {\n return arr[0];\n } else {\n var result = [];\n // recur with the rest of array\n var allCasesOfRest = allPossibleCases(arr.slice(1));\n for (var i = 0; i < allCasesOfRest.length; i++) {\n for (var j = 0; j < arr[0].length; j++) {\n result.push(arr[0][j] + allCasesOfRest[i]);\n }\n }\n return result;\n }\n}\n\n// -------------------------------------------------------------------------\nfunction combinations(input, start, end) {\n var result = [];\n for (var i = start; i <= end; ++i) {\n var input_arr = [];\n for (var j = 0; j < i; ++j) {\n input_arr.push(input);\n }\n result = result.concat(allPossibleCases(input_arr));\n }\n return result;\n}\n\n// -------------------------------------------------------------------------\n// cadr caddr cadadr etc.\ncombinations(['d', 'a'], 2, 5).forEach(spec => {\n const s = spec.split('');\n const chars = s.slice().reverse();\n const code = s.map(c => `(c${c}r`).join(' ') + ' arg' + ')'.repeat(s.length);\n const name = 'c' + spec + 'r';\n global_env.set(name, doc(name, function(arg) {\n return chars.reduce(function(list, type) {\n typecheck(name, list, 'pair');\n if (type === 'a') {\n return list.car;\n } else {\n return list.cdr;\n }\n }, arg);\n }, `(${name} arg)\n\n Function calculate ${code}`));\n});\n// -----------------------------------------------------------------------------\nfunction reversseFind(dir, fn) {\n var parts = dir.split(path.sep).filter(Boolean);\n for (var i = parts.length; i--;) {\n var p = path.join('/', ...parts.slice(0, i + 1));\n if (fn(p)) {\n return p;\n }\n }\n}\n\n// -----------------------------------------------------------------------------\nfunction nodeModuleFind(dir) {\n return reversseFind(dir, function(dir) {\n return fs.existsSync(path.join(dir, 'node_modules'));\n });\n}\n\n// -------------------------------------------------------------------------\nfunction is_node() {\n return typeof global !== 'undefined' && global.global === global;\n}\n\n// -------------------------------------------------------------------------\nasync function node_specific() {\n const { createRequire } = await import('module');\n nodeRequire = createRequire(import.meta.url);\n fs = await import('fs');\n path = await import('path');\n global_env.set('global', global);\n global_env.set('self', global);\n global_env.set('window', undefined);\n const moduleURL = new URL(import.meta.url);\n const __dirname = path.dirname(moduleURL.pathname);\n const __filename = path.basename(moduleURL.pathname);\n global_env.set('__dirname', __dirname);\n global_env.set('__filename', __filename);\n // ---------------------------------------------------------------------\n global_env.set('require.resolve', doc('require.resolve', function(path) {\n typecheck('require.resolve', path, 'string');\n var name = path.valueOf();\n return nodeRequire.resolve(name);\n }, `(require.resolve path)\n\n Return path relative the current module.`));\n // ---------------------------------------------------------------------\n global_env.set('require', doc('require', function(module) {\n typecheck('require', module, 'string');\n module = module.valueOf();\n var root = process.cwd();\n var value;\n try {\n if (module.match(/^\\s*\\./)) {\n value = nodeRequire(path.join(root, module));\n } else {\n var dir = nodeModuleFind(root);\n if (dir) {\n value = nodeRequire(path.join(dir, 'node_modules', module));\n } else {\n value = nodeRequire(module);\n }\n }\n } catch (e) {\n value = nodeRequire(module);\n }\n return patch_value(value, global);\n }, `(require module)\n\n Function to be used inside Node.js to import the module.`));\n}\n// -------------------------------------------------------------------------\nif (is_node()) {\n node_specific();\n} else if (typeof window !== 'undefined' && window === root) {\n global_env.set('window', window);\n global_env.set('global', undefined);\n global_env.set('self', window);\n} else if (typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined') {\n global_env.set('self', self);\n global_env.set('window', undefined);\n global_env.set('global', undefined);\n}\n// -------------------------------------------------------------------------\nfunction typeErrorMessage(fn, got, expected, position = null) {\n let postfix = fn ? ` in expression \\`${fn}\\`` : '';\n if (position !== null) {\n postfix += ` (argument ${position})`;\n }\n if (is_function(expected)) {\n return `Invalid type got ${got}${postfix}`;\n }\n if (expected instanceof Array) {\n if (expected.length === 1) {\n expected = expected[0];\n } else {\n const last = expected[expected.length - 1];\n expected = expected.slice(0, -1).join(', ') + ' or ' + last;\n }\n }\n return `Expecting ${expected}, got ${got}${postfix}`;\n}\n// -------------------------------------------------------------------------\nfunction typecheck_args(fn, args, expected) {\n args.forEach((arg, i) => {\n typecheck(fn, arg, expected, i + 1);\n });\n}\n// -------------------------------------------------------------------------\nfunction typecheck_text_port(fn, arg, type) {\n typecheck(fn, arg, type);\n if (arg.__type__ === binary_port) {\n throw new Error(typeErrorMessage(\n fn,\n 'binary-port',\n 'textual-port'\n ));\n }\n}\n// -------------------------------------------------------------------------\nfunction typecheck(fn, arg, expected, position = null) {\n fn = fn.valueOf();\n const arg_type = type(arg).toLowerCase();\n if (is_function(expected)) {\n if (!expected(arg)) {\n throw new Error(typeErrorMessage(fn, arg_type, expected, position));\n }\n return;\n }\n var match = false;\n if (expected instanceof Pair) {\n expected = expected.to_array();\n }\n if (expected instanceof Array) {\n expected = expected.map(x => x.valueOf());\n }\n if (expected instanceof Array) {\n expected = expected.map(x => x.valueOf().toLowerCase());\n if (expected.includes(arg_type)) {\n match = true;\n }\n } else {\n expected = expected.valueOf().toLowerCase();\n }\n if (!match && arg_type !== expected) {\n throw new Error(typeErrorMessage(fn, arg_type, expected, position));\n }\n}\n// -------------------------------------------------------------------------\nfunction self_evaluated(obj) {\n var type = typeof obj;\n return ['string', 'function'].includes(type) ||\n typeof obj === 'symbol' ||\n obj instanceof QuotedPromise ||\n obj instanceof LSymbol ||\n obj instanceof LNumber ||\n obj instanceof LString ||\n obj instanceof RegExp;\n}\n// -------------------------------------------------------------------------\nfunction is_native(obj) {\n return obj instanceof LNumber ||\n obj instanceof LString ||\n obj instanceof LCharacter;\n}\n// -------------------------------------------------------------------------\nfunction has_own_symbol(obj, symbol) {\n if (obj === null) {\n return false;\n }\n return typeof obj === 'object' &&\n symbol in Object.getOwnPropertySymbols(obj);\n}\n// -------------------------------------------------------------------------\nfunction is_iterator(obj, symbol) {\n if (has_own_symbol(obj, symbol) || has_own_symbol(obj.__proto__, symbol)) {\n return is_function(obj[symbol]);\n }\n}\n// -------------------------------------------------------------------------\nfunction type(obj) {\n var mapping = {\n 'pair': Pair,\n 'symbol': LSymbol,\n 'character': LCharacter,\n 'values': Values,\n 'input-port': InputPort,\n 'output-port': OutputPort,\n 'number': LNumber,\n 'regex': RegExp,\n 'syntax': Syntax,\n 'macro': Macro,\n 'string': LString,\n 'array': Array,\n 'native-symbol': Symbol\n };\n if (Number.isNaN(obj)) {\n return 'NaN';\n }\n if (obj === nil) {\n return 'nil';\n }\n if (obj === null) {\n return 'null';\n }\n for (let [key, value] of Object.entries(mapping)) {\n if (obj instanceof value) {\n return key;\n }\n }\n if (typeof obj === 'object') {\n if (obj.__instance__) {\n obj.__instance__ = false;\n if (obj.__instance__) {\n if (is_function(obj.toType)) {\n return obj.toType();\n }\n return 'instance';\n }\n }\n if (obj.constructor) {\n if (obj.constructor.__class__) {\n return obj.constructor.__class__;\n }\n if (obj.constructor === Object) {\n if (is_iterator(obj, Symbol.iterator)) {\n return 'iterator';\n }\n if (is_iterator(obj, Symbol.asyncIterator)) {\n return 'async-iterator';\n }\n }\n return obj.constructor.name.toLowerCase();\n }\n }\n return typeof obj;\n}\n// -------------------------------------------------------------------------\n// :; wrap tree of Promises with single Promise or return argument as is\n// :: if tree have no Promises\n// -------------------------------------------------------------------------\nfunction resolve_promises(arg) {\n var promises = [];\n traverse(arg);\n if (promises.length) {\n return resolve(arg);\n }\n return arg;\n function traverse(node) {\n if (is_promise(node)) {\n promises.push(node);\n } else if (node instanceof Pair) {\n if (!node.haveCycles('car')) {\n traverse(node.car);\n }\n if (!node.haveCycles('cdr')) {\n traverse(node.cdr);\n }\n } else if (node instanceof Array) {\n node.forEach(traverse);\n }\n }\n async function promise(node) {\n var pair = new Pair(\n node.haveCycles('car') ? node.car : await resolve(node.car),\n node.haveCycles('cdr') ? node.cdr : await resolve(node.cdr)\n );\n if (node[__data__]) {\n pair[__data__] = true;\n }\n return pair;\n }\n function resolve(node) {\n if (node instanceof Array) {\n return promise_all(node.map(resolve));\n }\n if (node instanceof Pair && promises.length) {\n return promise(node);\n }\n return node;\n }\n}\n// -------------------------------------------------------------------------\nfunction evaluate_args(rest, { env, dynamic_scope, error }) {\n var args = [];\n var node = rest;\n markCycles(node);\n function next() {\n return args;\n }\n return (function loop() {\n if (node instanceof Pair) {\n var arg = evaluate(node.car, { env, dynamic_scope, error });\n if (dynamic_scope) {\n arg = unpromise(arg, arg => {\n if (is_native_function(arg)) {\n return arg.bind(dynamic_scope);\n }\n return arg;\n });\n }\n return unpromise(resolve_promises(arg), function(arg) {\n args.push(arg);\n if (node.haveCycles('cdr')) {\n return next();\n }\n node = node.cdr;\n return loop();\n });\n } else if (node === nil) {\n return next();\n } else {\n throw new Error('Syntax Error: improper list found in apply');\n }\n })();\n}\n// -------------------------------------------------------------------------\nfunction evaluate_syntax(macro, code, eval_args) {\n var value = macro.invoke(code, eval_args);\n return unpromise(resolve_promises(value), function(value) {\n if (value instanceof Pair) {\n value.markCycles();\n }\n return quote(value);\n });\n}\n// -------------------------------------------------------------------------\nfunction evaluate_macro(macro, code, eval_args) {\n function finalize(result) {\n if (result instanceof Pair) {\n result.markCycles();\n return result;\n }\n return quote(result);\n }\n var value = macro.invoke(code, eval_args);\n return unpromise(resolve_promises(value), function ret(value) {\n if (!value || value && value[__data__] || self_evaluated(value)) {\n return value;\n } else {\n return unpromise(evaluate(value, eval_args), finalize);\n }\n });\n}\n// -------------------------------------------------------------------------\nfunction prepare_fn_args(fn, args) {\n if (is_bound(fn) && !is_object_bound(fn) &&\n (!lips_context(fn) || is_port_method(fn))) {\n args = args.map(unbox);\n }\n if (!is_raw_lambda(fn) &&\n args.some(is_lips_function) &&\n !is_lips_function(fn) &&\n !is_array_method(fn)) {\n // we unbox values from callback functions #76\n // calling map on array should not unbox the value\n var result = [], i = args.length;\n while (i--) {\n let arg = args[i];\n if (is_lips_function(arg)) {\n var wrapper = function(...args) {\n return unpromise(arg.apply(this, args), unbox);\n };\n // make wrapper work like output of bind\n hidden_prop(wrapper, '__bound__', true);\n hidden_prop(wrapper, '__fn__', arg);\n // copy prototype from function to wrapper\n // so this work when calling new from JavaScript\n // case of Preact that pass LIPS class as argument\n // to h function\n wrapper.prototype = arg.prototype;\n result[i] = wrapper;\n } else {\n result[i] = arg;\n }\n }\n args = result;\n }\n return args;\n}\n// -------------------------------------------------------------------------\nfunction apply(fn, args, { env, dynamic_scope, error = () => {} } = {}) {\n args = evaluate_args(args, { env, dynamic_scope, error });\n return unpromise(args, function(args) {\n if (is_raw_lambda(fn)) {\n // lambda need environment as context\n // normal functions are bound to their contexts\n fn = unbind(fn);\n }\n args = prepare_fn_args(fn, args);\n var _args = args.slice();\n var scope = (dynamic_scope || env).newFrame(fn, _args);\n var result = resolve_promises(fn.apply(scope, args));\n return unpromise(result, (result) => {\n if (result instanceof Pair) {\n result.markCycles();\n return quote(result);\n }\n return box(result);\n }, error);\n });\n}\n// -------------------------------------------------------------------------\n// :: Continuations object from call/cc\n// -------------------------------------------------------------------------\nclass Continuation {\n constructor(k) {\n this.__value__ = k;\n }\n invoke() {\n if (this.__value__ === null) {\n throw new Error('Continuations are not implemented yet');\n }\n }\n toString() {\n return '#';\n }\n}\n// -------------------------------------------------------------------------\nconst noop = () => {};\n// -------------------------------------------------------------------------\nfunction evaluate(code, { env, dynamic_scope, error = noop } = {}) {\n try {\n if (dynamic_scope === true) {\n env = dynamic_scope = env || global_env;\n } else if (env === true) {\n env = dynamic_scope = global_env;\n } else {\n env = env || global_env;\n }\n var eval_args = { env, dynamic_scope, error };\n var value;\n if (is_null(code)) {\n return code;\n }\n if (code instanceof LSymbol) {\n return env.get(code);\n }\n if (!(code instanceof Pair)) {\n return code;\n }\n var first = code.car;\n var rest = code.cdr;\n if (first instanceof Pair) {\n value = resolve_promises(evaluate(first, eval_args));\n if (is_promise(value)) {\n return value.then((value) => {\n return evaluate(new Pair(value, code.cdr), eval_args);\n });\n // else is later in code\n } else if (!is_callable(value)) {\n throw new Error(\n type(value) + ' ' + env.get('repr')(value) +\n ' is not callable while evaluating ' + code.toString()\n );\n }\n }\n if (first instanceof LSymbol) {\n value = env.get(first);\n } else if (is_function(first)) {\n value = first;\n }\n var result;\n if (value instanceof Syntax) {\n result = evaluate_syntax(value, code, eval_args);\n } else if (value instanceof Macro) {\n result = evaluate_macro(value, rest, eval_args);\n } else if (is_function(value)) {\n result = apply(value, rest, eval_args);\n } else if (is_continuation(value)) {\n result = value.invoke();\n } else if (code instanceof Pair) {\n value = first && first.toString();\n throw new Error(`${type(first)} ${value} is not a function`);\n } else {\n return code;\n }\n // escape promise feature #54\n var __promise__ = env.get(Symbol.for('__promise__'), { throwError: false });\n if (__promise__ === true && is_promise(result)) {\n // fix #139 evaluate the code inside the promise that is not data.\n // When promise is not quoted it happen automatically, when returning\n // promise from evaluate.\n result = result.then(result => {\n if (result instanceof Pair && !value[__data__]) {\n return evaluate(result, eval_args);\n }\n return result;\n });\n return new QuotedPromise(result);\n }\n return result;\n } catch (e) {\n error && error.call(env, e, code);\n }\n}\n// -------------------------------------------------------------------------\nconst compile = exec_collect(function(code) {\n return code;\n});\n// -------------------------------------------------------------------------\nconst exec = exec_collect(function(code, value) {\n return value;\n});\n// -------------------------------------------------------------------------\nfunction exec_collect(collect_callback) {\n return async function exec_lambda(arg, env, dynamic_scope) {\n if (dynamic_scope === true) {\n env = dynamic_scope = env || user_env;\n } else if (env === true) {\n env = dynamic_scope = user_env;\n } else {\n env = env || user_env;\n }\n var results = [];\n var input = Array.isArray(arg) ? arg : parse(arg);\n for await (let code of input) {\n const value = evaluate(code, {\n env,\n dynamic_scope,\n error: (e, code) => {\n if (e && e.message) {\n if (e.message.match(/^Error:/)) {\n var re = /^(Error:)\\s*([^:]+:\\s*)/;\n // clean duplicated Error: added by JS\n e.message = e.message.replace(re, '$1 $2');\n }\n if (code) {\n // LIPS stack trace\n if (!(e.__code__ instanceof Array)) {\n e.__code__ = [];\n }\n e.__code__.push(code.toString(true));\n }\n }\n throw e;\n }\n });\n if (!is_promise(value)) {\n results.push(collect_callback(code, value));\n } else {\n results.push(collect_callback(code, await value));\n }\n }\n return results;\n };\n}\n// -------------------------------------------------------------------------\nfunction balanced(code) {\n var maching_pairs = {\n '[': ']',\n '(': ')'\n };\n var tokens;\n if (typeof code === 'string') {\n tokens = tokenize(code);\n } else {\n tokens = code.map(x => x && x.token ? x.token : x);\n }\n\n var open_tokens = Object.keys(maching_pairs);\n var brackets = Object.values(maching_pairs).concat(open_tokens);\n tokens = tokens.filter(token => brackets.includes(token));\n\n const stack = new Stack();\n for (const token of tokens) {\n if (open_tokens.includes(token)) {\n stack.push(token);\n } else if (!stack.is_empty()) { // closing token\n var last = stack.top();\n // last on stack need to match\n const closing_token = maching_pairs[last];\n if (token === closing_token) {\n stack.pop();\n } else {\n throw new Error(`Syntax error: missing closing ${closing_token}`);\n }\n } else {\n // closing bracket without opening\n throw new Error(`Syntax error: not matched closing ${token}`);\n }\n }\n return stack.is_empty();\n}\n\n// -------------------------------------------------------------------------\nfunction fworker(fn) {\n // ref: https://stackoverflow.com/a/10372280/387194\n var str = '(' + fn.toString() + ')()';\n var URL = window.URL || window.webkitURL;\n var blob;\n try {\n blob = new Blob([str], { type: 'application/javascript' });\n } catch (e) { // Backwards-compatibility\n const BlobBuilder = window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder;\n blob = new BlobBuilder();\n blob.append(str);\n blob = blob.getBlob();\n }\n return new root.Worker(URL.createObjectURL(blob));\n}\n// -------------------------------------------------------------------------\nfunction is_dev() {\n return lips.version.match(/^(\\{\\{VER\\}\\}|DEV)$/);\n}\n// -------------------------------------------------------------------------\nfunction bootstrap(url = '') {\n const std = 'dist/std.xcb';\n if (url === '') {\n if (is_dev()) {\n url = `https://cdn.jsdelivr.net/gh/jcubic/lips@devel/${std}`;\n } else {\n url = `https://cdn.jsdelivr.net/npm/@jcubic/lips@${lips.version}/${std}`;\n }\n }\n var load = global_env.get('load');\n return load.call(user_env, url, global_env);\n}\n// -------------------------------------------------------------------------\nfunction Worker(url) {\n this.url = url;\n const worker = this.worker = fworker(function() {\n var interpreter;\n var init;\n // string, numbers, booleans\n self.addEventListener('message', function(response) {\n var data = response.data;\n var id = data.id;\n if (data.type !== 'RPC' || id === null) {\n return;\n }\n function send_result(result) {\n self.postMessage({ id: id, type: 'RPC', result: result });\n }\n function send_error(message) {\n self.postMessage({ id: id, type: 'RPC', error: message });\n }\n if (data.method === 'eval') {\n if (!init) {\n send_error('Worker RPC: LIPS not initialized, call init first');\n return;\n }\n init.then(function() {\n // we can use ES6 inside function that's converted to blob\n var code = data.params[0];\n var dynamic = data.params[1];\n interpreter.exec(code, dynamic).then(function(result) {\n result = result.map(function(value) {\n return value && value.valueOf();\n });\n send_result(result);\n }).catch(error => {\n send_error(error);\n });\n });\n } else if (data.method === 'init') {\n var url = data.params[0];\n if (typeof url !== 'string') {\n send_error('Worker RPC: url is not a string');\n } else {\n importScripts(`${url}/dist/lips.min.js`);\n interpreter = new lips.Interpreter('worker');\n init = bootstrap(url);\n init.then(() => {\n send_result(true);\n });\n }\n }\n });\n });\n this.rpc = (function() {\n var id = 0;\n return function rpc(method, params) {\n var _id = ++id;\n return new Promise(function(resolve, reject) {\n worker.addEventListener('message', function handler(response) {\n var data = response.data;\n if (data && data.type === 'RPC' && data.id === _id) {\n if (data.error) {\n reject(data.error);\n } else {\n resolve(data.result);\n }\n worker.removeEventListener('message', handler);\n }\n });\n worker.postMessage({\n type: 'RPC',\n method: method,\n id: _id,\n params: params\n });\n });\n };\n })();\n this.rpc('init', [url]).catch((error) => {\n console.error(error);\n });\n this.exec = function(code, dynamic = false) {\n return this.rpc('eval', [code, dynamic]);\n };\n}\n\n// -------------------------------------------------------------------------\n// :: Serialization\n// -------------------------------------------------------------------------\nvar serialization_map = {\n 'pair': ([car, cdr]) => Pair(car, cdr),\n 'number': function(value) {\n if (LString.isString(value)) {\n return LNumber([value, 10]);\n }\n return LNumber(value);\n },\n 'regex': function([pattern, flag]) {\n return new RegExp(pattern, flag);\n },\n 'nil': function() {\n return nil;\n },\n 'symbol': function(value) {\n if (LString.isString(value)) {\n return LSymbol(value);\n } else if (Array.isArray(value)) {\n return LSymbol(Symbol.for(value[0]));\n }\n },\n 'string': LString,\n 'character': LCharacter\n};\n// -------------------------------------------------------------------------\n// class mapping to create smaller JSON\nconst available_class = Object.keys(serialization_map);\nconst class_map = {};\nfor (let [i, cls] of Object.entries(available_class)) {\n class_map[cls] = +i;\n}\nfunction mangle_name(name) {\n return class_map[name];\n}\nfunction resolve_name(i) {\n return available_class[i];\n}\n// -------------------------------------------------------------------------\nfunction serialize(data) {\n return JSON.stringify(data, function(key, value) {\n const v0 = this[key];\n if (v0) {\n if (v0 instanceof RegExp) {\n return {\n '@': mangle_name('regex'),\n '#': [v0.source, v0.flags]\n };\n }\n var cls = mangle_name(v0.constructor.__class__);\n if (!is_undef(cls)) {\n return {\n '@': cls,\n '#': v0.serialize()\n };\n }\n }\n return value;\n });\n}\n// -------------------------------------------------------------------------\nfunction unserialize(string) {\n return JSON.parse(string, (_, object) => {\n if (object && typeof object === 'object') {\n if (!is_undef(object['@'])) {\n var cls = resolve_name(object['@']);\n if (serialization_map[cls]) {\n return serialization_map[cls](object['#']);\n }\n }\n }\n return object;\n });\n}\n\n// -------------------------------------------------------------------------\n// binary serialization using CBOR binary data format\n// -------------------------------------------------------------------------\nconst cbor = (function() {\n\n var types = {\n 'pair': Pair,\n 'symbol': LSymbol,\n 'number': LNumber,\n 'string': LString,\n 'character': LCharacter,\n 'nil': nil.constructor,\n 'regex': RegExp\n };\n\n function serializer(Class, fn) {\n return {\n deserialize: fn,\n Class\n };\n }\n\n var encoder = new Encoder();\n\n const cbor_serialization_map = {};\n for (const [ name, fn ] of Object.entries(serialization_map)) {\n const Class = types[name];\n cbor_serialization_map[name] = serializer(Class, fn);\n }\n // add CBOR data mapping\n let tag = 43311;\n Object.keys(cbor_serialization_map).forEach(type => {\n const data = cbor_serialization_map[type];\n if (typeof data === 'function') {\n const Class = data;\n addExtension({\n Class,\n tag,\n encode(instance, encode) {\n encode(instance.serialize());\n },\n decode(data) {\n return new Class(data);\n }\n });\n } else {\n const { deserialize, Class } = data;\n addExtension({\n Class,\n tag,\n encode(instance, encode) {\n if (instance instanceof RegExp) {\n return encode([instance.source, instance.flags]);\n }\n encode(instance.serialize());\n },\n decode(data) {\n return deserialize(data);\n }\n });\n }\n tag++;\n });\n return encoder;\n})();\n\n// -------------------------------------------------------------------------\nfunction merge_uint8_array(...args) {\n if (args.length > 1) {\n const len = args.reduce((acc, arr) => acc + arr.length, 0);\n const result = new Uint8Array(len);\n let offset = 0;\n args.forEach(item => {\n result.set(item, offset);\n offset += item.length;\n });\n return result;\n } else if (args.length) {\n return args[0];\n }\n}\n\n// -------------------------------------------------------------------------\nfunction encode_magic() {\n const VERSION = 1;\n const encoder = new TextEncoder('utf-8');\n return encoder.encode(`LIPS${VERSION.toString().padStart(3, ' ')}`);\n}\n\n// -------------------------------------------------------------------------\nconst MAGIC_LENGTH = 7;\n\n// -------------------------------------------------------------------------\nfunction decode_magic(obj) {\n const decoder = new TextDecoder('utf-8');\n const prefix = decoder.decode(obj.slice(0, MAGIC_LENGTH));\n const name = prefix.substring(0, 4);\n if (name === 'LIPS') {\n const m = prefix.match(/^(....).*([0-9]+)$/);\n if (m) {\n return {\n type: m[1],\n version: Number(m[2])\n };\n }\n }\n return {\n type: 'unknown'\n };\n}\n\n// -------------------------------------------------------------------------\nfunction serialize_bin(obj) {\n const magic = encode_magic();\n const payload = cbor.encode(obj);\n return merge_uint8_array(magic, pack(payload, { magic: false }));\n}\n\n// -------------------------------------------------------------------------\nfunction unserialize_bin(data) {\n const { type, version } = decode_magic(data);\n if (type === 'LIPS' && version === 1) {\n const arr = unpack(data.slice(MAGIC_LENGTH), { magic: false });\n return cbor.decode(arr);\n } else {\n throw new Error(`Invalid file format ${type}`);\n }\n}\n\n// -------------------------------------------------------------------------\nfunction execError(e) {\n console.error(e.message || e);\n if (e.code) {\n console.error(e.code.map((line, i) => `[${i + 1}]: ${line}`));\n }\n}\n\n// -------------------------------------------------------------------------\nfunction init() {\n var lips_mimes = ['text/x-lips', 'text/x-scheme'];\n var bootstrapped;\n function load(script) {\n return new Promise(function(resolve) {\n var src = script.getAttribute('src');\n if (src) {\n return fetch(src).then(res => res.text())\n .then(exec).then(resolve).catch((e) => {\n execError(e);\n resolve();\n });\n } else {\n return exec(script.innerHTML).then(resolve).catch((e) => {\n execError(e);\n resolve();\n });\n }\n });\n }\n\n function loop() {\n return new Promise(function(resolve) {\n var scripts = Array.from(document.querySelectorAll('script'));\n return (function loop() {\n var script = scripts.shift();\n if (!script) {\n resolve();\n } else {\n var type = script.getAttribute('type');\n if (lips_mimes.includes(type)) {\n var bootstrap_attr = script.getAttribute('bootstrap');\n if (!bootstrapped && typeof bootstrap_attr === 'string') {\n return bootstrap(bootstrap_attr).then(function() {\n return load(script, function(e) {\n console.error(e);\n });\n }).then(loop);\n } else {\n return load(script, function(e) {\n console.error(e);\n }).then(loop);\n }\n } else if (type && type.match(/lips|lisp/)) {\n console.warn('Expecting ' + lips_mimes.join(' or ') +\n ' found ' + type);\n }\n return loop();\n }\n })();\n });\n }\n if (!window.document) {\n return Promise.resolve();\n } else if (currentScript) {\n var script = currentScript;\n var bootstrap_attr = script.getAttribute('bootstrap');\n if (typeof bootstrap_attr === 'string') {\n return bootstrap(bootstrap_attr).then(function() {\n bootstrapped = true;\n return loop();\n });\n }\n }\n return loop();\n}\n// this can't be in init function, because it need to be in script context\nconst currentScript = typeof window !== 'undefined' &&\n window.document && document.currentScript;\n// -------------------------------------------------------------------------\nif (typeof window !== 'undefined') {\n contentLoaded(window, init);\n}\n// -------------------------------------------------------------------------\nvar banner = (function() {\n // Rollup tree-shaking is removing the variable if it's normal string because\n // obviously '{{DATE}}' == '{{' + 'DATE}}'; can be removed\n // but disablig Tree-shaking is adding lot of not used code so we use this\n // hack instead\n var date = LString('{{DATE}}').valueOf();\n var _date = date === '{{' + 'DATE}}' ? new Date() : new Date(date);\n var _format = x => x.toString().padStart(2, '0');\n var _year = _date.getFullYear();\n var _build = [\n _year,\n _format(_date.getMonth() + 1),\n _format(_date.getDate())\n ].join('-');\n var banner = `\n __ __ __\n / / \\\\ \\\\ _ _ ___ ___ \\\\ \\\\\n| | \\\\ \\\\ | | | || . \\\\/ __> | |\n| | > \\\\ | |_ | || _/\\\\__ \\\\ | |\n| | / ^ \\\\ |___||_||_| <___/ | |\n \\\\_\\\\ /_/ \\\\_\\\\ /_/\n\nLIPS Interpreter {{VER}} (${_build}) \nCopyright (c) 2018-${_year} Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n`.replace(/^.*\\n/, '');\n return banner;\n})();\n// -------------------------------------------------------------------------\n// to be used with string function when code is minified\n// -------------------------------------------------------------------------\nread_only(Ahead, '__class__', 'ahead');\nread_only(Pair, '__class__', 'pair');\nread_only(Nil, '__class__', 'nil');\nread_only(Pattern, '__class__', 'pattern');\nread_only(Formatter, '__class__', 'formatter');\nread_only(Macro, '__class__', 'macro');\nread_only(Syntax, '__class__', 'syntax');\nread_only(Environment, '__class__', 'environment');\nread_only(InputPort, '__class__', 'input-port');\nread_only(OutputPort, '__class__', 'output-port');\nread_only(BufferedOutputPort, '__class__', 'output-port');\nread_only(OutputStringPort, '__class__', 'output-string-port');\nread_only(InputStringPort, '__class__', 'input-string-port');\nread_only(InputFilePort, '__class__', 'input-file-port');\nread_only(OutputFilePort, '__class__', 'output-file-port');\nread_only(LipsError, '__class__', 'lips-error');\n[LNumber, LComplex, LRational, LFloat, LBigInteger].forEach(cls => {\n read_only(cls, '__class__', 'number');\n});\nread_only(LCharacter, '__class__', 'character');\nread_only(LSymbol, '__class__', 'symbol');\nread_only(LString, '__class__', 'string');\nread_only(QuotedPromise, '__class__', 'promise');\n// -------------------------------------------------------------------------\nconst lips = {\n version: '{{VER}}',\n banner,\n date: '{{DATE}}',\n exec,\n // unwrap async generator into Promise\n parse: compose(uniterate_async, parse),\n tokenize,\n evaluate,\n compile,\n\n serialize,\n unserialize,\n\n serialize_bin,\n unserialize_bin,\n\n bootstrap,\n\n Environment,\n env: user_env,\n\n Worker,\n\n Interpreter,\n balanced_parenthesis: balanced,\n balancedParenthesis: balanced,\n balanced,\n\n Macro,\n Syntax,\n Pair,\n Values,\n QuotedPromise,\n Error: LipsError,\n\n quote,\n\n InputPort,\n OutputPort,\n BufferedOutputPort,\n InputFilePort,\n OutputFilePort,\n InputStringPort,\n OutputStringPort,\n InputByteVectorPort,\n OutputByteVectorPort,\n InputBinaryFilePort,\n OutputBinaryFilePort,\n\n Formatter,\n Parser,\n Lexer,\n specials,\n repr,\n nil,\n eof,\n\n LSymbol,\n LNumber,\n LFloat,\n LComplex,\n LRational,\n LBigInteger,\n LCharacter,\n LString,\n rationalize\n};\n// so it work when used with webpack where it will be not global\nexport default lips;\nglobal_env.set('lips', lips);\n","export default {};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexport function resolve() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : '/';\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexport function normalize(path) {\n var isPathAbsolute = isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isPathAbsolute).join('/');\n\n if (!path && !isPathAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexport function isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\nexport function join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n}\n\n\n// path.relative(from, to)\n// posix version\nexport function relative(from, to) {\n from = resolve(from).substr(1);\n to = resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\nexport var sep = '/';\nexport var delimiter = ':';\n\nexport function dirname(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\nexport function basename(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n}\n\n\nexport function extname(path) {\n return splitPath(path)[3];\n}\nexport default {\n extname: extname,\n basename: basename,\n dirname: dirname,\n sep: sep,\n delimiter: delimiter,\n relative: relative,\n join: join,\n isAbsolute: isAbsolute,\n normalize: normalize,\n resolve: resolve\n};\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b' ?\n function (str, start, len) { return str.substr(start, len) } :\n function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n"],"names":["_isNativeReflectConstruct","isNativeReflectConstruct","setPrototypeOf","assertThisInitialized","_arrayLikeToArray","_unsupportedIterableToArray","arrayLikeToArray","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","nonIterableSpread","objectWithoutPropertiesLoose","iterableToArrayLimit","AwaitValue","undefined","require$$0","init","read","toString","global","position","addExtension","decodeAddExtension","encode_magic","merge_uint8_array","root","self","fetch","unfetch","fs","path","nodeRequire","BN","contentLoaded","win","fn","done","top","doc","document","documentElement","modern","addEventListener","add","rem","pre","e","type","readyState","call","poll","doScroll","setTimeout","frameElement","log","x","regex","literal","arguments","msg","is_debug","value","global_env","get","RegExp","test","console","is_promise","then","user_env","throwError","num_mnemicic_re","mnemonic","gen_rational_re","range","gen_complex_re","gen_integer_re","re_re","float_stre","complex_float_stre","float_re","make_complex_match_re","neg","fl","complex_list_re","result","forEach","radix","characters","ucs2decode","string","output","counter","length","charCodeAt","extra","push","character_symbols","Object","keys","join","char_sre_re","char_re","make_num_stre","ranges","map","m","make_type_re","complex_re","rational_re","int_re","int_bare_re","rational_bare_re","complex_bare_re","complex_bare_match_re","pre_num_parse_re","num_pre_parse","arg","parts","match","options","replace","toLowerCase","split","includes","inexact","exact","number","parse_rational","parse","num","LRational","LNumber","denom","valueOf","parse_integer","LFloat","parseInt","parse_character","char","ord","String","fromCodePoint","LCharacter","Error","parse_complex","parse_num","n","float","parse_float","toRational","NaN","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","bare_match","re","im","cmp","__type__","LComplex","is_int","parse_big_int","str","num_match","exponent","mantisa","digits","decimal_points","Math","abs","parseFloat","simple_number","factor","pow","mul","parse_string","_","hex","padStart","LString","JSON","parse_symbol","chars","t","r","chr","fromCharCode","LSymbol","parse_argument","constants","hasOwnProperty","is_atom_string","specials","names","is_symbol_string","string_re","escape_regex","special","Stack","data","prototype","item","pop","is_empty","tokens","lexer","Lexer","whitespace","token","peek","eof","skip","multiline_formatter","meta","rest","col","Thunk","cont","trampoline","args","unwind","apply","thunk","tokenize","trim","filter","strip_s_comments","s_count","s_start","remove_list","i","slice","reverse","begin","end","splice","isSymbol","name","constructor","list","__name__","Symbol","object","is","symbol","quote","symbol_to_string","is_gensym","serialize","isString","obj","gensym","count","with_props","sym","hidden_prop","QuotedPromise","promise","internal","pending","rejected","fulfilled","reason","v","read_only","hidden","is_function","err","defineProperty","enumerable","_promise","__pending__","pending_str","__rejected__","rejected_str","promise_all","Array","isArray","Promise","all","escape_quoted_promises","unescape_quoted_promises","array","escaped","Value","unescaped","LITERAL","SPLICE","SYMBOL","_specials","off","_events","on","trigger","remove","append","seq","is_special","is_builtin","builtin","is_literal","defined_specials","writable","arr","input","internals","configurable","set","_whitespace","_i","_line","_col","_newline","_state","_next","_token","_prev_char","__internal","line","offset","__input__","found","next_token","substring","len","read_rest","peek_char","skip_char","rule","prev_char","next_char","prev_re","next_re","state","match_or_null","start","loop","newline","rules","match_rule","next_state","symbol_rule","literal_rule","boundary","concat","p_re","n_re","comment","regex_class","character","bracket","b_symbol","b_comment","i_comment","l_datum","dot","_rules","_brackets","_symbol_rules","_cache","valid","sort","a","b","localeCompare","special_rules","reduce","acc","special_symbol","Parser","env","formatter","__env__","__lexer__","is_comment","_read_object","_formatter","_meta","_refs","head","nil","prev","is_close","cdr","Pair","cur","code","evaluate","error","reset","DatumReference","_resolve_object","is_plain_object","key","_resolve_pair","pair","car","builtin","extension","to_array","expr","Macro","fromArray","ref","match_datum_ref","ref_label","match_datum_label","is_open","read_list","read_value","parser","read_object","unpromise","ret","unpromise_array","unpromise_object","find","isFrozen","freeze","values","anyPromise","property","uniterate_async","matcher","dump","__doc__","trim_lines","is_lambda","previousSexp","sexp","outer","lineIndent","pattern","inner_match","get_first_match","patterns","p","not_symbol_match","match_next","next_pattern","next_input","glob","Pattern","flag","lips","inc","Formatter","__code__","defaults","indent","exceptions","shift","_options","assign","exceptions","_indent","exception_shift","settings","indexOf","regexes","s","entries","spaces","before_sexpr","last","balanced","exeption","next_tokens","Ahead","p_o","p_e","not_p","not_close","sexp_or_atom","symbols","identifiers","let_value","def_lambda_re","keywords_re","non_def","let_re","first_token_index","sub","ext","test_sexp","next","index","_spaces","format","j","lines","flatten","mutable","arrayTypeStr","nodes","node","Nil","to_object","deep","recur","typecheck","haveCycles","some","clone","visited","Map","has","__cycles__","last_pair","__data__","isNaN","is_native","fromPairs","fromObject","transform","repr","props","getOwnPropertyNames","array_methods","is_array_method","unbind","is_lips_function","user_repr","plain_object","iterator","asyncIterator","str_mapping","symbolize","getOwnPropertySymbols","o","get_props","has_own_function","function_to_string","is_native_function","__class__","instances","message","skip_cycles","pair_args","markCycles","stringify","cls","native_types","Values","InputPort","OutputPort","Environment","jQuery","is_prototype","is_iterator","seen_pairs","cycles","refs","visit","child","parents","detect","detect_thunk","mark_node","ref_nodes","__ref__","nested","prop","seq_compare","equal","y","__im__","__re__","__char__","same_atom","is_atom","source","truncate","trunc","ceil","floor","__fn__","defmacro","macro","__defmacro__","invoke","macro_expand","dynamic_scope","recur_guard","single","is_let_macro","is_procedure","proc_bindings","let_binding","is_macro","expand_let_binding","traverse","is_let","is_binding","bindings","second","Syntax","scope","lambda","define","let_macros","isNumber","__merge_env__","create","className","Parameter","extract_patterns","ellipsis_symbol","lists","expansion","pattern_names","ellipsis","list_len","code_len","IIIIII","rest_pattern","clear_gensyms","gensyms","replacement","transform_syntax","valid_symbol","n_type","first","rename","gensym_name","Boolean","transform_ellipsis_expr","caar","cadr","______","have_binding","biding","skip_nulls","every","get_names","disabled","is_spread","new_expr","bind","new_bind","is_null","is_syntax","is_undef","is_continuation","Continuation","is_callable","box","nan","map_object","descriptor","getOwnPropertyDescriptor","unbox","lips_type","patch_value","context","is_bound","bound","filter_fn_names","is_object_bound","lips_context","__context__","is_port","is_port_method","__method__","__prototype__","__lambda__","exluded_names","set_fn_length","fill","wrapper","Function","is_method","is_raw_lambda","native","let_macro","params","inherit","var_body_env","exec","promises","pararel","results","havePromises","guard_math_call","pipe","fns","f","compose","fold","limit_math_op","limit","curry","single_math_op","binary_math_op","reduce_math_op","init_args","more_args","from","__names__","__rev_names__","toUpperCase","__string__","ignore","_keys","wrap","lower","upper","force","_type","getType","types","parsable","sign","minus","BigInt","prefix","n_radix","LBigInteger","constant","complex","isComplex","rational","isRational","__value__","gcd","temp","isFloat","isNative","isBN","isInteger","isBigInteger","getArgsType","asType","isBigNumber","toNumber","matrix","bigint","integer","coerce","a_re","b_re","a_im","b_im","type_a","type_b","a_type","b_type","tmp","mapping","rev_mapping","op","_ops","_op","sqrt","exp_op","iabs","isOdd","isEven","complex_op","modulus","conjugate","div","calc","re_a","re_b","re_cmp","im_a","im_b","inf","im_str","zero_check","_minus","approxRatio","eps","gcde","_gcd","c","rationalize","simplest_rational2","fx","fy","d","__num__","__denom__","is_integer","a_denom","b_denom","a_num","b_num","_native","bn_op","text_port","_read","_with_parser","_with_init_parser","char_ready","__parser__","_make_defaults","read_line","read_char","read_string","typeErrorMessage","make_parser","close","write","_closed","flush","BufferedOutputPort","_write","_buffer","_fn","last_value","OutputStringPort","__buffer__","OutputFilePort","filename","fd","_fd","_fs","resolve","reject","__filename__","InputStringPort","InputByteVectorPort","bytevectors","binary_port","u8_ready","peek_u8","__index__","__vector__","read_u8","byte","read_u8_vector","OutputByteVectorPort","Uint8Array","_close_guard","write_u8","write_u8_vector","vector","InputFilePort","content","InputBinaryFilePort","OutputBinaryFilePort","Buffer","buffer","EOF","Interpreter","stderr","stdin","stdout","defaults_name","inter","internal_env","set_interaction_env","dynamic","LipsError","stack","parent","__docs__","__parent__","unset","newFrame","frame","parent_frame","callee","_lookup","merge","isUndefined","__values__","unshift","native_lambda","interaction","interaction_env","prompt","port","typecheck_text_port","pprint","print","display","help","cons","resolve_promises","third","slot","load","file","g_env","PATH","module_path","IS_BIN","run","unserialize_bin","unserialize","res","arrayBuffer","text","is_node","dirname","readFile","vars","body","eval_args","cond","new_code","obj_type","producer","consumer","maybe","__instance__","_args","makro_instance","get_identifiers","validate_identifiers","syntax","var_scope","lex_scope","new_env","quasiquote","is_struct","resolve_pair","eval_pair","unquoted_arr","quote_vector","unquote_cnt","max_unq","quote_object","unquote_splice","splices","Set","clear","items","is_list","nth","separator","search","instance","prepare_fn_args","valid_bare","catch_clause","finally_clause","l","pluck","typecheck_args","lcm","or","and","shr","shl","not","allPossibleCases","allCasesOfRest","combinations","input_arr","spec","repeat","reversseFind","dir","sep","nodeModuleFind","existsSync","node_specific","createRequire","import","moduleURL","URL","__dirname","pathname","__filename","basename","module","process","cwd","window","WorkerGlobalScope","got","expected","postfix","arg_type","self_evaluated","has_own_symbol","__proto__","toType","evaluate_args","evaluate_syntax","evaluate_macro","finalize","k","noop","__promise__","compile","exec_collect","collect_callback","exec_lambda","maching_pairs","open_tokens","brackets","closing_token","fworker","webkitURL","blob","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","Worker","createObjectURL","is_dev","version","bootstrap","url","std","worker","interpreter","response","id","send_result","postMessage","send_error","method","importScripts","rpc","_id","handler","removeEventListener","serialization_map","available_class","class_map","mangle_name","resolve_name","v0","flags","cbor","serializer","Class","deserialize","encoder","Encoder","cbor_serialization_map","tag","encode","decode","VERSION","TextEncoder","MAGIC_LENGTH","decode_magic","decoder","TextDecoder","serialize_bin","magic","payload","pack","unpack","execError","lips_mimes","bootstrapped","script","src","getAttribute","innerHTML","scripts","querySelectorAll","bootstrap_attr","warn","currentScript","banner","date","_date","Date","_format","_year","getFullYear","_build","getMonth","getDate","balanced_parenthesis","balancedParenthesis"],"mappings":"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"} \ No newline at end of file diff --git a/dist/lips.min.js b/dist/lips.min.js index b1449167..0ebcb914 100644 --- a/dist/lips.min.js +++ b/dist/lips.min.js @@ -31,7 +31,7 @@ * Copyright (c) 2014-present, Facebook, Inc. * released under MIT license * - * build: Fri, 10 Nov 2023 16:25:41 +0000 + * build: Tue, 14 Nov 2023 19:09:39 +0000 */ (function(e,t){typeof exports==="object"&&typeof module!=="undefined"?module.exports=t():typeof define==="function"&&define.amd?define(t):(e=typeof globalThis!=="undefined"?globalThis:e||self,e.lips=t())})(this,function(){"use strict";function i(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function o(e,t){o=Object.setPrototypeOf||function e(t,r){t.__proto__=r;return t};return o(e,t)}function n(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function p(e,t,r){if(n()){p=Reflect.construct}else{p=function e(t,r,n){var i=[null];i.push.apply(i,r);var u=Function.bind.apply(t,i);var a=new u;if(n)o(a,n.prototype);return a}}return p.apply(null,arguments)}function u(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function")}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:true,configurable:true}});Object.defineProperty(e,"prototype",{writable:false});if(t)o(e,t)}function _(e){"@babel/helpers - typeof";return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function a(e,t){if(t&&(_(t)==="object"||typeof t==="function")){return t}else if(t!==void 0){throw new TypeError("Derived constructors may only return object or undefined")}return i(e)}function c(e){c=Object.setPrototypeOf?Object.getPrototypeOf:function e(t){return t.__proto__||Object.getPrototypeOf(t)};return c(e)}function r(e){if(Array.isArray(e))return e}function t(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function f(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r=0)continue;r[i]=e[i]}return r}function F(e,t){if(e==null)return{};var r=x(e,t);var n,i;if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(i=0;i=0)continue;if(!Object.prototype.propertyIsEnumerable.call(e,n))continue;r[n]=e[n]}}return r}function k(e,t){var r=e==null?null:typeof Symbol!=="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r==null)return;var n=[];var i=true;var u=false;var a,o;try{for(r=r.call(e);!(i=(a=r.next()).done);i=true){n.push(a.value);if(t&&n.length===t)break}}catch(e){u=true;o=e}finally{try{if(!i&&r["return"]!=null)r["return"]()}finally{if(u)throw o}}return n}function j(e,t){return r(e)||k(e,t)||l(e,t)||d()}function I(e){this.wrapped=e}function P(e){return new I(e)}function N(u){var a,o;function e(n,i){return new Promise(function(e,t){var r={key:n,arg:i,resolve:e,reject:t,next:null};if(o){o=o.next=r}else{a=o=r;s(n,i)}})}function s(t,e){try{var r=u[t](e);var n=r.value;var i=n instanceof I;Promise.resolve(i?n.wrapped:n).then(function(e){if(i){s(t==="return"?"return":"next",e);return}c(r.done?"return":"normal",e)},function(e){s("throw",e)})}catch(e){c("throw",e)}}function c(e,t){switch(e){case"return":a.resolve({value:t,done:true});break;case"throw":a.reject(t);break;default:a.resolve({value:t,done:false});break}a=a.next;if(a){s(a.key,a.arg)}else{o=null}}this._invoke=e;if(typeof u["return"]!=="function"){this["return"]=undefined}}N.prototype[typeof Symbol==="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this};N.prototype.next=function(e){return this._invoke("next",e)};N.prototype["throw"]=function(e){return this._invoke("throw",e)};N.prototype["return"]=function(e){return this._invoke("return",e)};function e(e){return function(){return new N(e.apply(this,arguments))}}function R(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e["default"]:e}var T={exports:{}};var V={exports:{}};(function(e){var t=function(a){var e=Object.prototype;var f=e.hasOwnProperty;var s;var o=typeof Symbol==="function"?Symbol:{};var i=o.iterator||"@@iterator";var c=o.asyncIterator||"@@asyncIterator";var p=o.toStringTag||"@@toStringTag";function r(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true});return e[t]}try{r({},"")}catch(e){r=function(e,t,r){return e[t]=r}}function _(e,t,r,n){var i=t&&t.prototype instanceof g?t:g;var u=Object.create(i.prototype);var a=new O(n||[]);u._invoke=x(e,r,a);return u}a.wrap=_;function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}var v="suspendedStart";var y="suspendedYield";var m="executing";var l="completed";var h={};function g(){}function n(){}function t(){}var b={};r(b,i,function(){return this});var w=Object.getPrototypeOf;var D=w&&w(w(S([])));if(D&&D!==e&&f.call(D,i)){b=D}var u=t.prototype=g.prototype=Object.create(b);n.prototype=t;r(u,"constructor",t);r(t,"constructor",n);n.displayName=r(t,p,"GeneratorFunction");function E(e){["next","throw","return"].forEach(function(t){r(e,t,function(e){return this._invoke(t,e)})})}a.isGeneratorFunction=function(e){var t=typeof e==="function"&&e.constructor;return t?t===n||(t.displayName||t.name)==="GeneratorFunction":false};a.mark=function(e){if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}else{e.__proto__=t;r(e,p,"GeneratorFunction")}e.prototype=Object.create(u);return e};a.awrap=function(e){return{__await:e}};function A(o,s){function c(e,t,r,n){var i=d(o[e],o,t);if(i.type==="throw"){n(i.arg)}else{var u=i.arg;var a=u.value;if(a&&typeof a==="object"&&f.call(a,"__await")){return s.resolve(a.__await).then(function(e){c("next",e,r,n)},function(e){c("throw",e,r,n)})}return s.resolve(a).then(function(e){u.value=e;r(u)},function(e){return c("throw",e,r,n)})}}var t;function e(r,n){function e(){return new s(function(e,t){c(r,n,e,t)})}return t=t?t.then(e,e):e()}this._invoke=e}E(A.prototype);r(A.prototype,c,function(){return this});a.AsyncIterator=A;a.async=function(e,t,r,n,i){if(i===void 0)i=Promise;var u=new A(_(e,t,r,n),i);return a.isGeneratorFunction(t)?u:u.next().then(function(e){return e.done?e.value:u.next()})};function x(a,o,s){var c=v;return function e(t,r){if(c===m){throw new Error("Generator is already running")}if(c===l){if(t==="throw"){throw r}return B()}s.method=t;s.arg=r;while(true){var n=s.delegate;if(n){var i=F(n,s);if(i){if(i===h)continue;return i}}if(s.method==="next"){s.sent=s._sent=s.arg}else if(s.method==="throw"){if(c===v){c=l;throw s.arg}s.dispatchException(s.arg)}else if(s.method==="return"){s.abrupt("return",s.arg)}c=m;var u=d(a,o,s);if(u.type==="normal"){c=s.done?l:y;if(u.arg===h){continue}return{value:u.arg,done:s.done}}else if(u.type==="throw"){c=l;s.method="throw";s.arg=u.arg}}}}function F(e,t){var r=e.iterator[t.method];if(r===s){t.delegate=null;if(t.method==="throw"){if(e.iterator["return"]){t.method="return";t.arg=s;F(e,t);if(t.method==="throw"){return h}}t.method="throw";t.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var n=d(r,e.iterator,t.arg);if(n.type==="throw"){t.method="throw";t.arg=n.arg;t.delegate=null;return h}var i=n.arg;if(!i){t.method="throw";t.arg=new TypeError("iterator result is not an object");t.delegate=null;return h}if(i.done){t[e.resultName]=i.value;t.next=e.nextLoc;if(t.method!=="return"){t.method="next";t.arg=s}}else{return i}t.delegate=null;return h}E(u);r(u,p,"Generator");r(u,i,function(){return this});r(u,"toString",function(){return"[object Generator]"});function k(e){var t={tryLoc:e[0]};if(1 in e){t.catchLoc=e[1]}if(2 in e){t.finallyLoc=e[2];t.afterLoc=e[3]}this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal";delete t.arg;e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}];e.forEach(k,this);this.reset(true)}a.keys=function(r){var n=[];for(var e in r){n.push(e)}n.reverse();return function e(){while(n.length){var t=n.pop();if(t in r){e.value=t;e.done=false;return e}}e.done=true;return e}};function S(t){if(t){var e=t[i];if(e){return e.call(t)}if(typeof t.next==="function"){return t}if(!isNaN(t.length)){var r=-1,n=function e(){while(++r=0;--t){var i=this.tryEntries[t];var u=i.completion;if(i.tryLoc==="root"){return e("end")}if(i.tryLoc<=this.prev){var a=f.call(i,"catchLoc");var o=f.call(i,"finallyLoc");if(a&&o){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&f.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e){this.complete(r.completion,r.afterLoc);C(r);return h}}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(n.type==="throw"){var i=n.arg;C(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){this.delegate={iterator:S(e),resultName:t,nextLoc:r};if(this.method==="next"){this.arg=s}return h}};return a}(e.exports);try{regeneratorRuntime=t}catch(e){if(typeof globalThis==="object"){globalThis.regeneratorRuntime=t}else{Function("r","regeneratorRuntime = r")(t)}}})(V);(function(e){e.exports=V.exports})(T);var z=R(T.exports);var $=typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{};var J=[];var K=[];var G=typeof Uint8Array!=="undefined"?Uint8Array:Array;var H=false;function W(){H=true;var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var t=0,r=e.length;t0){throw new Error("Invalid string. Length must be a multiple of 4")}u=e[o-2]==="="?2:e[o-1]==="="?1:0;a=new G(o*3/4-u);n=u>0?o-4:o;var s=0;for(t=0,r=0;t>16&255;a[s++]=i>>8&255;a[s++]=i&255}if(u===2){i=K[e.charCodeAt(t)]<<2|K[e.charCodeAt(t+1)]>>4;a[s++]=i&255}else if(u===1){i=K[e.charCodeAt(t)]<<10|K[e.charCodeAt(t+1)]<<4|K[e.charCodeAt(t+2)]>>2;a[s++]=i>>8&255;a[s++]=i&255}return a}function Z(e){return J[e>>18&63]+J[e>>12&63]+J[e>>6&63]+J[e&63]}function X(e,t,r){var n;var i=[];for(var u=t;us?s:o+a))}if(n===1){t=e[r-1];i+=J[t>>2];i+=J[t<<4&63];i+="=="}else if(n===2){t=(e[r-2]<<8)+e[r-1];i+=J[t>>10];i+=J[t>>4&63];i+=J[t<<2&63];i+="="}u.push(i);return u.join("")}function te(e,t,r,n,f){var i,u;var l=f*8-n-1;var h=(1<>1;var a=-7;var o=r?f-1:0;var s=r?-1:1;var c=e[t+o];o+=s;i=c&(1<<-a)-1;c>>=-a;a+=l;for(;a>0;i=i*256+e[t+o],o+=s,a-=8){}u=i&(1<<-a)-1;i>>=-a;a+=n;for(;a>0;u=u*256+e[t+o],o+=s,a-=8){}if(i===0){i=1-p}else if(i===h){return u?NaN:(c?-1:1)*Infinity}else{u=u+Math.pow(2,n);i=i-p}return(c?-1:1)*u*Math.pow(2,i-n)}function re(e,t,f,l,r,h){var n,i,u;var a=h*8-r-1;var o=(1<>1;var p=r===23?Math.pow(2,-24)-Math.pow(2,-77):0;var c=l?0:h-1;var _=l?1:-1;var d=t<0||t===0&&1/t<0?1:0;t=Math.abs(t);if(isNaN(t)||t===Infinity){i=isNaN(t)?1:0;n=o}else{n=Math.floor(Math.log(t)/Math.LN2);if(t*(u=Math.pow(2,-n))<1){n--;u*=2}if(n+s>=1){t+=p/u}else{t+=p*Math.pow(2,1-s)}if(t*u>=2){n++;u/=2}if(n+s>=o){i=0;n=o}else if(n+s>=1){i=(t*u-1)*Math.pow(2,r);n=n+s}else{i=t*Math.pow(2,s-1)*Math.pow(2,r);n=0}}for(;r>=8;e[f+c]=i&255,c+=_,i/=256,r-=8){}n=n<0;e[f+c]=n&255,c+=_,n/=256,a-=8){}e[f+c-_]|=d*128}var ne={}.toString;var ie=Array.isArray||function(e){return ne.call(e)=="[object Array]"}; /*! @@ -83,5 +83,5 @@ * The rationalize algorithm is by Per M.A. Bothner, Alan Bawden and Marc Feeley. * source: Kawa, C-Gambit * - * Build time: Fri, 10 Nov 2023 16:25:41 +0000 - */var sn=["token"],cn=["stderr","stdin","stdout","command_line"];function fn(i){var u=ln();return function e(){var t=c(i),r;if(u){var n=c(this).constructor;r=Reflect.construct(t,arguments,n)}else{r=t.apply(this,arguments)}return a(this,r)}}function ln(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(e){return false}}function hn(t,e){var r=typeof Symbol!=="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=pn(t))||e&&t&&typeof t.length==="number"){if(r)t=r;var n=0;var i=function e(){};return{s:i,n:function e(){if(n>=t.length)return{done:true};return{done:false,value:t[n++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=true,a=false,o;return{s:function e(){r=r.call(t)},n:function e(){var t=r.next();u=t.done;return t},e:function e(t){a=true;o=t},f:function e(){try{if(!u&&r["return"]!=null)r["return"]()}finally{if(a)throw o}}}}function pn(e,t){if(!e)return;if(typeof e==="string")return _n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor)r=e.constructor.name;if(r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _n(e,t)}function _n(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r1&&arguments[1]!==undefined?arguments[1]:null;var n=arguments[1]===true;function t(e){if(!Cn()){return}var t=qo.get("repr")(e);if(r===null||r instanceof RegExp&&r.test(t)){console.log(qo.get("type")(e)+": "+t)}if(n){console.log(e)}}if(ra(e)){e.then(t)}else{t(e)}return e}function Cn(){return Yo&&Yo.get("DEBUG",{throwError:false})}function On(e){return e?"(?:#".concat(e,"(?:#[ie])?|#[ie]#").concat(e,")"):"(?:#[ie])?"}function Sn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+/").concat(t,"+")}function Bn(e,t){return"".concat(On(e),"(?:[+-]?(?:").concat(t,"+/").concat(t,"+|nan.0|inf.0|").concat(t,"+))?(?:[+-]i|[+-]?(?:").concat(t,"+/").concat(t,"+|").concat(t,"+|nan.0|inf.0)i)(?=[()[\\]\\s]|$)")}function jn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+")}var In=/^#\/((?:\\\/|[^/]|\[[^\]]*\/[^\]]*\])+)\/([gimyus]*)$/;var Pn="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\.)";var Nn="(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|".concat(Pn,"|[+-]?[0-9]+))?(?:").concat(Pn,"|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i");var Rn=new RegExp("^(#[ie])?".concat(Pn,"$"),"i");function Tn(e,t){var r=e==="x"?"(?!\\+|".concat(t,")"):"(?!\\.|".concat(t,")");var n="";if(e===""){n="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))"}return new RegExp("^((?:(?:".concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+(?!").concat(t,")|[+-]?").concat(t,"+)").concat(r,")?)(").concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+|[+-]?").concat(t,"+|[+-])i$"),"i")}var Ln=function(){var u={};[[10,"","[0-9]"],[16,"x","[0-9a-fA-F]"],[8,"o","[0-7]"],[2,"b","[01]"]].forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];u[r]=Tn(n,i)});return u}();var Un={alarm:"",backspace:"\b",delete:"",escape:"",newline:"\n",null:"\0",return:"\r",space:" ",tab:"\t",dle:"",soh:"",dc1:"",stx:"",dc2:"",etx:"",dc3:"",eot:"",dc4:"",enq:"",nak:"",ack:"",syn:"",bel:"",etb:"",bs:"\b",can:"",ht:"\t",em:"",lf:"\n",sub:"",vt:"\v",esc:"",ff:"\f",fs:"",cr:"\r",gs:"",so:"",rs:"",si:"",us:"",del:""};function Mn(e){var t=[];var r=0;var n=e.length;while(r=55296&&i<=56319&&r1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);var n=r.number.split("/");var i=fo({num:C([n[0],r.radix||t]),denom:C([n[1],r.radix||t])});if(r.inexact){return i.valueOf()}else{return i}}function ri(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);if(r.inexact){return uo(parseInt(r.number,r.radix||t))}return C([r.number,r.radix||t])}function ni(e){var t=e.match(/#\\x([0-9a-f]+)$/i);var r;if(t){var n=parseInt(t[1],16);r=String.fromCodePoint(n)}else{t=e.match(/#\\(.+)$/);if(t){r=t[1]}}if(r){return za(r)}throw new Error("Parse: invalid character")}function ii(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;function t(e){var t;if(e==="+"){t=C(1)}else if(e==="-"){t=C(-1)}else if(e.match(Hn)){t=C([e,i])}else if(e.match(Wn)){var r=e.split("/");t=fo({num:C([r[0],i]),denom:C([r[1],i])})}else if(e.match(Rn)){var n=oi(e);if(u.exact){return n.toRational()}return n}else if(e.match(/nan.0$/)){return C(NaN)}else if(e.match(/inf.0$/)){if(e[0]==="-"){return C(Number.NEGATIVE_INFINITY)}return C(Number.POSITIVE_INFINITY)}else{throw new Error("Internal Parser Error")}if(u.inexact){return uo(t.valueOf())}return t}var u=ei(e);i=u.radix||i;var r;var n=u.number.match(Zn);if(i!==10&&n){r=n}else{r=u.number.match(Ln[i])}var a,o;o=t(r[2]);if(r[1]){a=t(r[1])}else{a=C(0)}if(o.cmp(0)===0&&o.__type__==="bigint"){return a}return io({im:o,re:a})}function ui(e){return parseInt(e.toString(),10)===e}function ai(e){var t=e.match(/^(([-+]?[0-9]*)(?:\.([0-9]+))?)e([-+]?[0-9]+)/i);if(t){var r=parseInt(t[4],10);var n;var i=t[1].replace(/[-+]?([0-9]*)\..+$/,"$1").length;var u=t[3]&&t[3].length;if(i0){return C(u).mul(o)}}}r=uo(r);if(t.exact){return r.toRational()}return r}function si(e){e=e.replace(/\\x([0-9a-f]+);/gi,function(e,t){return"\\u"+t.padStart(4,"0")}).replace(/\n/g,"\\n");var t=e.match(/(\\*)(\\x[0-9A-F])/i);if(t&&t[1].length%2===0){throw new Error("Invalid string literal, unclosed ".concat(t[2]))}try{return $a(JSON.parse(e))}catch(e){var r=e.message.replace(/in JSON /,"").replace(/.*Error: /,"");throw new Error("Invalid string literal: ".concat(r))}}function ci(e){if(e.match(/^\|.*\|$/)){e=e.replace(/(^\|)|(\|$)/g,"");var r={t:"\t",r:"\r",n:"\n"};e=e.replace(/\\(x[^;]+);/g,function(e,t){return String.fromCharCode(parseInt("0"+t,16))}).replace(/\\(.)/g,function(e,t){return r[t]||t})}return new L(e)}function fi(e){if(Mo.hasOwnProperty(e)){return Mo[e]}if(e.match(/^"[\s\S]*"$/)){return si(e)}else if(e[0]==="#"){var t=e.match(In);if(t){return new RegExp(t[1],t[2])}else if(e.match(Vn)){return ni(e)}var r=e.match(/#\\(.+)/);if(r&&Mn(r[1]).length===1){return ni(e)}}if(e.match(/[0-9a-f]|[+-]i/i)){if(e.match(Gn)){return ri(e)}else if(e.match(Rn)){return oi(e)}else if(e.match(Kn)){return ti(e)}else if(e.match(Jn)){return ii(e)}}if(e.match(/^#[iexobd]/)){throw new Error("Invalid numeric constant: "+e)}return ci(e)}function li(e){return!(["(",")","[","]"].includes(e)||Bi.names().includes(e))}function hi(e){return li(e)&&!(e.match(In)||e.match(/^"[\s\S]*"$/)||e.match(Gn)||e.match(Rn)||e.match(Jn)||e.match(Kn)||e.match(Vn)||["#t","#f","nil","true","false"].includes(e))}var pi=/"(?:\\[\S\s]|[^"])*"?/g;function _i(e){if(typeof e==="string"){var t=/([-\\^$[\]()+{}?*.|])/g;return e.replace(t,"\\$1")}return e}function di(){this.data=[]}di.prototype.push=function(e){this.data.push(e)};di.prototype.top=function(){return this.data[this.data.length-1]};di.prototype.pop=function(){return this.data.pop()};di.prototype.is_empty=function(){return!this.data.length};function vi(e){if(e instanceof $a){e=e.valueOf()}var t=new s(e,{whitespace:true});var r=[];while(true){var n=t.peek(true);if(n===Fo){break}r.push(n);t.skip()}return r}function yi(e){var t=e.token,r=F(e,sn);if(t.match(/^"[\s\S]*"$/)&&t.match(/\n/)){var n=new RegExp("^ {1,"+(e.col+1)+"}","mg");t=t.replace(n,"")}return vn({token:t},r)}function mi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){};this.fn=e;this.cont=t}mi.prototype.toString=function(){return"#"};function gi(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof $a){e=e.toString()}if(t){return vi(e)}else{var r=vi(e).map(function(e){if(e.token==="#\\ "){return e.token}return e.token.trim()}).filter(function(e){return e&&!e.match(/^;/)&&!e.match(/^#\|[\s\S]*\|#$/)});return Di(r)}}function Di(e){var t=0;var r=null;var n=[];for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:null;if(e instanceof L){if(e.is_gensym()){return e}e=e.valueOf()}if(xi(e)){return L(e)}if(e!==null){return r(e,Symbol("#:".concat(e)))}t++;return r(t,Symbol("#:g".concat(t)))}}();function ki(e){var r=this;var n={pending:true,rejected:false,fulfilled:false,reason:undefined,type:undefined};e=e.then(function(e){n.type=us(e);n.fulfilled=true;n.pending=false;return e});$i(this,"_promise",e,{hidden:true});if(Xu(e["catch"])){e=e["catch"](function(e){n.rejected=true;n.pending=false;n.reason=e})}Object.keys(n).forEach(function(t){Object.defineProperty(r,"__".concat(t,"__"),{enumerable:true,get:function e(){return n[t]}})});$i(this,"__promise__",e);this.then=false}ki.prototype.then=function(e){return new ki(this.valueOf().then(e))};ki.prototype["catch"]=function(e){return new ki(this.valueOf()["catch"](e))};ki.prototype.valueOf=function(){if(!this._promise){throw new Error("QuotedPromise: invalid promise created")}return this._promise};ki.prototype.toString=function(){if(this.__pending__){return ki.pending_str}if(this.__rejected__){return ki.rejected_str}return"#")};ki.pending_str="#";ki.rejected_str="#";function Ci(e){if(Array.isArray(e)){return Promise.all(Oi(e)).then(Si)}return e}function Oi(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof ki){t[r]=new Bo(n)}else{t[r]=n}}return t}function Si(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof Bo){t[r]=n.valueOf()}else{t[r]=n}}return t}var Bi={LITERAL:Symbol["for"]("literal"),SPLICE:Symbol["for"]("splice"),SYMBOL:Symbol["for"]("symbol"),names:function e(){return Object.keys(this.__list__)},type:function e(t){return this.get(t).type},get:function e(t){return this.__list__[t]},off:function e(t){var r=this;var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(Array.isArray(t)){t.forEach(function(e){return r.off(e,n)})}else if(n===null){delete this.__events__[t]}else{this.__events__=this.__events__.filter(function(e){return e!==n})}},on:function e(t,r){var n=this;if(Array.isArray(t)){t.forEach(function(e){return n.on(e,r)})}else if(!this.__events__[t]){this.__events__[t]=[r]}else{this.__events__[t].push(r)}},trigger:function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i",new L("quote-promise"),Bi.LITERAL]];var Ri=Ni.map(function(e){return e[0]});Object.freeze(Ri);Object.defineProperty(Bi,"__builtins__",{writable:false,value:Ri});Ni.forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];Bi.append(r,n,i)});var s=function(){function p(e){var t=this;var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.whitespace,i=n===void 0?false:n;D(this,p);$i(this,"__input__",e.replace(/\r/g,""));var u={};["_i","_whitespace","_col","_newline","_line","_state","_next","_token","_prev_char"].forEach(function(r){Object.defineProperty(t,r,{configurable:false,enumerable:false,get:function e(){return u[r]},set:function e(t){u[r]=t}})});this._whitespace=i;this._i=this._line=this._col=this._newline=0;this._state=this._next=this._token=null;this._prev_char=""}A(p,[{key:"get",value:function e(t){return this.__internal[t]}},{key:"set",value:function e(t,r){this.__internal[t]=r}},{key:"token",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(t){var r=this._line;if(this._whitespace&&this._token==="\n"){--r}return{token:this._token,col:this._col,offset:this._i,line:r}}return this._token}},{key:"peek",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this._i>=this.__input__.length){return Fo}if(this._token){return this.token(t)}var r=this.next_token();if(r){this._token=this.__input__.substring(this._i,this._next);return this.token(t)}return Fo}},{key:"skip",value:function e(){if(this._next!==null){this._token=null;this._i=this._next}}},{key:"read_line",value:function e(){var t=this.__input__.length;if(this._i>=t){return Fo}for(var r=this._i;r=r){return Fo}if(t+this._i>=r){return this.read_rest()}var n=this._i+t;var i=this.__input__.substring(this._i,n);var u=i.match(/\n/g);if(u){this._line+=u.length}this._i=n;return i}},{key:"peek_char",value:function e(){if(this._i>=this.__input__.length){return Fo}return za(this.__input__[this._i])}},{key:"read_char",value:function e(){var t=this.peek_char();this.skip_char();return t}},{key:"skip_char",value:function e(){if(this._i1&&arguments[1]!==undefined?arguments[1]:{},r=t.prev_char,n=t["char"],i=t.next_char;var u=j(e,4),a=u[0],o=u[1],s=u[2],f=u[3];if(e.length!==5){throw new Error("Lexer: Invald rule of length ".concat(e.length))}if(!n.match(a)){return false}if(!Ti(o,r)){return false}if(!Ti(s,i)){return false}if(f!==this._state){return false}return true}},{key:"next_token",value:function f(){if(this._i>=this.__input__.length){return false}var e=true;e:for(var t=this._i,r=this.__input__.length;t2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;if(t.length===0){throw new Error("Lexer: invalid literal rule")}if(t.length===1){return[[t,n,i,null,null]]}var u=[];for(var a=0,o=t.length;a1&&arguments[1]!==undefined?arguments[1]:{},r=t.env,n=t.meta,i=n===void 0?false:n,u=t.formatter,a=u===void 0?yi:u;D(this,o);if(e instanceof $a){e=e.toString()}$i(this,"_formatter",a,{hidden:true});$i(this,"__lexer__",new s(e));$i(this,"__env__",r);$i(this,"_meta",i,{hidden:true});$i(this,"_refs",[],{hidden:true});$i(this,"_state",{parentheses:0},{hidden:true})}A(o,[{key:"resolve",value:function e(t){return this.__env__&&this.__env__.get(t,{throwError:false})}},{key:"peek",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=this.__lexer__.peek(true);if(!(r===Fo)){t.next=4;break}return t.abrupt("return",Fo);case 4:if(!this.is_comment(r.token)){t.next=7;break}this.skip();return t.abrupt("continue",0);case 7:if(!(r.token==="#;")){t.next=14;break}this.skip();if(!(this.__lexer__.peek()===Fo)){t.next=11;break}throw new Error("Lexer: syntax error eof found after comment");case 11:t.next=13;return this._read_object();case 13:return t.abrupt("continue",0);case 14:return t.abrupt("break",17);case 17:r=this._formatter(r);if(!this._meta){t.next=20;break}return t.abrupt("return",r);case 20:return t.abrupt("return",r.token);case 21:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"reset",value:function e(){this._refs.length=0}},{key:"skip",value:function e(){this.__lexer__.skip()}},{key:"read",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;this.skip();return t.abrupt("return",r);case 5:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"match_datum_label",value:function e(t){var r=t.match(/^#([0-9]+)=$/);return r&&r[1]}},{key:"match_datum_ref",value:function e(t){var r=t.match(/^#([0-9]+)#$/);return r&&r[1]}},{key:"is_open",value:function e(t){var r=["(","["].includes(t);if(r){this._state.parentheses++}return r}},{key:"is_close",value:function e(t){var r=[")","]"].includes(t);if(r){this._state.parentheses--}return r}},{key:"read_list",value:function(){var e=B(z.mark(function e(){var r,n,i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=U,n=r;case 1:t.next=4;return this.peek();case 4:i=t.sent;if(!(i===Fo)){t.next=7;break}return t.abrupt("break",27);case 7:if(!this.is_close(i)){t.next=10;break}this.skip();return t.abrupt("break",27);case 10:if(!(i==="."&&r!==U)){t.next=17;break}this.skip();t.next=14;return this._read_object();case 14:n.cdr=t.sent;t.next=25;break;case 17:t.t0=M;t.next=20;return this._read_object();case 20:t.t1=t.sent;t.t2=U;u=new t.t0(t.t1,t.t2);if(r===U){r=u}else{n.cdr=u}n=u;case 25:t.next=1;break;case 27:return t.abrupt("return",r);case 28:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"read_value",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.read();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}throw new Error("Parser: Expected token eof found");case 5:return t.abrupt("return",fi(r));case 6:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"is_comment",value:function e(t){return t.match(/^;/)||t.match(/^#\|/)&&t.match(/\|#$/)}},{key:"evaluate",value:function e(t){return _s(t,{env:this.__env__,error:function e(t){throw t}})}},{key:"read_object",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:this.reset();t.next=3;return this._read_object();case 3:r=t.sent;if(r instanceof Ui){r=r.valueOf()}if(!this._refs.length){t.next=7;break}return t.abrupt("return",this._resolve_object(r));case 7:return t.abrupt("return",r);case 8:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"ballanced",value:function e(){return this._state.parentheses===0}},{key:"ballancing_error",value:function e(t){var r=this._state.parentheses;var n=new Error("Parser: expected parenthesis but eof found");var i=new RegExp("\\){".concat(r,"}$"));n.__code__=[t.toString().replace(i,"")];throw n}},{key:"_resolve_object",value:function(){var t=B(z.mark(function e(r){var n=this;var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!Array.isArray(r)){t.next=2;break}return t.abrupt("return",r.map(function(e){return n._resolve_object(e)}));case 2:if(!wu(r)){t.next=6;break}i={};Object.keys(r).forEach(function(e){i[e]=n._resolve_object(r[e])});return t.abrupt("return",i);case 6:if(!(r instanceof M)){t.next=8;break}return t.abrupt("return",this._resolve_pair(r));case 8:return t.abrupt("return",r);case 9:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_resolve_pair",value:function(){var t=B(z.mark(function e(r){return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M)){t.next=15;break}if(!(r.car instanceof Ui)){t.next=7;break}t.next=4;return r.car.valueOf();case 4:r.car=t.sent;t.next=8;break;case 7:this._resolve_pair(r.car);case 8:if(!(r.cdr instanceof Ui)){t.next=14;break}t.next=11;return r.cdr.valueOf();case 11:r.cdr=t.sent;t.next=15;break;case 14:this._resolve_pair(r.cdr);case 15:return t.abrupt("return",r);case 16:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_read_object",value:function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}return t.abrupt("return",r);case 5:if(!ji(r)){t.next=39;break}n=Bi.get(r);i=Ii(r);this.skip();t.next=11;return this._read_object();case 11:a=t.sent;if(i){t.next=26;break}o=this.__env__.get(n.symbol);if(!(typeof o==="function")){t.next=26;break}if(!Pi(r)){t.next=19;break}return t.abrupt("return",o.call(this.__env__,a));case 19:if(!(a===U)){t.next=23;break}return t.abrupt("return",o.apply(this.__env__));case 23:if(!(a instanceof M)){t.next=25;break}return t.abrupt("return",o.apply(this.__env__,a.to_array(false)));case 25:throw new Error("Parse Error: Invalid parser extension "+"invocation ".concat(n.symbol));case 26:if(Pi(r)){u=new M(n.symbol,new M(a,U))}else{u=new M(n.symbol,a)}if(!i){t.next=29;break}return t.abrupt("return",u);case 29:if(!(o instanceof Vu)){t.next=38;break}t.next=32;return this.evaluate(u);case 32:s=t.sent;if(!(s instanceof M||s instanceof L)){t.next=35;break}return t.abrupt("return",M.fromArray([L("quote"),s]));case 35:return t.abrupt("return",s);case 38:throw new Error("Parse Error: invlid parser extension: "+n.symbol);case 39:c=this.match_datum_ref(r);if(!(c!==null)){t.next=45;break}this.skip();if(!this._refs[c]){t.next=44;break}return t.abrupt("return",new Ui(c,this._refs[c]));case 44:throw new Error("Parse Error: invalid datum label #".concat(c,"#"));case 45:f=this.match_datum_label(r);if(!(f!==null)){t.next=52;break}this.skip();this._refs[f]=this._read_object();return t.abrupt("return",this._refs[f]);case 52:if(!this.is_open(r)){t.next=57;break}this.skip();return t.abrupt("return",this.read_list());case 57:return t.abrupt("return",this.read_value());case 58:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}]);return o}();var Ui=function(){function r(e,t){D(this,r);this.name=e;this.data=t}A(r,[{key:"valueOf",value:function e(){return this.data}}]);return r}();function Mi(e,t){return qi.apply(this,arguments)}function qi(){qi=e(z.mark(function e(r,n){var i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!n){if(qo){n=qo.get("**interaction-environment**",{throwError:false})}else{n=Yo}}i=new Li(r,{env:n});case 2:t.next=5;return P(i.read_object());case 5:u=t.sent;if(!i.ballanced()){i.ballancing_error(u)}if(!(u===Fo)){t.next=9;break}return t.abrupt("break",13);case 9:t.next=11;return u;case 11:t.next=2;break;case 13:case"end":return t.stop()}}},e)}));return qi.apply(this,arguments)}function Yi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(e){return e};var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(ra(e)){var n=e.then(t);if(r===null){return n}else{return n["catch"](r)}}if(e instanceof Array){return Vi(e,t,r)}if(wu(e)){return zi(e,t,r)}return t(e)}function Vi(t,r,e){if(t.find(ra)){return Yi(Ci(t),function(e){if(Object.isFrozen(t)){Object.freeze(e)}return r(e)},e)}return r(t)}function zi(t,e,r){var i=Object.keys(t);var n=[],u=[];var a=i.length;while(a--){var o=i[a];var s=t[o];n[a]=s;if(ra(s)){u.push(s)}}if(u.length){return Yi(Ci(n),function(e){var n={};e.forEach(function(e,t){var r=i[t];n[r]=e});if(Object.isFrozen(t)){Object.freeze(n)}return n},r)}return e(t)}function $i(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=n.hidden,u=i===void 0?false:i;Object.defineProperty(e,t,{value:r,configurable:true,enumerable:!u})}function Ji(e){return Ki.apply(this,arguments)}function Ki(){Ki=B(z.mark(function e(r){var n,i,u,a,o,s,c;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=[];i=false;u=false;t.prev=3;o=yn(r);case 5:t.next=7;return o.next();case 7:if(!(i=!(s=t.sent).done)){t.next=13;break}c=s.value;n.push(c);case 10:i=false;t.next=5;break;case 13:t.next=19;break;case 15:t.prev=15;t.t0=t["catch"](3);u=true;a=t.t0;case 19:t.prev=19;t.prev=20;if(!(i&&o["return"]!=null)){t.next=24;break}t.next=24;return o["return"]();case 24:t.prev=24;if(!u){t.next=27;break}throw a;case 27:return t.finish(24);case 28:return t.finish(19);case 29:return t.abrupt("return",n);case 30:case"end":return t.stop()}}},e,null,[[3,15,19,29],[20,,24,28]])}));return Ki.apply(this,arguments)}function Gi(e,t){if(t instanceof RegExp){return function(e){return String(e).match(t)}}else if(Xu(t)){return t}throw new Error("Invalid matcher")}function y(e,t,r,n){if(typeof e!=="string"){t=arguments[0];r=arguments[1];n=arguments[2];e=null}if(r){if(n){t.__doc__=r}else{t.__doc__=Hi(r)}}if(e){t.__name__=e}else if(t.name&&!Ca(t)){t.__name__=t.name}return t}function Hi(e){return e.split("\n").map(function(e){return e.trim()}).join("\n")}function Wi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var r=e.length;if(t<=0){throw Error("previousSexp: Invalid argument sexp = ".concat(t))}e:while(t--&&r>=0){var n=1;while(n>0){var i=e[--r];if(!i){break e}if(i==="("||i.token==="("){n--}else if(i===")"||i.token===")"){n++}}r--}return e.slice(r+1)}function Qi(e){if(!e||!e.length){return 0}var t=e.length;if(e[t-1].token==="\n"){return 0}while(--t){if(e[t].token==="\n"){var r=(e[t+1]||{}).token;if(r){return r.length}}}return 0}function Zi(e,t){return f(e,t)===t.length;function f(r,n){function e(e,t){var r=hn(e),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;var u=f(i,t);if(u!==-1){return u}}}catch(e){r.e(e)}finally{r.f()}return-1}function t(){return r[u]===Symbol["for"]("symbol")&&!hi(n[o])}function i(){var e=r[u+1];var t=n[o+1];if(e!==undefined&&t!==undefined){return f([e],[t])}}var u=0;var a={};for(var o=0;o0){continue}}else if(t()){return-1}}else if(r[u]instanceof Array){var c=f(r[u],n.slice(o));if(c===-1||c+o>n.length){return-1}o+=c-1;u++;continue}else{return-1}u++}if(r.length!==u){return-1}return n.length}}function Xi(e){this.__code__=e.replace(/\r/g,"")}Xi.defaults={offset:0,indent:2,exceptions:{specials:[/^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\*)?)$/],shift:{1:["&","#"]}}};Xi.match=Zi;Xi.prototype._options=function e(t){var r=Xi.defaults;if(typeof t==="undefined"){return Object.assign({},r)}var n=t&&t.exceptions||{};var i=n.specials||[];var u=n.shift||{1:[]};return vn(vn(vn({},r),t),{},{exceptions:{specials:[].concat(q(r.exceptions.specials),q(i)),shift:vn(vn({},u),{},{1:[].concat(q(r.exceptions.shift[1]),q(u[1]))})}})};Xi.prototype.indent=function e(t){var r=wi(this.__code__,true);return this._indent(r,t)};Xi.exception_shift=function(u,e){function t(e){if(!e.length){return false}if(e.indexOf(u)!==-1){return true}else{var t=e.filter(function(e){return e instanceof RegExp});if(!t.length){return false}var r=hn(t),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;if(u.match(i)){return true}}}catch(e){r.e(e)}finally{r.f()}}return false}if(t(e.exceptions.specials)){return e.indent}var r=e.exceptions.shift;for(var n=0,i=Object.entries(r);n0){t.offset=0}if(n.toString()===e.toString()&&ms(n)){return t.offset+n[0].col}else if(n.length===1){return t.offset+n[0].col+1}else{var u=-1;if(i){var a=Xi.exception_shift(i.token,t);if(a!==-1){u=a}}if(u===-1){u=Xi.exception_shift(n[1].token,t)}if(u!==-1){return t.offset+n[0].col+u}else if(n[0].line3&&n[1].line===n[3].line){if(n[1].token==="("||n[1].token==="["){return t.offset+n[1].col}return t.offset+n[3].col}else if(n[0].line===n[1].line){return t.offset+t.indent+n[0].col}else{var o=n.slice(2);for(var s=0;s")};eu.prototype.match=function(e){return e.match(this.pattern)};function tu(){for(var e=arguments.length,t=new Array(e),r=0;r")};Xi.Pattern=tu;Xi.Ahead=eu;var ru=/^[[(]$/;var nu=/^[\])]$/;var iu=/[^()[\]]/;var uu=new eu(/[^)\]]/);var au=Symbol["for"]("*");var ou=new tu([ru,au,nu],[iu],"+");var su=new tu([ru,au,nu],"+");var cu=new tu([Symbol["for"]("symbol")],"?");var fu=new tu([Symbol["for"]("symbol")],"*");var lu=[ru,fu,nu];var hu=new tu([ru,Symbol["for"]("symbol"),au,nu],"+");var pu=vu("define","lambda","define-macro","syntax-rules");var _u=/^(?!.*\b(?:[()[\]]|define(?:-macro)?|let(?:\*|rec|-env|-syntax|)?|lambda|syntax-rules)\b).*$/;var du=/^(?:#:)?(let(?:\*|rec|-env|-syntax)?)$/;function vu(){for(var e=arguments.length,t=new Array(e),r=0;r0&&!i[e]){i[e]=Wi(n,e)}});var u=hn(t),p;try{for(u.s();!(p=u.n()).done;){var a=j(p.value,3),_=a[0],o=a[1],s=a[2];o=o.valueOf();var d=o>0?i[o]:n;var v=d.filter(function(e){return e.trim()&&!ji(e)});var y=h(d);var m=Zi(_,v);var g=e.slice(r).find(function(e){return e.trim()&&!ji(e)});if(m&&(s instanceof eu&&s.match(g)||!s)){var c=r-y;if(e[c]!=="\n"){if(!e[c].trim()){e[c]="\n"}else{e.splice(c,0,"\n");r++}}r+=y;continue e}}}catch(e){u.e(e)}finally{u.f()}}this.__code__=e.join("");return this};Xi.prototype._spaces=function(e){return new Array(e+1).join(" ")};Xi.prototype.format=function c(e){var t=this.__code__.replace(/[ \t]*\n[ \t]*/g,"\n ");var r=wi(t,true);var n=this._options(e);var i=0;var u=0;for(var a=0;a0&&arguments[0]!==undefined?arguments[0]:true;var n=new Map;function i(e){if(e instanceof M){if(n.has(e)){return n.get(e)}var t=new M;n.set(e,t);if(r){t.car=i(e.car)}else{t.car=e.car}t.cdr=i(e.cdr);t[ga]=e[ga];return t}return e}return i(this)};M.prototype.last_pair=function(){var e=this;while(true){if(e.cdr===U){return e}e=e.cdr}};M.prototype.to_array=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var t=[];if(this.car instanceof M){if(e){t.push(this.car.to_array())}else{t.push(this.car)}}else{t.push(this.car.valueOf())}if(this.cdr instanceof M){t=t.concat(this.cdr.to_array())}return t};M.fromArray=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof M||r&&e instanceof Array&&e[ya]){return e}if(t===false){var n=U;for(var i=e.length;i--;){n=new M(e[i],n)}return n}if(e.length&&!(e instanceof Array)){e=q(e)}var u=U;var a=e.length;while(a--){var o=e[a];if(o instanceof Array){o=M.fromArray(o,t,r)}else if(typeof o==="string"){o=$a(o)}else if(typeof o==="number"&&!Number.isNaN(o)){o=C(o)}u=new M(o,u)}return u};M.prototype.to_object=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var t=this;var r={};while(true){if(t instanceof M&&t.car instanceof M){var n=t.car;var i=n.car;if(i instanceof L){i=i.__name__}if(i instanceof $a){i=i.valueOf()}var u=n.cdr;if(u instanceof M){u=u.to_object(e)}if(ts(u)){if(!e){u=u.valueOf()}}r[i]=u;t=t.cdr}else{break}}return r};M.fromPairs=function(e){return e.reduce(function(e,t){return new M(new M(new L(t[0]),t[1]),e)},U)};M.fromObject=function(t){var e=Object.keys(t).map(function(e){return[e,t[e]]});return M.fromPairs(e)};M.prototype.reduce=function(e){var t=this;var r=U;while(true){if(t!==U){r=e(r,t.car);t=t.cdr}else{break}}return r};M.prototype.reverse=function(){if(this.haveCycles()){throw new Error("You can't reverse list that have cycles")}var e=this;var t=U;while(e!==U){var r=e.cdr;e.cdr=t;t=e;e=r}return t};M.prototype.transform=function(n){function i(e){if(e instanceof M){if(e.replace){delete e.replace;return e}var t=n(e.car);if(t instanceof M){t=i(t)}var r=n(e.cdr);if(r instanceof M){r=i(r)}return new M(t,r)}return e}return i(this)};M.prototype.map=function(e){if(typeof this.car!=="undefined"){return new M(e(this.car),this.cdr===U?U:this.cdr.map(e))}else{return U}};var bu=new Map;function wu(e){return e&&_(e)==="object"&&e.constructor===Object}var Du=Object.getOwnPropertyNames(Array.prototype);var Eu=[];Du.forEach(function(e){Eu.push(Array[e],Array.prototype[e])});function Au(e){e=sa(e);return Eu.includes(e)}function xu(e){return Xu(e)&&(Ca(e)||e.__doc__)}function Fu(r){var e=r.constructor||Object;var n=wu(r);var i=Xu(r[Symbol.asyncIterator])||Xu(r[Symbol.iterator]);var u;if(bu.has(e)){u=bu.get(e)}else{bu.forEach(function(e,t){t=sa(t);if(r.constructor===t&&(t===Object&&n&&!i||t!==Object)){u=e}})}return u}var ku=new Map;[[true,"#t"],[false,"#f"],[null,"null"],[undefined,"#"]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ku.set(r,n)});function Cu(r){if(r&&_(r)==="object"){var n={};var e=Object.getOwnPropertySymbols(r);e.forEach(function(e){var t=e.toString().replace(/Symbol\(([^)]+)\)/,"$1");n[t]=Pu(r[e])});var t=Object.getOwnPropertyNames(r);t.forEach(function(e){var t=r[e];if(t&&_(t)==="object"&&t.constructor===Object){n[e]=Cu(t)}else{n[e]=Pu(t)}});return n}return r}function Ou(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function Su(e,t){return e.hasOwnProperty(t)&&Xu(e.toString)}function Bu(e){if(Ba(e)){return"#"}var t=e.prototype&&e.prototype.constructor;if(Xu(t)&&Ca(t)){if(e[ba]&&t.hasOwnProperty("__name__")){var r=t.__name__;if($a.isString(r)){r=r.toString();return"#")}return"#"}}if(e.hasOwnProperty("__name__")){var n=e.__name__;if(_(n)==="symbol"){n=Ai(n)}if(typeof n==="string"){return"#")}}if(Su(e,"toString")){return e.toString()}else if(e.name&&!Ca(e)){return"#")}else{return"#"}}var ju=new Map;[[Error,function(e){return e.message}],[M,function(e,t){var r=t.quote,n=t.skip_cycles,i=t.pair_args;if(!n){e.markCycles()}return e.toString.apply(e,[r].concat(q(i)))}],[za,function(e,t){var r=t.quote;if(r){return e.toString()}return e.valueOf()}],[$a,function(e,t){var r=t.quote;e=e.toString();if(r){return JSON.stringify(e).replace(/\\n/g,"\n")}return e}],[RegExp,function(e){return"#"+e.toString()}]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ju.set(r,n)});var Iu=[L,C,Vu,jo,ho,po,So,ki];function Pu(e,t,c){if(typeof jQuery!=="undefined"&&e instanceof jQuery.fn.init){return"#"}if(ku.has(e)){return ku.get(e)}if(Nu(e)){return"#"}if(e){var r=e.constructor;if(ju.has(r)){for(var n=arguments.length,f=new Array(n>3?n-3:0),i=3;i"}if(e===null){return"null"}if(_(e)==="object"){var a=e.constructor;if(!a){a=Object}var o;if(typeof a.__class__==="string"){o=a.__class__}else{var s=Fu(e);if(s){if(Xu(s)){return s(e,t)}else{throw new Error("toString: Invalid repr value")}}o=a.name}if(Xu(e.toString)&&Ca(e.toString)){return e.toString().valueOf()}if(us(e)==="instance"){if(Ca(a)&&a.__name__){o=a.__name__.valueOf()}else if(!Ba(a)){o="instance"}}if(ns(e,Symbol.iterator)){if(o){return"#")}return"#"}if(ns(e,Symbol.asyncIterator)){if(o){return"#")}return"#"}if(o!==""){return"#<"+o+">"}return"#"}if(typeof e!=="string"){return e.toString()}return e}function Nu(e){return e&&_(e)==="object"&&e.hasOwnProperty&&e.hasOwnProperty("constructor")&&typeof e.constructor==="function"&&e.constructor.prototype===e}M.prototype.markCycles=function(){Ru(this);return this};M.prototype.haveCycles=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!e){return this.haveCycles("car")||this.haveCycles("cdr")}return!!(this[ga]&&this[ga][e])};function Ru(e){var t=[];var i=[];var u=[];function a(e){if(!t.includes(e)){t.push(e)}}function o(e,t,r,n){if(r instanceof M){if(n.includes(r)){if(!u.includes(r)){u.push(r)}if(!e[ga]){e[ga]={}}e[ga][t]=r;if(!i.includes(e)){i.push(e)}return true}}}var s=gi(function e(t,r){if(t instanceof M){delete t.ref;delete t[ga];a(t);r.push(t);var n=o(t,"car",t.car,r);var i=o(t,"cdr",t.cdr,r);if(!n){s(t.car,r.slice())}if(!i){return new mi(function(){return e(t.cdr,r.slice())})}}});function r(e,t){if(e[ga][t]instanceof M){var r=n.indexOf(e[ga][t]);e[ga][t]="#".concat(r,"#")}}s(e,[]);var n=t.filter(function(e){return u.includes(e)});n.forEach(function(e,t){e[ma]="#".concat(t,"=")});i.forEach(function(e){r(e,"car");r(e,"cdr")})}M.prototype.toString=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.nested,n=r===void 0?false:r;var i=[];if(this[ma]){i.push(this[ma]+"(")}else if(!n){i.push("(")}var u;if(this[ga]&&this[ga].car){u=this[ga].car}else{u=Pu(this.car,e,true)}if(u!==undefined){i.push(u)}if(this.cdr instanceof M){if(this[ga]&&this[ga].cdr){i.push(" . ");i.push(this[ga].cdr)}else{if(this.cdr[ma]){i.push(" . ")}else{i.push(" ")}var a=this.cdr.toString(e,{nested:true});i.push(a)}}else if(this.cdr!==U){i=i.concat([" . ",Pu(this.cdr,e,true)])}if(!n||this[ma]){i.push(")")}return i.join("")};M.prototype.set=function(e,t){this[e]=t;if(t instanceof M){this.markCycles()}};M.prototype.append=function(e){if(e instanceof Array){return this.append(M.fromArray(e))}var t=this;if(t.car===undefined){if(e instanceof M){this.car=e.car;this.cdr=e.cdr}else{this.car=e}}else if(e!==U){while(true){if(t instanceof M&&t.cdr!==U){t=t.cdr}else{break}}t.cdr=e}return this};M.prototype.serialize=function(){return[this.car,this.cdr]};M.prototype[Symbol.iterator]=function(){var r=this;return{next:function e(){var t=r;r=t.cdr;if(t===U){return{value:undefined,done:true}}else{return{value:t.car,done:false}}}}};function Tu(e){return e<0?-e:e}function Lu(e,t){var r=m(t),n=r[0],i=r.slice(1);while(i.length>0){var u=i,a=j(u,1),o=a[0];if(!e(n,o)){return false}var s=i;var c=m(s);n=c[0];i=c.slice(1)}return true}function Uu(e,t){if(Xu(e)){return Xu(t)&&sa(e)===sa(t)}else if(e instanceof C){if(!(t instanceof C)){return false}var r;if(e.__type__===t.__type__){if(e.__type__==="complex"){r=e.__im__.__type__===t.__im__.__type__&&e.__re__.__type__===t.__re__.__type__}else{r=true}if(r&&e.cmp(t)===0){if(e.valueOf()===0){return Object.is(e.valueOf(),t.valueOf())}return true}}return false}else if(typeof e==="number"){if(typeof t!=="number"){return false}if(Number.isNaN(e)){return Number.isNaN(t)}if(e===Number.NEGATIVE_INFINITY){return t===Number.NEGATIVE_INFINITY}if(e===Number.POSITIVE_INFINITY){return t===Number.POSITIVE_INFINITY}return Uu(C(e),C(t))}else if(e instanceof za){if(!(t instanceof za)){return false}return e.__char__===t.__char__}else{return e===t}}function Mu(e,t){if(us(e)!==us(t)){return false}if(!qu(e)){return false}if(e instanceof RegExp){return e.source===t.source}if(e instanceof $a){return e.valueOf()===t.valueOf()}return Uu(e,t)}function qu(e){return e instanceof L||$a.isString(e)||e===U||e===null||e instanceof za||e instanceof C||e===true||e===false}var Yu=function(){if(Math.trunc){return Math.trunc}else{return function(e){if(e===0){return 0}else if(e<0){return Math.ceil(e)}else{return Math.floor(e)}}}}();function Vu(e,t,r,n){if(typeof this!=="undefined"&&this.constructor!==Vu||typeof this==="undefined"){return new Vu(e,t)}h("Macro",e,"string",1);h("Macro",t,"function",2);if(r){if(n){this.__doc__=r}else{this.__doc__=Hi(r)}}this.__name__=e;this.__fn__=t}Vu.defmacro=function(e,t,r,n){var i=new Vu(e,t,r,n);i.__defmacro__=true;return i};Vu.prototype.invoke=function(e,t,r){var n=t.env,i=t.dynamic_scope,u=t.error;var a={dynamic_scope:i,error:u,macro_expand:r};var o=this.__fn__.call(n,e,a,this.__name__);return o};Vu.prototype.toString=function(){return"#")};var zu="define-macro";var $u=-1e4;function Ju(c){return function(){var r=B(z.mark(function e(r,m){var u,g,n,i,s,D,E,A,x,F,k,b,a,w,o;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:o=function e(){o=B(z.mark(function e(r,n,i){var h,u,a,p,o,_,s,d,c,v,f,l,y;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M&&r.car instanceof L)){t.next=50;break}if(!r[ya]){t.next=3;break}return t.abrupt("return",r);case 3:h=r.car.valueOf();u=i.get(r.car,{throwError:false});a=D(r.car);p=a||E(u,r)||A(u);if(!(p&&r.cdr.car instanceof M)){t.next=28;break}if(!a){t.next=15;break}g=F(r.cdr.car);t.next=12;return b(r.cdr.car,n);case 12:o=t.sent;t.next=17;break;case 15:g=x(r.cdr.car);o=r.cdr.car;case 17:t.t0=M;t.t1=r.car;t.t2=M;t.t3=o;t.next=23;return w(r.cdr.cdr,n,i);case 23:t.t4=t.sent;t.t5=new t.t2(t.t3,t.t4);return t.abrupt("return",new t.t0(t.t1,t.t5));case 28:if(!k(h,u)){t.next=50;break}_=u instanceof Ku?r:r.cdr;t.next=32;return u.invoke(_,vn(vn({},m),{},{env:i}),true);case 32:s=t.sent;if(!(u instanceof Ku)){t.next=41;break}d=s,c=d.expr,v=d.scope;if(!(c instanceof M)){t.next=40;break}if(!(n!==-1&&n<=1||n<$u)){t.next=38;break}return t.abrupt("return",c);case 38:if(n!==-1){n=n-1}return t.abrupt("return",w(c,n,v));case 40:s=c;case 41:if(!(s instanceof L)){t.next=43;break}return t.abrupt("return",Io(s));case 43:if(!(s instanceof M)){t.next=48;break}if(!(n!==-1&&n<=1||n<$u)){t.next=46;break}return t.abrupt("return",s);case 46:if(n!==-1){n=n-1}return t.abrupt("return",w(s,n,i));case 48:if(!qu(s)){t.next=50;break}return t.abrupt("return",s);case 50:f=r.car;if(!(f instanceof M)){t.next=55;break}t.next=54;return w(f,n,i);case 54:f=t.sent;case 55:l=r.cdr;if(!(l instanceof M)){t.next=60;break}t.next=59;return w(l,n,i);case 59:l=t.sent;case 60:y=new M(f,l);return t.abrupt("return",y);case 62:case"end":return t.stop()}}},e)}));return o.apply(this,arguments)};w=function e(t,r,n){return o.apply(this,arguments)};a=function e(){a=B(z.mark(function e(r,n){var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r===U)){t.next=2;break}return t.abrupt("return",U);case 2:i=r.car;t.t0=M;t.t1=M;t.t2=i.car;t.next=8;return w(i.cdr,n,u);case 8:t.t3=t.sent;t.t4=new t.t1(t.t2,t.t3);t.next=12;return b(r.cdr);case 12:t.t5=t.sent;return t.abrupt("return",new t.t0(t.t4,t.t5));case 14:case"end":return t.stop()}}},e)}));return a.apply(this,arguments)};b=function e(t,r){return a.apply(this,arguments)};k=function e(t,r){return r instanceof Vu&&r.__defmacro__&&!g.includes(t)};F=function e(t){return[].concat(q(g),q(t.to_array(false).map(function(e){if(e instanceof M){return e.car.valueOf()}throw new Error("macroexpand: Invalid let binding")})))};x=function e(t){var r=[];while(true){if(t!==U){if(t instanceof L){r.push(t.valueOf());break}r.push(t.car.valueOf());t=t.cdr}else{break}}return[].concat(q(g),r)};A=function e(t){return t===i};E=function e(t,r){return t===s&&r.cdr.car instanceof M};D=function e(t){var r=t.valueOf();return n.includes(r)};u=m["env"]=this;g=[];n=["let","let*","letrec"];i=qo.get("lambda");s=qo.get("define");if(!(r.cdr instanceof M&&C.isNumber(r.cdr.car))){t.next=21;break}t.t0=Io;t.next=19;return w(r,r.cdr.car.valueOf(),u);case 19:t.t1=t.sent.car;return t.abrupt("return",(0,t.t0)(t.t1));case 21:if(!c){t.next=27;break}t.t2=Io;t.next=25;return w(r,1,u);case 25:t.t3=t.sent.car;return t.abrupt("return",(0,t.t2)(t.t3));case 27:t.t4=Io;t.next=30;return w(r,-1,u);case 30:t.t5=t.sent.car;return t.abrupt("return",(0,t.t4)(t.t5));case 32:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()}function Ku(e,t){this.__env__=t;this.__fn__=e;this.__defmacro__=true}Ku.__merge_env__=Symbol["for"]("merge");Ku.prototype=Object.create(Vu.prototype);Ku.prototype.invoke=function(e,t,r){var n=t.error,i=t.env;var u={error:n,env:i,dynamic_scope:this.__env__,macro_expand:r};return this.__fn__.call(i,e,u,this.__name__||"syntax")};Ku.prototype.constructor=Ku;Ku.prototype.toString=function(){if(this.__name__){return"#")}return"#"};Ku.className="syntax";var Gu=function(e){u(r,e);var t=fn(r);function r(){D(this,r);return t.apply(this,arguments)}return A(r)}(Ku);Ku.Parameter=Gu;function Hu(e,t,w,D){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var E={"...":{symbols:{},lists:[]},symbols:{}};var A=r.expansion,k=r.define;function x(e){if(Cn()){console.log(e)}}x(w);function F(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;x({code:t&&Pu(t,true),pattern:e&&Pu(e,true)});if(qu(e)&&!(e instanceof L)){return Mu(e,t)}if(e instanceof L&&w.includes(e.literal())){var c=A.ref(t);if(L.is(t,e)){if(typeof c==="undefined"){return true}return c===k||c===qo}return false}if(e instanceof M&&e.car instanceof M&&e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){x(">> 0");if(t===U){x({pattern:e.toString()});if(e.car.car instanceof L){if(e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){var f=e.car.car.valueOf();var l=e.last_pair();if(L.is(l.car,D)){E["..."].symbols[f]=null;return true}else{return false}}var h=e.car.car.valueOf();if(E["..."].symbols[h]){throw new Error("syntax: named ellipsis can only "+"appear onces")}E["..."].symbols[h]=t}}}if(e instanceof M&&e.cdr instanceof M&&L.is(e.cdr.car,D)){if(e.cdr.cdr!==U){if(e.cdr.cdr instanceof M){var p=e.cdr.cdr.length();var _=t.length();var i=t;while(_-1>p){i=i.cdr;_--}var d=i.cdr;i.cdr=U;if(!F(e.cdr.cdr,d,r,n)){return false}}}if(e.car instanceof L){var u=e.car.__name__;if(E["..."].symbols[u]&&!r.includes(u)&&!n){throw new Error("syntax: named ellipsis can only appear onces")}x(">> 1");if(t===U){x(">> 2");if(n){x("NIL");E["..."].symbols[u]=U}else{x("NULL");E["..."].symbols[u]=null}}else if(t instanceof M&&(t.car instanceof M||t.car===U)){x(">> 3 "+n);if(n){if(E["..."].symbols[u]){var a=E["..."].symbols[u];if(a===U){a=new M(U,new M(t,U))}else{a=a.append(new M(t,U))}E["..."].symbols[u]=a}else{E["..."].symbols[u]=new M(t,U)}}else{x(">> 4");E["..."].symbols[u]=new M(t,U)}}else{x(">> 6");if(t instanceof M){x(">> 7 "+n);r.push(u);if(!E["..."].symbols[u]){E["..."].symbols[u]=new M(t,U)}else{var v=E["..."].symbols[u];E["..."].symbols[u]=v.append(new M(t,U))}x({IIIIII:E["..."].symbols[u].toString()})}else{x(">> 8");return false}}return true}else if(e.car instanceof M){var y=q(r);if(t===U){x(">> 9");E["..."].lists.push(U);return true}x(">> 10");var m=t;while(m instanceof M){if(!F(e.car,m.car,y,true)){return false}m=m.cdr}return true}return false}if(e instanceof L){if(L.is(e,D)){throw new Error("syntax: invalid usage of ellipsis")}x(">> 11");var o=e.__name__;if(w.includes(o)){return true}x({name:o,ellipsis:n});if(n){E["..."].symbols[o]=E["..."].symbols[o]||[];E["..."].symbols[o].push(t)}E.symbols[o]=t;if(!E.symbols[o]);return true}if(e instanceof M&&t instanceof M){x(">> 12");x({a:12,code:t&&t.toString(),pattern:e.toString()});if(t.cdr===U){var g=e.car instanceof L&&e.cdr instanceof L;if(g){if(!F(e.car,t.car,r,n)){return false}x(">> 12 | 1");var s=e.cdr.valueOf();if(!(s in E.symbols)){E.symbols[s]=U}s=e.car.valueOf();if(!(s in E.symbols)){E.symbols[s]=t.car}return true}}x({pattern:e.toString(),code:t.toString()});if(e.cdr instanceof M&&e.car instanceof L&&e.cdr.cdr instanceof M&&e.cdr.car instanceof L&&L.is(e.cdr.cdr.car,D)&&e.cdr.cdr.cdr instanceof M&&!L.is(e.cdr.cdr.cdr.car,D)&&F(e.car,t.car,r,n)&&F(e.cdr.cdr.cdr,t.cdr,r,n)){var b=e.cdr.car.__name__;x({pattern:e.car.toString(),code:t.car.toString(),name:b});if(w.includes(b)){return true}E["..."].symbols[b]=null;return true}x("recur");if(F(e.car,t.car,r,n)&&F(e.cdr,t.cdr,r,n)){return true}}else if(e===U&&(t===U||t===undefined)){return true}else if(e.car instanceof M&&L.is(e.car.car,D)){throw new Error("syntax: invalid usage of ellipsis")}else{return false}}if(F(e,t)){return E}}function Wu(e,i){function u(t){if(t instanceof M){if(!i.length){return t}var e=u(t.car);var r=u(t.cdr);return new M(e,r)}else if(t instanceof L){var n=i.find(function(e){return e.gensym===t});if(n){return L(n.name)}return t}else{return t}}return u(e)}function Qu(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var O=e.bindings,t=e.expr,S=e.scope,a=e.symbols,f=e.names,B=e.ellipsis;var c={};function o(e){if(e instanceof L){return true}return["string","symbol"].includes(_(e))}function j(e){if(!o(e)){var t=us(e);throw new Error("syntax: internal error, need symbol got ".concat(t))}var r=e.valueOf();if(r===B){throw new Error("syntax: internal error, ellipis not transformed")}var n=_(r);if(["string","symbol"].includes(n)){if(r in O.symbols){return O.symbols[r]}else if(n==="string"&&r.match(/\./)){var i=r.split(".");var u=i[0];if(u in O.symbols){return M.fromArray([L("."),O.symbols[u]].concat(i.slice(1).map(function(e){return $a(e)})))}}}if(a.includes(r)){return L(r)}return s(r)}function I(e){if(Cn()){console.log(e)}}function s(e){if(!c[e]){var t=S.ref(e);var r=Fi(e);if(t){var n=S.get(e);S.set(r,n)}else{var i=S.get(e,{throwError:false});if(typeof i!=="undefined"){S.set(r,i)}}f.push({name:e,gensym:r});c[e]=r;if(typeof e==="string"&&e.match(/\./)){var u=e.split(".").filter(Boolean),a=m(u),o=a[0],s=a.slice(1);if(c[o]){Fa(r,"__object__",[c[o]].concat(q(s)))}}}return c[e]}function P(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:function(){};var i=r.nested;I(" ==> "+e.toString(true));I(t);if(e instanceof L){var u=e.valueOf();I("[t 1");if(t[u]){if(t[u]instanceof M){var c=t[u],f=c.car,l=c.cdr;if(i){var h=f.car,p=f.cdr;if(p!==U){n(u,new M(p,U))}return h}if(l!==U){n(u,l)}return f}else if(t[u]instanceof Array){n(u,t[u].slice(1));return t[u][0]}}return j(u)}if(e instanceof M){if(e.car instanceof L&&e.cdr instanceof M&&L.is(e.cdr.car,B)){I("[t 2");var a=e.car.valueOf();var o=t[a];I({expr:e.toString(true),name:a,bindings:t,item:o});if(o===null){return}else if(o){I({b:t[a].toString()});if(o instanceof M){I("[t 2 Pair "+i);I({______:o.toString()});var s=o.car,_=o.cdr;if(i){if(_!==U){I("|| next 1");n(a,_)}I({car:s.toString()});return s}else{if(s.cdr!==U){I("|| next 2");n(a,new M(s.cdr,_))}I({car:s.car.toString()});return s.car}}else if(o instanceof Array){I("[t 2 Array "+i);if(i){n(a,o.slice(1));return M.fromArray(o)}else{var d=o.slice(1);if(d.length){n(a,d)}return o[0]}}else{return o}}}I("[t 3 recur "+e.toString());var v=P(e.car,t,r,n);var y=P(e.cdr,t,r,n);return new M(v,y)}return e}function R(t,r){var e=Object.values(t);var n=Object.getOwnPropertySymbols(t);if(n.length){e.push.apply(e,q(n.map(function(e){return t[e]})))}return e.length&&e.every(function(e){if(e===null){return!r}return e instanceof M||e===U||e instanceof Array&&e.length})}function T(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function N(i){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},e=n.disabled;I("traverse>> "+Pu(i));if(i instanceof M){if(!e&&i.car instanceof M&&L.is(i.car.car,B)){return N(i.car.cdr,{disabled:true})}if(i.cdr instanceof M&&L.is(i.cdr.car,B)&&!e){I(">> 1");var t=O["..."].symbols;var f=Object.values(t);if(f.length&&f.every(function(e){return e===null})){return N(i.cdr.cdr,{disabled:e})}var l=T(t);var u=i.car instanceof L&&L.is(i.cdr.cdr.car,B);if(i.car instanceof M||u){if(O["..."].lists[0]===U){return U}var h=i.car;if(u){h=new M(i.car,new M(i.cdr.car,U))}I(">> 2");var a;if(l.length){I(">> 2 (a)");var o=vn({},t);a=U;var p=function e(){if(!R(o)){return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(h,o,{nested:true},t);if(r!==undefined){if(u){if(a===U){a=r}else{a=a.append(r)}}else{a=new M(r,a)}}o=n};while(true){var _=p();if(_==="break")break}if(a!==U&&!u){a=a.reverse()}if(i.cdr.cdr!==U&&!L.is(i.cdr.cdr.car,B)){var d=N(i.cdr.cdr,{disabled:e});return a.append(d)}return a}else{I(">> 3");var v=P(i.car,t,{nested:true});if(v){return new M(v,U)}return U}}else if(i.car instanceof L){I(">> 4");if(L.is(i.cdr.cdr.car,B)){I(">> 4 (a)")}else{I(">> 4 (b)")}var y=i.car.__name__;var s=Y({},y,t[y]);var m=t[y]===null;var c=U;var g=function e(){if(!R(s,true)){I({bind:s});return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(i,s,{nested:false},t);I({value:r.toString()});if(typeof r!=="undefined"){c=new M(r,c)}s=n};while(true){var b=g();if(b==="break")break}if(c!==U){c=c.reverse()}if(i.cdr instanceof M){if(i.cdr.cdr instanceof M||i.cdr.cdr instanceof L){var w=N(i.cdr.cdr,{disabled:e});if(m){return w}I("<<<< 1");c.append(w)}}I("<<<< 2");return c}}var D=N(i.car,{disabled:e});var r;var E;if(i.car instanceof L){var A=S.get(i.car,{throwError:false});E=A instanceof Vu&&A.__name__==="syntax-rules"}if(E){if(i.cdr.car instanceof L){r=new M(N(i.cdr.car,{disabled:e}),new M(i.cdr.cdr.car,N(i.cdr.cdr.cdr,{disabled:e})))}else{r=new M(i.cdr.car,N(i.cdr.cdr,{disabled:e}))}I("REST >>>> "+r.toString())}else{r=N(i.cdr,{disabled:e})}I({a:true,car:Pu(i.car),cdr:Pu(i.cdr),head:Pu(D),rest:Pu(r)});return new M(D,r)}if(i instanceof L){if(e&&L.is(i,B)){return i}var x=Object.keys(O["..."].symbols);var F=i.literal();if(x.includes(F)){var k="missing ellipsis symbol next to name `".concat(F,"'");throw new Error("syntax-rules: ".concat(k))}var C=j(i);if(typeof C!=="undefined"){return C}}return i}return N(t,{})}function Zu(e){return na(e)||e===U||e===null}function Xu(e){return typeof e==="function"&&typeof e.bind==="function"}function ea(e){return e instanceof hs}function ta(e){return Xu(e)||ea(e)}function ra(e){if(e instanceof ki){return false}if(e instanceof Promise){return true}return e&&Xu(e.then)}function na(e){return typeof e==="undefined"}function ia(e){switch(_(e)){case"string":return $a(e);case"bigint":return C(e);case"number":if(Number.isNaN(e)){return Uo}else{return C(e)}}return e}function ua(n,i){var e=Object.getOwnPropertyNames(n);var t=Object.getOwnPropertySymbols(n);e.concat(t).forEach(function(e){var t=i(n[e]);var r=Object.getOwnPropertyDescriptor(n,e);if(!r||r.writable&&n[e]!==t){n[e]=t}});return n}function aa(t){var e=[$a,C].some(function(e){return t instanceof e});if(e){return t.valueOf()}if(t instanceof Array){return t.map(aa)}if(t instanceof ki){delete t.then}if(wu(t)){return ua(t,aa)}return t}function oa(e,t){if(e instanceof M){e.markCycles();return Io(e)}if(Xu(e)){if(t){return ca(e,t)}}return ia(e)}function sa(e){if(la(e)){return e[va]}return e}function ca(e,t){if(e[Symbol["for"]("__bound__")]){return e}var r=e.bind(t);var n=Object.getOwnPropertyNames(e);var i=hn(n),u;try{for(i.s();!(u=i.n()).done;){var a=u.value;if(xa(a)){try{r[a]=e[a]}catch(e){}}}}catch(e){i.e(e)}finally{i.f()}Fa(r,"__fn__",e);Fa(r,"__context__",t);Fa(r,"__bound__",true);if(Ba(e)){Fa(r,"__native__",true)}if(wu(t)&&Ca(e)){Fa(r,"__method__",true)}r.valueOf=function(){return e};return r}function fa(e){return la(e)&&e[Symbol["for"]("__context__")]===Object}function la(e){return!!(Xu(e)&&e[va])}function ha(e){if(Xu(e)){var t=e[da];if(t&&(t===Gs||t.constructor&&t.constructor.__class__)){return true}}return false}function pa(e){return e instanceof ho||e instanceof po}function _a(e){if(Xu(e)){if(pa(e[da])){return true}}return false}var da=Symbol["for"]("__context__");var va=Symbol["for"]("__fn__");var ya=Symbol["for"]("__data__");var ma=Symbol["for"]("__ref__");var ga=Symbol["for"]("__cycles__");var ba=Symbol["for"]("__class__");var wa=Symbol["for"]("__method__");var Da=Symbol["for"]("__prototype__");var Ea=Symbol["for"]("__lambda__");var Aa=["name","length","caller","callee","arguments","prototype"];function xa(e){return!Aa.includes(e)}function Fa(e,t,r){Object.defineProperty(e,Symbol["for"](t),{get:function e(){return r},set:function e(){},configurable:false,enumerable:false})}function ka(t,r){try{Object.defineProperty(t,"length",{get:function e(){return r}});return t}catch(e){var n=new Array(r).fill(0).map(function(e,t){return"a"+t}).join(",");var i=new Function("f","return function(".concat(n,") {\n return f.apply(this, arguments);\n };"));return i(t)}}function Ca(e){return e&&e[Ea]}function Oa(e){return e&&e[wa]}function Sa(e){return Ca(e)&&!e[Da]&&!Oa(e)&&!_a(e)}function Ba(e){var t=Symbol["for"]("__native__");return Xu(e)&&e.toString().match(/\{\s*\[native code\]\s*\}/)&&(e.name.match(/^bound /)&&e[t]===true||!e.name.match(/^bound /)&&!e[t])}function ja(e){var g;switch(e){case Symbol["for"]("letrec"):g="letrec";break;case Symbol["for"]("let"):g="let";break;case Symbol["for"]("let*"):g="let*";break;default:throw new Error("Invalid let_macro value")}return Vu.defmacro(g,function(t,e){var f=e.dynamic_scope,l=e.error,n=e.macro_expand;var h;if(t.car instanceof L){if(!(t.cdr.car instanceof M||t.cdr.car===U)){throw new Error("let require list of pairs")}var r;if(t.cdr.car===U){h=U;r=U}else{r=t.cdr.car.map(function(e){return e.car});h=t.cdr.car.map(function(e){return e.cdr.car})}return M.fromArray([L("letrec"),[[t.car,M(L("lambda"),M(r,t.cdr.cdr))]],M(t.car,h)])}else if(n){return}var p=this;h=qo.get("list->array")(t.car);var _=p.inherit(g);var d,v;if(g==="let*"){v=_}else if(g==="let"){d=[]}var y=0;function m(){var e=new M(new L("begin"),t.cdr);return _s(e,{env:_,dynamic_scope:f,error:l})}return function t(){var r=h[y++];if(f){f=g==="let*"?_:p}if(!r){if(d&&d.length){var e=d.map(function(e){return e.value});var n=e.filter(ra);if(n.length){return Ci(e).then(function(e){for(var t=0,r=e.length;t1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;var i=this;if(r){r=this}var u=e;var a=[];while(u instanceof M){a.push(_s(u.car,{env:i,dynamic_scope:r,error:n}));u=u.cdr}var o=a.filter(ra).length;if(o){return Ci(a).then(s.bind(this))}else{return s.call(this,a)}})}function Pa(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2?n-2:0),u=2;u1&&arguments[1]!==undefined?arguments[1]:null;return function(){for(var e=arguments.length,t=new Array(e),r=0;r1?e-1:0),r=1;r=a){return u.apply(this,n)}else{return i}}return i.apply(this,arguments)}}function Va(n,i){h("limit",i,"function",2);return function(){for(var e=arguments.length,t=new Array(e),r=0;r1){e=e.toLowerCase();if(za.__names__[e]){t=e;e=za.__names__[e]}else{throw new Error("Internal: Unknown named character")}}else{t=za.__rev_names__[e]}Object.defineProperty(this,"__char__",{value:e,enumerable:true});if(t){Object.defineProperty(this,"__name__",{value:t,enumerable:true})}}za.__names__=Un;za.__rev_names__={};Object.keys(za.__names__).forEach(function(e){var t=za.__names__[e];za.__rev_names__[t]=e});za.prototype.toUpperCase=function(){return za(this.__char__.toUpperCase())};za.prototype.toLowerCase=function(){return za(this.__char__.toLowerCase())};za.prototype.toString=function(){return"#\\"+(this.__name__||this.__char__)};za.prototype.valueOf=za.prototype.serialize=function(){return this.__char__};function $a(e){if(typeof this!=="undefined"&&!(this instanceof $a)||typeof this==="undefined"){return new $a(e)}if(e instanceof Array){this.__string__=e.map(function(e,t){h("LString",e,"character",t+1);return e.toString()}).join("")}else{this.__string__=e.valueOf()}}{var Ja=["length","constructor"];var Ka=Object.getOwnPropertyNames(String.prototype).filter(function(e){return!Ja.includes(e)});var Ga=function e(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r0){r.push(this.__string__.substring(0,e))}r.push(t);if(e1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof C){return e}if(typeof this!=="undefined"&&!(this instanceof C)||typeof this==="undefined"){return new C(e,t)}if(typeof e==="undefined"){throw new Error("Invalid LNumber constructor call")}var r=C.getType(e);if(C.types[r]){return C.types[r](e,t)}var n=e instanceof Array&&$a.isString(e[0])&&C.isNumber(e[1]);if(e instanceof C){return C(e.value)}if(!C.isNumber(e)&&!n){throw new Error("You can't create LNumber from ".concat(us(e)))}if(e===null){e=0}var i;if(n){var c=e,u=j(c,2),a=u[0],o=u[1];if(a instanceof $a){a=a.valueOf()}if(o instanceof C){o=o.valueOf()}var f=a.match(/^([+-])/);var l=false;if(f){a=a.replace(/^[+-]/,"");if(f[1]==="-"){l=true}}}if(Number.isNaN(e)){return uo(e)}else if(typeof BigInt!=="undefined"){if(typeof e!=="bigint"){if(n){var s;switch(o){case 8:s="0o";break;case 16:s="0x";break;case 2:s="0b";break;case 10:s="";break}if(typeof s==="undefined"){var h=BigInt(o);i=q(a).map(function(e,t){return BigInt(parseInt(e,o))*ro(h,BigInt(t))}).reduce(function(e,t){return e+t})}else{i=BigInt(s+a)}}else{i=BigInt(e)}if(l){i*=BigInt(-1)}}else{i=e}return lo(i,true)}else if(typeof xn!=="undefined"&&!(e instanceof xn)){if(e instanceof Array){return lo(p(xn,q(e)))}return lo(new xn(e))}else if(n){this.constant(parseInt(a,o),"integer")}else{this.constant(e,"integer")}}C.prototype.constant=function(e,t){Object.defineProperty(this,"__value__",{value:e,enumerable:true});Object.defineProperty(this,"__type__",{value:t,enumerable:true})};C.types={float:function e(t){return new uo(t)},complex:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isComplex(t)){t={im:0,re:t}}return new io(t,r)},rational:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isRational(t)){t={num:t,denom:1}}return new fo(t,r)}};C.prototype.serialize=function(){return this.__value__};C.prototype.isNaN=function(){return Number.isNaN(this.__value__)};C.prototype.gcd=function(e){var t=this.abs();e=e.abs();if(e.cmp(t)===1){var r=t;t=e;e=r}while(true){t=t.rem(e);if(t.cmp(0)===0){return e}e=e.rem(t);if(e.cmp(0)===0){return t}}};C.isFloat=function e(t){return t instanceof uo||Number(t)===t&&t%1!==0};C.isNumber=function(e){return e instanceof C||C.isNative(e)||C.isBN(e)};C.isComplex=function(e){if(!e){return false}var t=e instanceof io||(C.isNumber(e.im)||Number.isNaN(e.im))&&(C.isNumber(e.re)||Number.isNaN(e.re));return t};C.isRational=function(e){if(!e){return false}return e instanceof fo||C.isNumber(e.num)&&C.isNumber(e.denom)};C.isInteger=function(e){if(!(C.isNative(e)||e instanceof C)){return false}if(C.isFloat(e)){return false}if(C.isRational(e)){return false}if(C.isComplex(e)){return false}return true};C.isNative=function(e){return typeof e==="bigint"||typeof e==="number"};C.isBigInteger=function(e){return e instanceof lo||typeof e==="bigint"||C.isBN(e)};C.isBN=function(e){return typeof xn!=="undefined"&&e instanceof xn};C.getArgsType=function(e,t){if(e instanceof uo||t instanceof uo){return uo}if(e instanceof lo||t instanceof lo){return lo}return C};C.prototype.toString=function(e){if(Number.isNaN(this.__value__)){return"+nan.0"}if(e>2&&e<36){return this.__value__.toString(e)}return this.__value__.toString()};C.prototype.asType=function(e){var t=C.getType(this);return C.types[t]?C.types[t](e):C(e)};C.prototype.isBigNumber=function(){return typeof this.__value__==="bigint"||typeof xn!=="undefined"&&!(this.value instanceof xn)};["floor","ceil","round"].forEach(function(e){C.prototype[e]=function(){if(this["float"]||C.isFloat(this.__value__)){return C(Math[e](this.__value__))}else{return C(Math[e](this.valueOf()))}}});C.prototype.valueOf=function(){if(C.isNative(this.__value__)){return Number(this.__value__)}else if(C.isBN(this.__value__)){return this.__value__.toNumber()}};var Za=function(){var e=function e(t,r){return[t,r]};return{bigint:{bigint:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},integer:{integer:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},float:{bigint:function e(t,r){return[t,r&&uo(r.valueOf())]},integer:function e(t,r){return[t,r&&uo(r.valueOf())]},float:e,rational:function e(t,r){return[t,r&&uo(r.valueOf())]},complex:function e(t,r){return[{re:t,im:uo(0)},r]}},complex:{bigint:t("bigint"),integer:t("integer"),float:t("float"),rational:t("rational"),complex:function f(e,t){var r=C.coerce(e.__re__,t.__re__),n=j(r,2),i=n[0],u=n[1];var a=C.coerce(e.__im__,t.__im__),o=j(a,2),s=o[0],c=o[1];return[{im:s,re:i},{im:c,re:u}]}},rational:{bigint:function e(t,r){return[t,r&&{num:r,denom:1}]},integer:function e(t,r){return[t,r&&{num:r,denom:1}]},float:function e(t,r){return[uo(t.valueOf()),r]},rational:e,complex:function e(t,r){return[{im:Xa(t.__type__,r.__im__.__type__,0)[0],re:Xa(t.__type__,r.__re__.__type__,t)[0]},{im:Xa(t.__type__,r.__im__.__type__,r.__im__)[0],re:Xa(t.__type__,r.__re__.__type__,r.__re__)[0]}]}}};function t(r){return function(e,t){return[{im:Xa(r,e.__im__.__type__,0,e.__im__)[1],re:Xa(r,e.__re__.__type__,0,e.__re__)[1]},{im:Xa(r,e.__im__.__type__,0,0)[1],re:Xa(r,t.__type__,0,t)[1]}]}}}();function Xa(e,t,r,n){return Za[e][t](r,n)}C.coerce=function(e,t){var r=C.getType(e);var n=C.getType(t);if(!Za[r]){throw new Error("LNumber::coerce unknown lhs type ".concat(r))}else if(!Za[r][n]){throw new Error("LNumber::coerce unknown rhs type ".concat(n))}var i=Za[r][n](e,t);return i.map(function(e){return C(e,true)})};C.prototype.coerce=function(e){if(!(typeof e==="number"||e instanceof C)){throw new Error("LNumber: you can't coerce ".concat(us(e)))}if(typeof e==="number"){e=C(e)}return C.coerce(this,e)};C.getType=function(e){if(e instanceof C){return e.__type__}if(C.isFloat(e)){return"float"}if(C.isComplex(e)){return"complex"}if(C.isRational(e)){return"rational"}if(typeof e==="number"){return"integer"}if(typeof BigInt!=="undefined"&&typeof e!=="bigint"||typeof xn!=="undefined"&&!(e instanceof xn)){return"bigint"}};C.prototype.isFloat=function(){return!!(C.isFloat(this.__value__)||this["float"])};var eo={add:"+",sub:"-",mul:"*",div:"/",rem:"%",or:"|",and:"&",neg:"~",shl:">>",shr:"<<"};var to={};Object.keys(eo).forEach(function(t){to[eo[t]]=t;C.prototype[t]=function(e){return this.op(eo[t],e)}});C._ops={"*":function e(t,r){return t*r},"+":function e(t,r){return t+r},"-":function e(t,r){if(typeof r==="undefined"){return-t}return t-r},"/":function e(t,r){return t/r},"%":function e(t,r){return t%r},"|":function e(t,r){return t|r},"&":function e(t,r){return t&r},"~":function e(t){return~t},">>":function e(t,r){return t>>r},"<<":function e(t,r){return t<1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof io)||typeof this==="undefined"){return new io(e,t)}if(e instanceof io){return io({im:e.__im__,re:e.__re__})}if(C.isNumber(e)&&t){if(!t){return Number(e)}}else if(!C.isComplex(e)){var r="Invalid constructor call for LComplex expect &(:im :re ) object but got ".concat(Pu(e));throw new Error(r)}var n=e.im instanceof C?e.im:C(e.im);var i=e.re instanceof C?e.re:C(e.re);this.constant(n,i)}io.prototype=Object.create(C.prototype);io.prototype.constructor=io;io.prototype.constant=function(e,t){Object.defineProperty(this,"__im__",{value:e,enumerable:true});Object.defineProperty(this,"__re__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"complex",enumerable:true})};io.prototype.serialize=function(){return{re:this.__re__,im:this.__im__}};io.prototype.toRational=function(e){if(C.isFloat(this.__im__)&&C.isFloat(this.__re__)){var t=uo(this.__im__).toRational(e);var r=uo(this.__re__).toRational(e);return io({im:t,re:r})}return this};io.prototype.pow=function(e){throw new Error("Not yet implemented")};io.prototype.add=function(e){return this.complex_op("add",e,function(e,t,r,n){return{re:e.add(t),im:r.add(n)}})};io.prototype.factor=function(){if(this.__im__ instanceof uo||this.__im__ instanceof uo){var e=this.__re__,t=this.__im__;var r,n;if(e instanceof uo){r=e.toRational().mul(e.toRational())}else{r=e.mul(e)}if(t instanceof uo){n=t.toRational().mul(t.toRational())}else{n=t.mul(t)}return r.add(n)}else{return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__))}};io.prototype.modulus=function(){return this.factor().sqrt()};io.prototype.conjugate=function(){return io({re:this.__re__,im:this.__im__.sub()})};io.prototype.sqrt=function(){var e=this.modulus();var t,r;if(e.cmp(0)===0){t=r=e}else if(this.__re__.cmp(0)===1){t=uo(.5).mul(e.add(this.__re__)).sqrt();r=this.__im__.div(t).div(2)}else{r=uo(.5).mul(e.sub(this.__re__)).sqrt();if(this.__im__.cmp(0)===-1){r=r.sub()}t=this.__im__.div(r).div(2)}return io({im:r,re:t})};io.prototype.div=function(e){if(C.isNumber(e)&&!C.isComplex(e)){if(!(e instanceof C)){e=C(e)}var t=this.__re__.div(e);var r=this.__im__.div(e);return io({re:t,im:r})}else if(!C.isComplex(e)){throw new Error("[LComplex::div] Invalid value")}if(this.cmp(e)===0){var n=this.coerce(e),i=j(n,2),f=i[0],u=i[1];var l=f.__im__.div(u.__im__);return l.coerce(u.__re__)[0]}var h=this.coerce(e),a=j(h,2),p=a[0],o=a[1];var s=o.factor();var _=o.conjugate();var c=p.mul(_);if(!C.isComplex(c)){return c.div(s)}var d=c.__re__.op("/",s);var v=c.__im__.op("/",s);return io({re:d,im:v})};io.prototype.sub=function(e){return this.complex_op("sub",e,function(e,t,r,n){return{re:e.sub(t),im:r.sub(n)}})};io.prototype.mul=function(e){return this.complex_op("mul",e,function(e,t,r,n){var i={re:e.mul(t).sub(r.mul(n)),im:e.mul(n).add(t.mul(r))};return i})};io.prototype.complex_op=function(e,t,i){var u=this;var r=function e(t,r){var n=i(u.__re__,t,u.__im__,r);if("im"in n&&"re"in n){if(n.im.cmp(0)===0){return n.re}return io(n,true)}return n};if(typeof t==="undefined"){return r()}if(C.isNumber(t)&&!C.isComplex(t)){if(!(t instanceof C)){t=C(t)}var n=t.asType(0);t={__im__:n,__re__:t}}else if(!C.isComplex(t)){throw new Error("[LComplex::".concat(e,"] Invalid value"))}var a=t.__re__ instanceof C?t.__re__:this.__re__.asType(t.__re__);var o=t.__im__ instanceof C?t.__im__:this.__im__.asType(t.__im__);return r(a,o)};io._op={"+":"add","-":"sub","*":"mul","/":"div"};io.prototype._op=function(e,t){var r=io._op[e];return this[r](t)};io.prototype.cmp=function(e){var t=this.coerce(e),r=j(t,2),n=r[0],i=r[1];var u=n.__re__.coerce(i.__re__),a=j(u,2),o=a[0],f=a[1];var s=o.cmp(f);if(s!==0){return s}else{var l=n.__im__.coerce(i.__im__),c=j(l,2),h=c[0],p=c[1];return h.cmp(p)}};io.prototype.valueOf=function(){return[this.__re__,this.__im__].map(function(e){return e.valueOf()})};io.prototype.toString=function(){var e;if(this.__re__.cmp(0)!==0){e=[Pu(this.__re__)]}else{e=[]}var t=this.__im__.valueOf();var r=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY].includes(t);var n=Pu(this.__im__);if(!r&&!Number.isNaN(t)){var i=this.__im__.cmp(0);if(i<0||i===0&&this.__im__._minus){e.push("-")}else{e.push("+")}n=n.replace(/^-/,"")}e.push(n);e.push("i");return e.join("")};function uo(e){if(typeof this!=="undefined"&&!(this instanceof uo)||typeof this==="undefined"){return new uo(e)}if(!C.isNumber(e)){throw new Error("Invalid constructor call for LFloat")}if(e instanceof C){return uo(e.valueOf())}if(typeof e==="number"){if(Object.is(e,-0)){Object.defineProperty(this,"_minus",{value:true})}this.constant(e,"float")}}uo.prototype=Object.create(C.prototype);uo.prototype.constructor=uo;uo.prototype.toString=function(){if(this.__value__===Number.NEGATIVE_INFINITY){return"-inf.0"}if(this.__value__===Number.POSITIVE_INFINITY){return"+inf.0"}if(Number.isNaN(this.__value__)){return"+nan.0"}var e=this.__value__.toString();if(!C.isFloat(this.__value__)&&!e.match(/e/i)){var t=e+".0";return this._minus?"-"+t:t}return e.replace(/^([0-9]+)e/,"$1.0e")};uo.prototype._op=function(e,t){if(t instanceof C){t=t.__value__}var r=C._ops[e];if(e==="/"&&this.__value__===0&&t===0){return NaN}return uo(r(this.__value__,t))};uo.prototype.toRational=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){return ao(this.__value__.valueOf())}return oo(e.valueOf())(this.__value__.valueOf())};uo.prototype.sqrt=function(){var e=this.valueOf();if(this.cmp(0)<0){var t=uo(Math.sqrt(-e));return io({re:0,im:t})}return uo(Math.sqrt(e))};uo.prototype.abs=function(){var e=this.valueOf();if(e<0){e=-e}return uo(e)};var ao=oo(1e-10);function oo(n){return function(e){var t=function e(n,t,r){var i=function e(t,r){return r0){i=co(n,r)}else if(n.cmp(r)<=0){i=r}else if(r.cmp(0)>0){i=co(r,n)}else if(t.cmp(0)<0){i=C(co(n.sub(),r.sub())).sub()}else{i=C(0)}if(C.isFloat(t)||C.isFloat(e)){return uo(i)}return i}function co(e,t){var r=C(e).floor();var n=C(t).floor();if(e.cmp(r)<1){return r}else if(r.cmp(n)===0){var i=C(1).div(t.sub(n));var u=C(1).div(e.sub(r));return r.add(C(1).div(co(i,u)))}else{return r.add(C(1))}}function fo(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof fo)||typeof this==="undefined"){return new fo(e,t)}if(!C.isRational(e)){throw new Error("Invalid constructor call for LRational")}var r,n;if(e instanceof fo){r=C(e.__num__);n=C(e.__denom__)}else{r=C(e.num);n=C(e.denom)}if(!t&&n.cmp(0)!==0){var i=r.op("%",n).cmp(0)===0;if(i){return C(r.div(n))}}this.constant(r,n)}fo.prototype=Object.create(C.prototype);fo.prototype.constructor=fo;fo.prototype.constant=function(e,t){Object.defineProperty(this,"__num__",{value:e,enumerable:true});Object.defineProperty(this,"__denom__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"rational",enumerable:true})};fo.prototype.serialize=function(){return{num:this.__num__,denom:this.__denom__}};fo.prototype.pow=function(e){var t=e.cmp(0);if(t===0){return C(1)}if(t===-1){e=e.sub();var r=this.__denom__.pow(e);var n=this.__num__.pow(e);return fo({num:r,denom:n})}var i=this;e=e.valueOf();while(e>1){i=i.mul(this);e--}return i};fo.prototype.sqrt=function(){var e=this.__num__.sqrt();var t=this.__denom__.sqrt();if(e instanceof uo||t instanceof uo){return e.div(t)}return fo({num:e,denom:t})};fo.prototype.abs=function(){var e=this.__num__;var t=this.__denom__;if(e.cmp(0)===-1){e=e.sub()}if(t.cmp(0)!==1){t=t.sub()}return fo({num:e,denom:t})};fo.prototype.cmp=function(e){return C(this.valueOf(),true).cmp(e)};fo.prototype.toString=function(){var e=this.__num__.gcd(this.__denom__);var t,r;if(e.cmp(1)!==0){t=this.__num__.div(e);if(t instanceof fo){t=C(t.valueOf(true))}r=this.__denom__.div(e);if(r instanceof fo){r=C(r.valueOf(true))}}else{t=this.__num__;r=this.__denom__}var n=this.cmp(0)<0;if(n){if(t.abs().cmp(r.abs())===0){return t.toString()}}else if(t.cmp(r)===0){return t.toString()}return t.toString()+"/"+r.toString()};fo.prototype.valueOf=function(e){if(this.__denom__.cmp(0)===0){if(this.__num__.cmp(0)<0){return Number.NEGATIVE_INFINITY}return Number.POSITIVE_INFINITY}if(e){return C._ops["/"](this.__num__.value,this.__denom__.value)}return uo(this.__num__.valueOf()).div(this.__denom__.valueOf())};fo.prototype.mul=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__num__);var r=this.__denom__.mul(e.__denom__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.mul(a)};fo.prototype.div=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__denom__);var r=this.__denom__.mul(e.__num__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];var o=u.div(a);return o};fo.prototype._op=function(e,t){return this[to[e]](t)};fo.prototype.sub=function(e){if(typeof e==="undefined"){return this.mul(-1)}if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=e.__num__.sub();var r=e.__denom__;return this.add(fo({num:t,denom:r}))}if(!(e instanceof C)){e=C(e).sub()}else{e=e.sub()}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.add(a)};fo.prototype.add=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__denom__;var r=e.__denom__;var n=this.__num__;var i=e.__num__;var u,a;if(t!==r){a=r.mul(n).add(i.mul(t));u=t.mul(r)}else{a=n.add(i);u=t}return fo({num:a,denom:u})}if(C.isFloat(e)){return uo(this.valueOf()).add(e)}var o=C.coerce(this,e),s=j(o,2),c=s[0],f=s[1];return c.add(f)};function lo(e,t){if(typeof this!=="undefined"&&!(this instanceof lo)||typeof this==="undefined"){return new lo(e,t)}if(e instanceof lo){return lo(e.__value__,e._native)}if(!C.isBigInteger(e)){throw new Error("Invalid constructor call for LBigInteger")}this.constant(e,"bigint");Object.defineProperty(this,"_native",{value:t})}lo.prototype=Object.create(C.prototype);lo.prototype.constructor=lo;lo.bn_op={"+":"iadd","-":"isub","*":"imul","/":"idiv","%":"imod","|":"ior","&":"iand","~":"inot","<<":"ishrn",">>":"ishln"};lo.prototype.serialize=function(){return this.__value__.toString()};lo.prototype._op=function(e,t){if(typeof t==="undefined"){if(C.isBN(this.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](),false)}return lo(C._ops[e](this.__value__),true)}if(C.isBN(this.__value__)&&C.isBN(t.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](t),false)}var r=C._ops[e](this.__value__,t.__value__);if(e==="/"){var n=this.op("%",t).cmp(0)===0;if(n){return C(r)}return fo({num:this,denom:t})}return lo(r,true)};lo.prototype.sqrt=function(){var e;var t=this.cmp(0)<0;if(C.isNative(this.__value__)){e=C(Math.sqrt(t?-this.valueOf():this.valueOf()))}else if(C.isBN(this.__value__)){e=t?this.__value__.neg().sqrt():this.__value__.sqrt()}if(t){return io({re:0,im:e})}return e};C.NaN=C(NaN);function ho(e){var n=this;if(typeof this!=="undefined"&&!(this instanceof ho)||typeof this==="undefined"){return new ho(e)}h("InputPort",e,"function");$i(this,"__type__",xo);var i;Object.defineProperty(this,"__parser__",{enumerable:true,get:function e(){return i},set:function e(t){h("InputPort::__parser__",t,"parser");i=t}});this._read=e;this._with_parser=this._with_init_parser.bind(this,B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(n.char_ready()){t.next=5;break}t.next=3;return n._read();case 3:r=t.sent;i=new Li(r,{env:n});case 5:return t.abrupt("return",n.__parser__);case 6:case"end":return t.stop()}}},e)})));this.char_ready=function(){return!!this.__parser__&&this.__parser__.__lexer__.peek()!==Fo};this._make_defaults()}ho.prototype._make_defaults=function(){this.read=this._with_parser(function(e){return e.read_object()});this.read_line=this._with_parser(function(e){return e.__lexer__.read_line()});this.read_char=this._with_parser(function(e){return e.__lexer__.read_char()});this.read_string=this._with_parser(function(e,t){if(!C.isInteger(t)){var r=C.getType(t);Qo("read-string",r,"integer")}return e.__lexer__.read_string(t.valueOf())});this.peek_char=this._with_parser(function(e){return e.__lexer__.peek_char()})};ho.prototype._with_init_parser=function(o,s){var c=this;return B(z.mark(function e(){var r,n,i,u,a=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return o.call(c);case 2:r=t.sent;for(n=a.length,i=new Array(n),u=0;u"};function po(e){if(typeof this!=="undefined"&&!(this instanceof po)||typeof this==="undefined"){return new po(e)}h("OutputPort",e,"function");$i(this,"__type__",xo);this.write=e}po.prototype.is_open=function(){return this._closed!==true};po.prototype.close=function(){Object.defineProperty(this,"_closed",{get:function e(){return true},set:function e(){},configurable:false,enumerable:false});this.write=function(){throw new Error("output-port: port is closed")}};po.prototype.flush=function(){};po.prototype.toString=function(){return"#"};var _o=function(e){u(n,e);var r=fn(n);function n(e){var t;D(this,n);t=r.call(this,function(){var e;return(e=t)._write.apply(e,arguments)});h("BufferedOutputPort",e,"function");$i(i(t),"_fn",e,{hidden:true});$i(i(t),"_buffer",[],{hidden:true});return t}A(n,[{key:"flush",value:function e(){if(this._buffer.length){this._fn(this._buffer.join(""));this._buffer.length=0}}},{key:"_write",value:function e(){var t=this;for(var r=arguments.length,n=new Array(r),i=0;i"};vo.prototype.valueOf=function(){return this.__buffer__.map(function(e){return e.valueOf()}).join("")};function yo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof yo)||typeof this==="undefined"){return new yo(e,t)}h("OutputFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",xo);this.write=function(e){if(!$a.isString(e)){e=Pu(e)}else{e=e.valueOf()}r.fs().write(r._fd,e,function(e){if(e){throw e}})}}yo.prototype=Object.create(po.prototype);yo.prototype.constructor=yo;yo.prototype.fs=function(){if(!this._fs){this._fs=this.internal("fs")}return this._fs};yo.prototype.internal=function(e){return Yo.get("**internal-env**").get(e)};yo.prototype.close=function(){var n=this;return new Promise(function(t,r){n.fs().close(n._fd,function(e){if(e){r(e)}else{$i(n,"_fd",null,{hidden:true});po.prototype.close.call(n);t()}})})};yo.prototype.toString=function(){return"#")};function mo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof mo)||typeof this==="undefined"){return new mo(e)}h("InputStringPort",e,"string");t=t||qo;e=e.valueOf();this._with_parser=this._with_init_parser.bind(this,function(){if(!r.__parser__){r.__parser__=new Li(e,{env:t})}return r.__parser__});$i(this,"__type__",xo);this._make_defaults()}mo.prototype.char_ready=function(){return true};mo.prototype=Object.create(ho.prototype);mo.prototype.constructor=mo;mo.prototype.toString=function(){return"#"};function go(e){if(typeof this!=="undefined"&&!(this instanceof go)||typeof this==="undefined"){return new go(e)}h("InputByteVectorPort",e,"uint8array");$i(this,"__vector__",e);$i(this,"__type__",Ao);var r=0;Object.defineProperty(this,"__index__",{enumerable:true,get:function e(){return r},set:function e(t){h("InputByteVectorPort::__index__",t,"number");if(t instanceof C){t=t.valueOf()}if(typeof t==="bigint"){t=Number(t)}if(Math.floor(t)!==t){throw new Error("InputByteVectorPort::__index__ value is "+"not integer")}r=t}})}go.prototype=Object.create(ho.prototype);go.prototype.constructor=go;go.prototype.toString=function(){return"#"};go.prototype.close=function(){var t=this;$i(this,"__vector__",U);["read_u8","close","peek_u8","read_u8_vector"].forEach(function(e){t[e]=function(){throw new Error("Input-binary-port: port is closed")}});this.char_ready=function(){return false}};go.prototype.u8_ready=function(){return true};go.prototype.peek_u8=function(){if(this.__index__>=this.__vector__.length){return Fo}return this.__vector__[this.__index__]};go.prototype.skip=function(){if(this.__index__<=this.__vector__.length){++this.__index__}};go.prototype.read_u8=function(){var e=this.peek_u8();this.skip();return e};go.prototype.read_u8_vector=function(e){if(typeof e==="undefined"){e=this.__vector__.length}else if(e>this.__index__+this.__vector__.length){e=this.__index__+this.__vector__.length}if(this.peek_u8()===Fo){return Fo}return this.__vector__.slice(this.__index__,e)};function bo(){if(typeof this!=="undefined"&&!(this instanceof bo)||typeof this==="undefined"){return new bo}$i(this,"__type__",Ao);$i(this,"_buffer",[],{hidden:true});this.write=function(e){h("write",e,["number","uint8array"]);if(C.isNumber(e)){this._buffer.push(e.valueOf())}else{var t;(t=this._buffer).push.apply(t,q(Array.from(e)))}};Object.defineProperty(this,"__buffer__",{enumerable:true,get:function e(){return Uint8Array.from(this._buffer)}})}bo.prototype=Object.create(po.prototype);bo.prototype.constructor=bo;bo.prototype.close=function(){po.prototype.close.call(this);$i(this,"_buffer",null,{hidden:true})};bo.prototype._close_guard=function(){if(this._closed){throw new Error("output-port: binary port is closed")}};bo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};bo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};bo.prototype.toString=function(){return"#"};bo.prototype.valueOf=function(){return this.__buffer__};function wo(e,t){if(typeof this!=="undefined"&&!(this instanceof wo)||typeof this==="undefined"){return new wo(e,t)}mo.call(this,e);h("InputFilePort",t,"string");$i(this,"__filename__",t)}wo.prototype=Object.create(mo.prototype);wo.prototype.constructor=wo;wo.prototype.toString=function(){return"#")};function Do(e,t){if(typeof this!=="undefined"&&!(this instanceof Do)||typeof this==="undefined"){return new Do(e,t)}go.call(this,e);h("InputBinaryFilePort",t,"string");$i(this,"__filename__",t)}Do.prototype=Object.create(go.prototype);Do.prototype.constructor=Do;Do.prototype.toString=function(){return"#")};function Eo(e,t){if(typeof this!=="undefined"&&!(this instanceof Eo)||typeof this==="undefined"){return new Eo(e,t)}h("OutputBinaryFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",Ao);var u,r;this.write=function(e){var n=this;h("write",e,["number","uint8array"]);var i;if(!u){u=this.internal("fs")}if(!r){r=this.internal("Buffer")}if(C.isNumber(e)){i=r.from([e.valueOf()])}else{i=r.from(Array.from(e))}return new Promise(function(t,r){u.write(n._fd,i,function(e){if(e){r(e)}else{t()}})})}}Eo.prototype=Object.create(yo.prototype);Eo.prototype.constructor=Eo;Eo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};Eo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};var Ao=Symbol["for"]("binary");var xo=Symbol["for"]("text");var Fo=new ko;function ko(){}ko.prototype.toString=function(){return"#"};function Co(e){var c=this;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.stderr,n=t.stdin,i=t.stdout,u=t.command_line,a=u===void 0?null:u,o=F(t,cn);if(typeof this!=="undefined"&&!(this instanceof Co)||typeof this==="undefined"){return new Co(e,vn({stdin:n,stdout:i,stderr:r,command_line:a},o))}if(typeof e==="undefined"){e="anonymous"}this.__env__=Yo.inherit(e,o);this.__env__.set("parent.frame",y("parent.frame",function(){return c.__env__},qo.__env__["parent.frame"].__doc__));var f="**interaction-environment-defaults**";this.set(f,Ou(o).concat(f));var s=Lo.inherit("internal-".concat(e));if(pa(n)){s.set("stdin",n)}if(pa(r)){s.set("stderr",r)}if(pa(i)){s.set("stdout",i)}s.set("command-line",a);Vo(this.__env__,s)}Co.prototype.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Interpreter::exec",e,["string","array"],1);h("Interpreter::exec",t,"boolean",2);qo.set("**interaction-environment**",this.__env__);if(r===null){r=this.__env__}return vs(e,r,t?r:false)};Co.prototype.get=function(e){var t=this.__env__.get(e);if(Xu(t)){return t.bind(this.__env__)}return t};Co.prototype.set=function(e,t){return this.__env__.set(e,t)};Co.prototype.constant=function(e,t){return this.__env__.constant(e,t)};function Oo(e,t){this.name="LipsError";this.message=e;this.args=t;this.stack=(new Error).stack}Oo.prototype=new Error;Oo.prototype.constructor=Oo;function So(e,t,r){if(arguments.length===1){if(_(arguments[0])==="object"){e=arguments[0];t=null}else if(typeof arguments[0]==="string"){e={};t=null;r=arguments[0]}}this.__docs__=new Map;this.__env__=e;this.__parent__=t;this.__name__=r||"anonymous"}So.prototype.list=function(){return Ou(this.__env__)};So.prototype.fs=function(){return this.get("**fs**")};So.prototype.unset=function(e){if(e instanceof L){e=e.valueOf()}if(e instanceof $a){e=e.valueOf()}delete this.__env__[e]};So.prototype.inherit=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(_(e)==="object"){t=e}if(!e||_(e)==="object"){e="child of "+(this.__name__||"unknown")}return new So(t||{},this,e)};So.prototype.doc=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(t){if(!r){t=Hi(t)}this.__docs__.set(e,t);return this}if(this.__docs__.has(e)){return this.__docs__.get(e)}if(this.__parent__){return this.__parent__.doc(e)}};So.prototype.newFrame=function(e,t){var n=this.inherit("__frame__");n.set("parent.frame",y("parent.frame",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;e=e.valueOf();var t=n.__parent__;if(!(t instanceof So)){return U}if(e<=0){return t}var r=t.get("parent.frame");return r(e-1)},qo.__env__["parent.frame"].__doc__));t.callee=e;n.set("arguments",t);return n};So.prototype._lookup=function(e){if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(this.__env__.hasOwnProperty(e)){return Bo(this.__env__[e])}if(this.__parent__){return this.__parent__._lookup(e)}};So.prototype.toString=function(){return"#"};So.prototype.clone=function(){var t=this;var r={};Object.keys(this.__env__).forEach(function(e){r[e]=t.__env__[e]});return new So(r,this.__parent__,this.__name__)};So.prototype.merge=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"merge";h("Environment::merge",e,"environment");return this.inherit(t,e.__env__)};function Bo(e){if(typeof this!=="undefined"&&!(this instanceof Bo)||typeof this==="undefined"){return new Bo(e)}this.value=e}Bo.isUndefined=function(e){return e instanceof Bo&&typeof e.value==="undefined"};Bo.prototype.valueOf=function(){return this.value};function jo(e){if(e.length){if(e.length===1){return e[0]}}if(typeof this!=="undefined"&&!(this instanceof jo)||typeof this==="undefined"){return new jo(e)}this.__values__=e}jo.prototype.toString=function(){return this.__values__.map(function(e){return Pu(e)}).join("\n")};jo.prototype.valueOf=function(){return this.__values__};So.prototype.get=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};h("Environment::get",e,["symbol","string"]);var r=t.throwError,c=r===void 0?true:r;var n=e;if(n instanceof L||n instanceof $a){n=n.valueOf()}var i=this._lookup(n);if(i instanceof Bo){if(Bo.isUndefined(i)){return undefined}return oa(i.valueOf())}var u;if(e instanceof L&&e[L.object]){u=e[L.object]}else if(typeof n==="string"){u=n.split(".").filter(Boolean)}if(u&&u.length>0){var f=u,a=m(f),o=a[0],s=a.slice(1);i=this._lookup(o);if(s.length){try{if(i instanceof Bo){i=i.valueOf()}else{i=No(gn,o);if(Xu(i)){i=sa(i)}}if(typeof i!=="undefined"){return No.apply(void 0,[i].concat(q(s)))}}catch(e){throw e}}else if(i instanceof Bo){return oa(i.valueOf())}i=No(gn,n)}if(typeof i!=="undefined"){return i}if(c){throw new Error("Unbound variable `"+n.toString()+"'")}};So.prototype.set=function(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Environment::set",e,["string","symbol"]);if(C.isNumber(t)){t=C(t)}if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}this.__env__[e]=t;if(r){this.doc(e,r,true)}return this};So.prototype.constant=function(t,e){var r=this;if(this.__env__.hasOwnProperty(t)){throw new Error("Environment::constant: ".concat(t," already exists"))}if(arguments.length===1&&wu(arguments[0])){var n=arguments[0];Object.keys(n).forEach(function(e){r.constant(t,n[e])})}else{Object.defineProperty(this.__env__,t,{value:e,enumerable:true})}return this};So.prototype.has=function(e){return this.__env__.hasOwnProperty(e)};So.prototype.ref=function(e){var t=this;while(true){if(!t){break}if(t.has(e)){return t}t=t.__parent__}};So.prototype.parents=function(){var e=this;var t=[];while(e){t.unshift(e);e=e.__parent__}return t};function Io(e){if(ra(e)){return e.then(Io)}if(e instanceof M||e instanceof L){e[ya]=true}return e}var Po=Mi(wi('(lambda ()\n "[native code]"\n (throw "Invalid Invocation"))'))[0];var No=y("get",function c(e){var t;for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("peek-char",e,"input-port");return e.peek_char()},"(peek-char port)\n\n This function reads and returns a character from the string\n port, or, if there is no more data in the string port, it\n returns an EOF."),"read-line":y("read-line",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-line",e,"input-port");return e.read_line()},"(read-char port)\n\n This function reads and returns the next line from the input\n port."),"read-char":y("read-char",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-char",e,"input-port");return e.read_char()},"(read-char port)\n\n This function reads and returns the next character from the\n input port."),read:y("read",function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=f.length>0&&f[0]!==undefined?f[0]:null;if(!$a.isString(r)){t.next=30;break}n=false;i=false;t.prev=4;a=yn(Mi(r,this));case 6:t.next=8;return a.next();case 8:if(!(n=!(o=t.sent).done)){t.next=14;break}s=o.value;return t.abrupt("return",s);case 11:n=false;t.next=6;break;case 14:t.next=20;break;case 16:t.prev=16;t.t0=t["catch"](4);i=true;u=t.t0;case 20:t.prev=20;t.prev=21;if(!(n&&a["return"]!=null)){t.next=25;break}t.next=25;return a["return"]();case 25:t.prev=25;if(!i){t.next=28;break}throw u;case 28:return t.finish(25);case 29:return t.finish(20);case 30:if(r===null){c=Ro(this,"stdin")}else{c=r}Xo("read",c,"input-port");return t.abrupt("return",c.read.call(this));case 33:case"end":return t.stop()}}},e,this,[[4,16,20,30],[21,,25,29]])}));function t(){return e.apply(this,arguments)}return t}(),"(read [string])\n\n This function, if used with a string, will parse it and\n return the LIPS code, if there is any. If called with a\n port, it will parse the next item from the port. If called\n without an input, it will read a string from standard input\n (using the browser's prompt or a user defined input method)\n and calls itself with that string. This function can be used\n together with `eval` to evaluate code from a string."),pprint:y("pprint",function e(t){if(t instanceof M){t=new Gs.Formatter(t.toString(true))["break"]().format();qo.get("display").call(qo,t)}else{qo.get("write").call(qo,t)}qo.get("newline").call(qo)},"(pprint expression)\n\n This function will pretty print its input to stdout. If it is called\n with a non-list, it will just call the print function on its\n input."),print:y("print",function e(){var t=qo.get("display");var r=qo.get("newline");for(var n=arguments.length,i=new Array(n),u=0;u1?r-1:0),i=1;in.length){throw new Error("Not enough arguments")}var o=0;var s=qo.get("repr");t=t.replace(u,function(e){var t=e[1];if(t==="~"){return"~"}else if(t==="%"){return"\n"}else{var r=n[o++];if(t==="a"){return s(r)}else{return s(r,true)}}});a=t.match(/~([\S])/);if(a){throw new Error("format: Unrecognized escape seqence ".concat(a[1]))}return t},"(format string n1 n2 ...)\n\n This function accepts a string template and replaces any\n escape sequences in its inputs:\n\n * ~a value as if printed with `display`\n * ~s value as if printed with `write`\n * ~% newline character\n * ~~ literal tilde '~'\n\n If there are missing inputs or other escape characters it\n will error."),display:y("display",function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(r===null){r=Ro(this,"stdout")}else{h("display",r,"output-port")}var n=qo.get("repr")(t);r.write.call(qo,n)},"(display string [port])\n\n This function outputs the string to the standard output or\n the port if given. No newline."),"display-error":y("display-error",function e(){var t=Ro(this,"stderr");var r=qo.get("repr");for(var n=arguments.length,i=new Array(n),u=0;u1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;if(r){r=this}var i=this;var u;var a=_s(e.cdr.car,{env:this,dynamic_scope:r,error:n});a=as(a);function o(t,r,n){if(ra(t)){return t.then(function(e){return o(t,e,n)})}if(ra(r)){return r.then(function(e){return o(t,e,n)})}if(ra(n)){return n.then(function(e){return o(t,r,e)})}i.get("set-obj!").call(i,t,r,n);return n}if(e.car instanceof M&&L.is(e.car.car,".")){var f=e.car.cdr.car;var l=e.car.cdr.cdr.car;var h=_s(f,{env:this,dynamic_scope:r,error:n});var p=_s(l,{env:this,dynamic_scope:r,error:n});return o(h,p,a)}if(!(e.car instanceof L)){throw new Error("set! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var s=e.car.valueOf();u=this.ref(e.car.__name__);return Yi(a,function(e){if(!u){var t=s.split(".");if(t.length>1){var r=t.pop();var n=t.join(".");var i=c.get(n,{throwError:false});if(i){o(i,r,e);return}}throw new Error("Unbound variable `"+s+"'")}u.set(s,e)})}),"(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non emtpy slot and sets it."),"unset!":y(new Vu("set!",function(e){if(!(e.car instanceof L)){throw new Error("unset! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var t=e.car;var r=this.ref(t);if(r){delete r.__env__[t.__name__]}}),"(unset! name)\n\n Function to delete the specified name from environment.\n Trying to access the name afterwards will error."),"set-car!":y("set-car!",function(e,t){h("set-car!",e,"pair");e.car=t},"(set-car! obj value)\n\n Function that sets the car (first item) of the list/pair to specified value.\n The old value is lost."),"set-cdr!":y("set-cdr!",function(e,t){h("set-cdr!",e,"pair");e.cdr=t},"(set-cdr! obj value)\n\n Function that sets the cdr (tail) of the list/pair to specified value.\n It will destroy the list. The old tail is lost."),"empty?":y("empty?",function(e){return typeof e==="undefined"||e===U},"(empty? object)\n\n Function that returns #t if value is nil (an empty list) or undefined."),gensym:y("gensym",Fi,"(gensym)\n\n Generates a unique symbol that is not bound anywhere,\n to use with macros as meta name."),load:y("load",function e(o,t){h("load",o,"string");var s=this;if(s.__name__==="__frame__"){s=s.__parent__}if(!(t instanceof So)){if(s===qo){t=s}else{t=this.get("**interaction-environment**")}}var c="**module-path**";var f=qo.get(c,{throwError:false});o=o.valueOf();if(!o.match(/.[^.]+$/)){o+=".scm"}var r=o.match(/\.xcb$/);function l(e){if(r){e=Vs(e)}else{if(us(e)==="buffer"){e=e.toString()}e=e.replace(/^#!.*/,"");if(e.match(/^\{/)){e=Rs(e)}}return vs(e,t)}function n(e){return gn.fetch(e).then(function(e){return r?e.arrayBuffer():e.text()}).then(function(e){if(r){e=new Uint8Array(e)}return e})}if(Go()){return new Promise(function(){var r=B(z.mark(function e(r,n){var i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:i=An("path");if(!f){t.next=6;break}f=f.valueOf();o=i.join(f,o);t.next=12;break;case 6:u=s.get("command-line",{throwError:false});if(!u){t.next=11;break}t.next=10;return u();case 10:a=t.sent;case 11:if(a&&a!==U){process.cwd();o=i.join(i.dirname(a.car.valueOf()),o)}case 12:qo.set(c,i.dirname(o));An("fs").readFile(o,function(e,t){if(e){n(e);qo.set(c,f)}else{try{l(t).then(function(){r();qo.set(c,f)})["catch"](n)}catch(e){n(e)}}});case 14:case"end":return t.stop()}}},e)}));return function(e,t){return r.apply(this,arguments)}}())}if(f){f=f.valueOf();o=f+"/"+o.replace(/^\.?\/?/,"")}return n(o).then(function(e){qo.set(c,o.replace(/\/[^/]*$/,""));return l(e)}).then(function(){})["finally"](function(){qo.set(c,f)})},"(load filename)\n (load filename environment)\n\n Fetches the file (from disk or network) and evaluates its content as LIPS code.\n If the second argument is provided and it's an environment the evaluation\n will happen in that environment."),do:y(new Vu("do",function(){var r=B(z.mark(function e(r,h){var n,i,u,o,s,a,c,f,l,p,_;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=h.dynamic_scope,i=h.error;u=this;if(n){n=u}o=u.inherit("do");s=r.car;a=r.cdr.car;c=r.cdr.cdr;if(c!==U){c=new M(L("begin"),c)}f={env:u,dynamic_scope:n,error:i};l=s;case 10:if(!(l!==U)){t.next=21;break}p=l.car;t.t0=o;t.t1=p.car;t.next=16;return _s(p.cdr.car,f);case 16:t.t2=t.sent;t.t0.set.call(t.t0,t.t1,t.t2);l=l.cdr;t.next=10;break;case 21:f={env:o,dynamic_scope:n,error:i};_=z.mark(function e(){var r,n,i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(c!==U)){t.next=3;break}t.next=3;return Gs.evaluate(c,f);case 3:r=s;n={};case 5:if(!(r!==U)){t.next=15;break}i=r.car;if(!(i.cdr.cdr!==U)){t.next=12;break}t.next=10;return _s(i.cdr.cdr.car,f);case 10:u=t.sent;n[i.car.valueOf()]=u;case 12:r=r.cdr;t.next=5;break;case 15:a=Object.getOwnPropertySymbols(n);Object.keys(n).concat(a).forEach(function(e){o.set(e,n[e])});case 17:case"end":return t.stop()}}},e)});case 23:t.next=25;return _s(a.car,f);case 25:t.t3=t.sent;if(!(t.t3===false)){t.next=30;break}return t.delegateYield(_(),"t4",28);case 28:t.next=23;break;case 30:if(!(a.cdr!==U)){t.next=34;break}t.next=33;return _s(a.cdr.car,f);case 33:return t.abrupt("return",t.sent);case 34:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()),"(do (( )) (test return) . body)\n\n Iteration macro that evaluates the expression body in scope of the variables.\n On each loop it changes the variables according to the expression and runs\n test to check if the loop should continue. If test is a single value, the macro\n will return undefined. If the test is a pair of expressions the macro will evaluate\n and return the second expression after the loop exits."),if:y(new Vu("if",function(r,e){var n=e.dynamic_scope,i=e.error;if(n){n=this}var u=this;var t=function e(t){if(t===false){return _s(r.cdr.cdr.car,{env:u,dynamic_scope:n,error:i})}else{return _s(r.cdr.car,{env:u,dynamic_scope:n,error:i})}};if(r===U){throw new Error("too few expressions for `if`")}var a=_s(r.car,{env:u,dynamic_scope:n,error:i});return Yi(a,t)}),"(if cond true-expr false-expr)\n\n Macro that evaluates cond expression and if the value is true, it\n evaluates and returns true-expression, if not it evaluates and returns\n false-expression."),"let-env":new Vu("let-env",function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=e.dynamic_scope,n=e.error;h("let-env",t,"pair");var i=_s(t.car,{env:this,dynamic_scope:r,error:n});return Yi(i,function(e){h("let-env",e,"environment");return _s(M(L("begin"),t.cdr),{env:e,dynamic_scope:r,error:n})})},"(let-env env . body)\n\n Special macro that evaluates body in context of given environment\n object."),letrec:y(ja(Symbol["for"]("letrec")),"(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentialy and the next value can access the\n previous values/names."),"letrec*":y(ja(Symbol["for"]("letrec")),"(letrec* ((a value-a) (b value-b) ...) . body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so you can use recursive code as well as referencing the previous binding.\n\n In LIPS both letrec and letrec* behave the same."),"let*":y(ja(Symbol["for"]("let*")),"(let* ((a value-a) (b value-b) ...) . body)\n\n Macro similar to `let`, but the subsequent bindings after the first\n are evaluated in the environment including the previous let variables,\n so you can define one variable, and use it in the next's definition."),let:y(ja(Symbol["for"]("let")),"(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names, and then evaluates the body in context of that environment.\n Values are evaluated sequentialy but you can't access previous values/names\n when the next are evaluated. You can only get them in the body of the let expression.\n (If you want to define multiple variables and use them in each other's definitions,\n use `let*`.)"),"begin*":y(Ia("begin*",function(e){return e.pop()}),"(begin* . body)\n\n This macro is a parallel version of begin. It evaluates each expression\n in the body and if it's a promise it will await it in parallel and return \n the value of the last expression (i.e. it uses Promise.all())."),begin:y(new Vu("begin",function(e,t){var n=Object.assign({},t);var i=qo.get("list->array")(e);if(n.dynamic_scope){n.dynamic_scope=this}n.env=this;var u;return function t(){if(i.length){var e=i.shift();var r=_s(e,n);return Yi(r,function(e){u=e;return t()})}else{return u}}()}),"(begin . args)\n\n Macro that runs a list of expressions in order and returns the value\n of the last one. It can be used in places where you can only have a\n single expression, like (if)."),ignore:new Vu("ignore",function(e,t){var r=t.dynamic_scope,n=t.error;var i={env:this,error:n};if(r){i.dynamic_scope=this}_s(new M(new L("begin"),e),i)},"(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It wil discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."),"call/cc":y(Vu.defmacro("call/cc",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=vn({env:this},t);return Yi(_s(e.car,r),function(e){if(Xu(e)){return e(new hs(null))}})}),"(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORED BY LIPS RIGHT NOW"),define:y(Vu.defmacro("define",function(r,e){var n=this;if(r.car instanceof M&&r.car.car instanceof L){var t=new M(new L("define"),new M(r.car.car,new M(new M(new L("lambda"),new M(r.car.cdr,r.cdr)))));return t}else if(e.macro_expand){return}if(e.dynamic_scope){e.dynamic_scope=this}e.env=n;var i=r.cdr.car;var u;if(i instanceof M){i=_s(i,e);u=true}else if(i instanceof L){i=n.get(i)}h("define",r.car,"symbol");return Yi(i,function(e){if(n.__name__===Ku.__merge_env__){n=n.__parent__}if(u&&(Xu(e)&&Ca(e)||e instanceof Ku)){e.__name__=r.car.valueOf();if(e.__name__ instanceof $a){e.__name__=e.__name__.valueOf()}}var t;if(r.cdr.cdr instanceof M&&$a.isString(r.cdr.cdr.car)){t=r.cdr.cdr.car.valueOf()}n.set(r.car,e,t,true)})}),'(define name expression)\n (define name expression "doc string")\n (define (function-name . args) . body)\n\n Macro for defining values. It can be used to define variables,\n or functions. If the first argument is list it will create a function\n with name being first element of the list. This form expands to\n `(define function-name (lambda args body))`'),"set-obj!":y("set-obj!",function(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var i=_(e);if(Zu(e)||i!=="object"&&i!=="function"){var u=Qo("set-obj!",us(e),["object","function"]);throw new Error(u)}h("set-obj!",t,["string","symbol","number"]);e=sa(e);t=t.valueOf();if(arguments.length===2){delete e[t]}else if(Nu(e)&&Xu(r)){e[t]=sa(r);e[t][Da]=true}else if(Xu(r)||ts(r)||r===U){e[t]=r}else{e[t]=r&&!Nu(r)?r.valueOf():r}if(Du){var a=e[t];Object.defineProperty(e,t,vn(vn({},n),{},{value:a}))}},"(set-obj! obj key value)\n (set-obj! obj key value props)\n\n Function set a property of a JavaScript object. props should be a vector of pairs,\n passed to Object.defineProperty."),"null-environment":y("null-environment",function(){return qo.inherit("null")},"(null-environment)\n\n Returns a clean environment with only the standard library."),values:y("values",function e(){for(var t=arguments.length,r=new Array(t),n=0;n1&&arguments[1]!==undefined?arguments[1]:{},h=e.dynamic_scope,p=e.error;var _=this;var d;if(l.cdr instanceof M&&$a.isString(l.cdr.car)&&l.cdr.cdr!==U){d=l.cdr.car.valueOf()}function v(){var e;if(h){if(!(this instanceof So)){e=_}else{e=this}}else{e=_}e=e.inherit("lambda");var t=l.car;var r=0;var n;if(typeof this!=="undefined"&&!(this instanceof So)){if(this&&!this.__instance__){Object.defineProperty(this,"__instance__",{enumerable:false,get:function e(){return true},set:function e(){},configurable:false})}e.set("this",this)}for(var i=arguments.length,u=new Array(i),a=0;a>> "+c.toString());if(c){o=c}var d=r.merge(t,Ku.__merge_env__);if(l){return{expr:o,scope:d}}var v=_s(o,vn(vn({},p),{},{env:d}));return Wu(v,_)}i=i.cdr}}catch(e){e.message+=" in macro: ".concat(y.toString(true));throw e}throw new Error("Invalid Syntax ".concat(e.toString(true)))},b);r.__code__=y;return r},"(syntax-rules () (pattern expression) ...)\n\n Base of hygienic macros, it will return a new syntax expander\n that works like Lisp macros."),quote:y(new Vu("quote",function(e){return Io(e.car)}),"(quote expression) or 'expression\n\n Macro that returns a single LIPS expression as data (it won't evaluate the\n argument). It will return a list if put in front of LIPS code.\n And if put in front of a symbol it will return the symbol itself, not the value\n bound to that name."),"unquote-splicing":y("unquote-splicing",function(){throw new Error("You can't call `unquote-splicing` outside of quasiquote")},"(unquote-splicing code) or ,@code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n splices the list into quasiquote's result. If it is not the last element of the expression,\n the computed value must be a pair."),unquote:y("unquote",function(){throw new Error("You can't call `unquote` outside of quasiquote")},"(unquote code) or ,code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n substitutes the value into quasiquote's result."),quasiquote:Vu.defmacro("quasiquote",function(e,t){var o=t.dynamic_scope,s=t.error;var c=this;if(o){o=c}function a(e){return e instanceof M||wu(e)||Array.isArray(e)}function h(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:a;if(e instanceof M){var n=e.car;var i=e.cdr;if(r(n)){n=t(n)}if(r(i)){i=t(i)}if(ra(n)||ra(i)){return Ci([n,i]).then(function(e){var t=j(e,2),r=t[0],n=t[1];return new M(r,n)})}else{return new M(n,i)}}return e}function u(e,t){if(e instanceof M){if(t!==U){e.append(t)}}else{e=new M(e,t)}return e}function r(e){return!!e.filter(function(e){return e instanceof M&&L.is(e.car,/^(unquote|unquote-splicing)$/)}).length}function p(e,n,i){return e.reduce(function(e,t){if(!(t instanceof M)){e.push(t);return e}if(L.is(t.car,"unquote-splicing")){var r;if(n+11){var t="You can't splice multiple atoms inside list";throw new Error(t)}if(!(i.cdr instanceof M&&r[0]===U)){return r[0]}}r=r.map(function(e){if(d.has(e)){return e.clone()}else{d.add(e);return e}});var n=l(i.cdr,0,1);if(n===U&&r[0]===U){return undefined}return Yi(n,function(e){if(r[0]===U){return e}if(r.length===1){return u(r[0],e)}var t=r.reduce(function(e,t){return u(e,t)});return u(t,e)})})}(i.car.cdr)}var d=new Set;function l(e,t,r){if(e instanceof M){if(e.car instanceof M){if(L.is(e.car.car,"unquote-splicing")){return f(e,t+1,r)}if(L.is(e.car.car,"unquote")){if(t+2===r&&e.car.cdr instanceof M&&e.car.cdr.car instanceof M&&L.is(e.car.cdr.car.car,"unquote-splicing")){var n=e.car.cdr;return new M(new M(new L("unquote"),f(n,t+2,r)),U)}else if(e.car.cdr instanceof M&&e.car.cdr.cdr!==U){if(e.car.cdr.car instanceof M){var i=[];return function t(r){if(r===U){return M.fromArray(i)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){i.push(e);return t(r.cdr)})}(e.car.cdr)}else{return e.car.cdr}}}}if(L.is(e.car,"quasiquote")){var u=l(e.cdr,t,r+1);return new M(e.car,u)}if(L.is(e.car,"quote")){return new M(e.car,l(e.cdr,t,r))}if(L.is(e.car,"unquote")){t++;if(tr){throw new Error("You can't call `unquote` outside "+"of quasiquote")}if(e.cdr instanceof M){if(e.cdr.cdr!==U){if(e.cdr.car instanceof M){var a=[];return function t(r){if(r===U){return M.fromArray(a)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){a.push(e);return t(r.cdr)})}(e.cdr)}else{return e.cdr}}else{return _s(e.cdr.car,{env:c,dynamic_scope:o,error:s})}}else{return e.cdr}}return h(e,function(e){return l(e,t,r)})}else if(wu(e)){return _(e,t,r)}else if(e instanceof Array){return p(e,t,r)}return e}function n(e){if(e instanceof M){delete e[ya];if(!e.haveCycles("car")){n(e.car)}if(!e.haveCycles("cdr")){n(e.cdr)}}}if(wu(e.car)&&!r(Object.values(e.car))){return Io(e.car)}if(Array.isArray(e.car)&&!r(e.car)){return Io(e.car)}if(e.car instanceof M&&!e.car.find("unquote")&&!e.car.find("unquote-splicing")&&!e.car.find("quasiquote")){return Io(e.car)}var i=l(e.car,0,1);return Yi(i,function(e){n(e);return Io(e)})},"(quasiquote list)\n\n Similar macro to `quote` but inside it you can use special\n expressions (unquote x) abbreviated to ,x that will evaluate x\n and insert its value verbatim or (unquote-splicing x) abbreviated to ,@x that will\n evaluate x and splice the value into the result. Best used with macros but it can be used outside."),clone:y("clone",function e(t){h("clone",t,"pair");return t.clone()},"(clone list)\n\n Function that returns a clone of the list, that does not share any pairs\n with the original, so the clone can be safely mutated without affecting the original."),append:y("append",function e(){var t;for(var r=arguments.length,n=new Array(r),i=0;iarray")(t).reverse();return qo.get("array->list")(r)}else if(!(t instanceof Array)){throw new Error(Qo("reverse",us(t),"array or pair"))}else{return t.reverse()}},"(reverse list)\n\n Function that reverses the list or array. If value is not a list\n or array it will error."),nth:y("nth",function e(t,r){h("nth",t,"number");h("nth",r,["array","pair"]);if(r instanceof M){var n=r;var i=0;while(iarray")(r).join(t)},"(join separator list)\n\n Function that returns a string by joining elements of the list using separator."),split:y("split",function e(t,r){h("split",t,["regex","string"]);h("split",r,"string");return qo.get("array->list")(r.split(t))},"(split separator string)\n\n Function that creates a list by splitting string by separator which can\n be a string or regular expression."),replace:y("replace",function e(t,r,n){h("replace",t,["regex","string"]);h("replace",r,["string","function"]);h("replace",n,"string");return n.replace(t,r)},"(replace pattern replacement string)\n\n Function that changes pattern to replacement inside string. Pattern can be a string\n or regex and replacement can be function or string. See Javascript String.replace()."),match:y("match",function e(t,r){h("match",t,["regex","string"]);h("match",r,"string");var n=r.match(t);return n?qo.get("array->list")(n):false},"(match pattern string)\n\n Function that returns a match object from JavaScript as a list or #f if no match."),search:y("search",function e(t,r){h("search",t,["regex","string"]);h("search",r,"string");return r.search(t)},"(search pattern string)\n\n Function that returns the first found index of the pattern inside a string."),repr:y("repr",function e(t,r){return Pu(t,r)},"(repr obj)\n\n Function that returns a LIPS code representation of the object as a string."),"escape-regex":y("escape-regex",function(e){h("escape-regex",e,"string");return _i(e.valueOf())},"(escape-regex string)\n\n Function that returns a new string where all special operators used in regex,\n are escaped with backslashes so they can be used in the RegExp constructor\n to match a literal string."),env:y("env",function e(e){e=e||this;var t=Object.keys(e.__env__).map(L);var r;if(t.length){r=M.fromArray(t)}else{r=U}if(e.__parent__ instanceof So){return qo.get("env")(e.__parent__).append(r)}return r},"(env)\n (env obj)\n\n Function that returns a list of names (functions, macros and variables)\n that are bound in the current environment or one of its parents."),new:y("new",function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2&&arguments[2]!==undefined?arguments[2]:Bi.LITERAL;h("set-special!",e,"string",1);h("set-special!",t,"symbol",2);Bi.append(e.valueOf(),t,r)},'(set-special! symbol name [type])\n\n Add a special symbol to the list of transforming operators by the parser.\n e.g.: `(add-special! "#" \'x)` will allow to use `#(1 2 3)` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional, and it can be one of two values:\n lips.specials.LITERAL, which is the default behavior, or\n lips.specials.SPLICE which causes the value to be unpacked into the expression.\n This can be used for e.g. to make `#(1 2 3)` into (x 1 2 3) that is needed\n by # that defines vectors.'),get:No,".":No,unbind:y(sa,"(unbind fn)\n\n Function that removes the weak 'this' binding from a function so you\n can get properties from the actual function object."),type:y(us,"(type object)\n\n Function that returns the type of an object as string."),debugger:y("debugger",function(){debugger},'(debugger)\n\n Function that triggers the JavaScript debugger (e.g. the browser devtools)\n using the "debugger;" statement. If a debugger is not running this\n function does nothing.'),in:y("in",function(e,t){if(e instanceof L||e instanceof $a||e instanceof C){e=e.valueOf()}return e in aa(t)},'(in key value)\n\n Function that uses the Javascript "in" operator to check if key is\n a valid property in the value.'),instanceof:y("instanceof",function(e,t){return t instanceof sa(e)},"(instanceof type obj)\n\n Predicate that tests if the obj is an instance of type."),"prototype?":y("prototype?",Nu,"(prototype? obj)\n\n Predicate that tests if value is a valid JavaScript prototype,\n i.e. calling (new) with it will not throw ' is not a constructor'."),"macro?":y("macro?",function(e){return e instanceof Vu},"(macro? expression)\n\n Predicate that tests if value is a macro."),"function?":y("function?",Xu,"(function? expression)\n\n Predicate that tests if value is a callable function."),"real?":y("real?",function(e){if(us(e)!=="number"){return false}if(e instanceof C){return e.isFloat()}return C.isFloat(e)},"(real? number)\n\n Predicate that tests if value is a real number (not complex)."),"number?":y("number?",function(e){return Number.isNaN(e)||C.isNumber(e)},"(number? expression)\n\n Predicate that tests if value is a number or NaN value."),"string?":y("string?",function(e){return $a.isString(e)},"(string? expression)\n\n Predicate that tests if value is a string."),"pair?":y("pair?",function(e){return e instanceof M},"(pair? expression)\n\n Predicate that tests if value is a pair or list structure."),"regex?":y("regex?",function(e){return e instanceof RegExp},"(regex? expression)\n\n Predicate that tests if value is a regular expression."),"null?":y("null?",function(e){return Zu(e)},"(null? expression)\n\n Predicate that tests if value is null-ish (i.e. undefined, nil, or Javascript null)."),"boolean?":y("boolean?",function(e){return typeof e==="boolean"},"(boolean? expression)\n\n Predicate that tests if value is a boolean (#t or #f)."),"symbol?":y("symbol?",function(e){return e instanceof L},"(symbol? expression)\n\n Predicate that tests if value is a LIPS symbol."),"array?":y("array?",function(e){return e instanceof Array},"(array? expression)\n\n Predicate that tests if value is an arrray."),"object?":y("object?",function(e){return e!==U&&e!==null&&!(e instanceof za)&&!(e instanceof RegExp)&&!(e instanceof $a)&&!(e instanceof M)&&!(e instanceof C)&&_(e)==="object"&&!(e instanceof Array)},"(object? expression)\n\n Predicate that tests if value is an plain object (not another LIPS type)."),flatten:y("flatten",function e(t){h("flatten",t,"pair");return t.flatten()},"(flatten list)\n\n Returns a shallow list from tree structure (pairs)."),"array->list":y("array->list",function(e){h("array->list",e,"array");return M.fromArray(e)},"(array->list array)\n\n Function that converts a JavaScript array to a LIPS cons list."),"tree->array":y("tree->array",gu("tree->array",true),"(tree->array list)\n\n Function that converts a LIPS cons tree structure into a JavaScript array."),"list->array":y("list->array",gu("list->array"),"(list->array list)\n\n Function that converts a LIPS list into a JavaScript array."),apply:y("apply",function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;iarray").call(this,u));return t.apply(this,fs(t,n))},"(apply fn list)\n\n Function that calls fn with the list of arguments."),length:y("length",function e(t){if(!t||t===U){return 0}if(t instanceof M){return t.length()}if("length"in t){return t.length}},'(length expression)\n\n Function that returns the length of the object. The object can be a LIPS\n list or any object that has a "length" property. Returns undefined if the\n length could not be found.'),"string->number":y("string->number",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;h("string->number",e,"string",1);h("string->number",t,"number",2);e=e.valueOf();t=t.valueOf();if(e.match(Wn)||e.match(Kn)){return ti(e,t)}else if(e.match(Qn)||e.match(Jn)){return ii(e,t)}else{var r=t===10&&!e.match(/e/i)||t===16;if(e.match(Hn)&&r||e.match(Gn)){return ri(e,t)}if(e.match(Rn)){return oi(e)}}return false},"(string->number number [radix])\n\n Function that parses a string into a number."),try:y(new Vu("try",function(t,e){var c=this;var f=e.dynamic_scope,l=e.error;return new Promise(function(i,n){var u,a;if(L.is(t.cdr.car.car,"catch")){u=t.cdr.car;if(t.cdr.cdr instanceof M&&L.is(t.cdr.cdr.car.car,"finally")){a=t.cdr.cdr.car}}else if(L.is(t.cdr.car.car,"finally")){a=t.cdr.car}if(!(a||u)){throw new Error("try: invalid syntax")}var o=i;if(a){o=function e(t,r){o=n;Yi(_s(new M(new L("begin"),a.cdr),s),function(){r(t)})}}var s={env:c,error:function e(t){var r=c.inherit("try");if(u){r.set(u.cdr.car.car,t);var n={env:r,error:l};if(f){n.dynamic_scope=c}Yi(_s(new M(new L("begin"),u.cdr.cdr),n),function(e){o(e,i)})}else{o(t,l)}}};if(f){s.dynamic_scope=c}var e=_s(t.car,s);if(ra(e)){e.then(function(e){o(e,i)})["catch"](s.error)}else{o(e,i)}})}),"(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thown. If finally is provided it's always executed\n at the end."),raise:y("raise",function(e){throw e},"(raise obj)\n\n Throws the object verbatim (no wrapping an a new Error)."),throw:y("throw",function(e){throw new Error(e)},"(throw string)\n\n Throws a new exception."),find:y("find",function t(r,n){h("find",r,["regex","function"]);h("find",n,["pair","nil"]);if(Zu(n)){return U}var e=Gi("find",r);return Yi(e(n.car),function(e){if(e&&e!==U){return n.car}return t(r,n.cdr)})},"(find fn list)\n (find regex list)\n\n Higher-order function that finds the first value for which fn return true.\n If called with a regex it will create a matcher function."),"for-each":y("for-each",function(e){var t;h("for-each",e,"function");for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i1?t-1:0),u=1;u3?n-3:0),u=3;u3?i-3:0),a=3;aarray")(r);var u=[];var a=Gi("filter",t);return function t(r){function e(e){if(e&&e!==U){u.push(n)}return t(++r)}if(r===i.length){return M.fromArray(u)}var n=i[r];return Yi(a(n),e)}(0)},"(filter fn list)\n (filter regex list)\n\n Higher-order function that calls `fn` for each element of the list\n and return a new list for only those elements for which fn returns\n a truthy value. If called with a regex it will create a matcher function."),compose:y(Ra,"(compose . fns)\n\n Higher-order function that creates a new function that applies all functions\n from right to left and returns the last value. Reverse of pipe.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 10) --\x3e (+ 2 (* 3 10)) --\x3e 32"),pipe:y(Na,"(pipe . fns)\n\n Higher-order function that creates a new function that applies all functions\n from left to right and returns the last value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 10) --\x3e (* 3 (+ 2 10)) --\x3e 36"),curry:y(Ya,"(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have parially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"),gcd:y("gcd",function e(){for(var t=arguments.length,r=new Array(t),n=0;no?u%=o:o%=u}u=Tu(s*r[a])/(u+o)}return C(u)},"(lcm n1 n2 ...)\n\n Function that returns the least common multiple of the arguments."),"odd?":y("odd?",Ua(function(e){return C(e).isOdd()}),"(odd? number)\n\n Checks if number is odd."),"even?":y("even?",Ua(function(e){return C(e).isEven()}),"(even? number)\n\n Checks if number is even."),"*":y("*",qa(function(e,t){return C(e).mul(t)},C(1)),"(* . numbers)\n\n Multiplies all numbers passed as arguments. If single value is passed\n it will return that value."),"+":y("+",qa(function(e,t){return C(e).add(t)},C(0)),"(+ . numbers)\n\n Sums all numbers passed as arguments. If single value is passed it will\n return that value."),"-":y("-",function(){for(var e=arguments.length,t=new Array(e),r=0;r":y(">",function(){for(var e=arguments.length,t=new Array(e),r=0;r",t,"number");return Lu(function(e,t){return C(e).cmp(t)===1},t)},"(> x1 x2 x3 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically decreasing, i.e. x1 > x2 and x2 > x3 and so on."),"<":y("<",function(){for(var e=arguments.length,t=new Array(e),r=0;r=":y(">=",function(){for(var e=arguments.length,t=new Array(e),r=0;r=",t,"number");return Lu(function(e,t){return[0,1].includes(C(e).cmp(t))},t)},"(>= x1 x2 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically nonincreasing, i.e. x1 >= x2 and x2 >= x3 and so on."),"eq?":y("eq?",Uu,"(eq? a b)\n\n Function that compares two values if they are identical."),or:y(new Vu("or",function(e,t){var i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return false}var s;return function t(){function e(e){s=e;if(s!==false){return s}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(or . expressions)\n\n Macro that executes the values one by one and returns the first that is\n a truthy value. If there are no expressions that evaluate to true it\n returns false."),and:y(new Vu("and",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return true}var s;return function t(){function e(e){s=e;if(s===false){return false}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(and . expressions)\n\n Macro that evalutes each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."),"|":y("|",function(e,t){return C(e).or(t)},"(| a b)\n\n Function that calculates the bitwise or operation."),"&":y("&",function(e,t){return C(e).and(t)},"(& a b)\n\n Function that calculates the bitwise and operation."),"~":y("~",function(e){return C(e).neg()},"(~ number)\n\n Function that calculates the bitwise inverse (flip all the bits)."),">>":y(">>",function(e,t){return C(e).shr(t)},"(>> a b)\n\n Function that right shifts the value a by value b bits."),"<<":y("<<",function(e,t){return C(e).shl(t)},"(<< a b)\n\n Function that left shifts the value a by value b bits."),not:y("not",function e(t){if(Zu(t)){return true}return!t},"(not object)\n\n Function that returns the Boolean negation of its argument.")},undefined,"global");var Yo=qo.inherit("user-env");function Vo(e,t){e.constant("**internal-env**",t);e.doc("**internal-env**","**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are an internal type\n of variable that can't be redefined, defining a variable with the same name\n will throw an error.");qo.set("**interaction-environment**",e)}Vo(Yo,Lo);qo.doc("**interaction-environment**","**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contains the references to stdin, stdout and stderr.");(function(){var e={ceil:"ceiling"};["floor","round","ceil"].forEach(function(t){var r=e[t]?e[t]:t;qo.set(r,y(r,function(e){h(r,e,"number");if(e instanceof C){return e[t]()}},"(".concat(r," number)\n\n Function that calculates the ").concat(r," of a number.")))})})();function zo(e){if(e.length===1){return e[0]}else{var t=[];var r=zo(e.slice(1));for(var n=0;n3&&arguments[3]!==undefined?arguments[3]:null;var i=e?" in expression `".concat(e,"`"):"";if(n!==null){i+=" (argument ".concat(n,")")}if(Xu(r)){return"Invalid type: got ".concat(t).concat(i)}if(r instanceof Array){if(r.length===1){r="a"+("aeiou".includes(r[0].toLowerCase())?"n ":" ")+r[0]}else{var u=r[r.length-1];r=r.slice(0,-1).join(", ")+" or "+u}}return"Expecting ".concat(r,", got ").concat(t).concat(i)}function Zo(r,e,n){e.forEach(function(e,t){h(r,e,n,t+1)})}function Xo(e,t,r){h(e,t,r);if(t.__type__===Ao){throw new Error(Qo(e,"binary-port","textual-port"))}}function h(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;e=e.valueOf();var i=us(t).toLowerCase();if(Xu(r)){if(!r(t)){throw new Error(Qo(e,i,r,n))}return}var u=false;if(r instanceof M){r=r.to_array()}if(r instanceof Array){r=r.map(function(e){return e.valueOf()})}if(r instanceof Array){r=r.map(function(e){return e.valueOf().toLowerCase()});if(r.includes(i)){u=true}}else{r=r.valueOf().toLowerCase()}if(!u&&i!==r){throw new Error(Qo(e,i,r,n))}}function es(e){var t=_(e);return["string","function"].includes(t)||_(e)==="symbol"||e instanceof ki||e instanceof L||e instanceof C||e instanceof $a||e instanceof RegExp}function ts(e){return e instanceof C||e instanceof $a||e instanceof za}function rs(e,t){if(e===null){return false}return _(e)==="object"&&t in Object.getOwnPropertySymbols(e)}function ns(e,t){if(rs(e,t)||rs(e.__proto__,t)){return Xu(e[t])}}function is(r){var n=new WeakMap;return function(e){var t=n.get(e);if(!t){t=r(e)}return t}}us=is(us);function us(e){var t=wn.get(e);if(t){return t}if(_(e)==="object"){for(var r=0,n=Object.entries(bn);r2&&arguments[2]!==undefined?arguments[2]:{},u=t.env,a=t.dynamic_scope,r=t.error,o=r===void 0?function(){}:r;e=os(e,{env:u,dynamic_scope:a,error:o});return Yi(e,function(e){if(Sa(i)){i=sa(i)}e=fs(i,e);var t=e.slice();var r=(a||u).newFrame(i,t);var n=as(i.apply(r,e));return Yi(n,function(e){if(e instanceof M){e.markCycles();return Io(e)}return ia(e)},o)})}var hs=function(){function t(e){D(this,t);this.__value__=e}A(t,[{key:"invoke",value:function e(){if(this.__value__===null){throw new Error("Continuations are not implemented yet")}}},{key:"toString",value:function e(){return"#"}}]);return t}();var ps=function e(){};function _s(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=e.env,n=e.dynamic_scope,c=e.error,i=c===void 0?ps:c;try{if(n===true){r=n=r||qo}else if(r===true){r=n=qo}else{r=r||qo}var u={env:r,dynamic_scope:n,error:i};var a;if(Zu(t)){return t}if(t instanceof L){return r.get(t)}if(!(t instanceof M)){return t}var o=t.car;var f=t.cdr;if(o instanceof M){a=as(_s(o,u));if(ra(a)){return a.then(function(e){return _s(new M(e,t.cdr),u)})}else if(!ta(a)){throw new Error(us(a)+" "+r.get("repr")(a)+" is not callable while evaluating "+t.toString())}}if(o instanceof L){a=r.get(o)}else if(Xu(o)){a=o}var s;if(a instanceof Ku){s=ss(a,t,u)}else if(a instanceof Vu){s=cs(a,f,u)}else if(Xu(a)){s=ls(a,f,u)}else if(ea(a)){s=a.invoke()}else if(t instanceof M){a=o&&o.toString();throw new Error("".concat(us(o)," ").concat(a," is not a function"))}else{return t}var l=r.get(Symbol["for"]("__promise__"),{throwError:false});if(l===true&&ra(s)){s=s.then(function(e){if(e instanceof M&&!a[ya]){return _s(e,u)}return e});return new ki(s)}return s}catch(e){i&&i.call(r,e,t)}}var ds=ys(function(e){return e});var vs=ys(function(e,t){return t});function ys(_){return function(){var n=B(z.mark(function e(r,n,i){var u,a,o,s,h,c,p,f,l;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(i===true){n=i=n||Yo}else if(n===true){n=i=Yo}else{n=n||Yo}u=[];a=Array.isArray(r)?r:Mi(r);o=false;s=false;t.prev=5;c=yn(a);case 7:t.next=9;return c.next();case 9:if(!(o=!(p=t.sent).done)){t.next=27;break}f=p.value;l=_s(f,{env:n,dynamic_scope:i,error:function e(t,r){if(t&&t.message){if(t.message.match(/^Error:/)){var n=/^(Error:)\s*([^:]+:\s*)/;t.message=t.message.replace(n,"$1 $2")}if(r){if(!(t.__code__ instanceof Array)){t.__code__=[]}t.__code__.push(r.toString(true))}}throw t}});if(ra(l)){t.next=16;break}u.push(_(f,l));t.next=24;break;case 16:t.t0=u;t.t1=_;t.t2=f;t.next=21;return l;case 21:t.t3=t.sent;t.t4=(0,t.t1)(t.t2,t.t3);t.t0.push.call(t.t0,t.t4);case 24:o=false;t.next=7;break;case 27:t.next=33;break;case 29:t.prev=29;t.t5=t["catch"](5);s=true;h=t.t5;case 33:t.prev=33;t.prev=34;if(!(o&&c["return"]!=null)){t.next=38;break}t.next=38;return c["return"]();case 38:t.prev=38;if(!s){t.next=41;break}throw h;case 41:return t.finish(38);case 42:return t.finish(33);case 43:return t.abrupt("return",u);case 44:case"end":return t.stop()}}},e,null,[[5,29,33,43],[34,,38,42]])}));function e(e,t,r){return n.apply(this,arguments)}return e}()}function ms(e){var t={"[":"]","(":")"};var r;if(typeof e==="string"){r=wi(e)}else{r=e.map(function(e){return e&&e.token?e.token:e})}var n=Object.keys(t);var i=Object.values(t).concat(n);r=r.filter(function(e){return i.includes(e)});var u=new di;var a=hn(r),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(n.includes(s)){u.push(s)}else if(!u.is_empty()){var f=u.top();var c=t[f];if(s===c){u.pop()}else{throw new Error("Syntax error: missing closing ".concat(c))}}else{throw new Error("Syntax error: not matched closing ".concat(s))}}}catch(e){a.e(e)}finally{a.f()}return u.is_empty()}function gs(e){var t="("+e.toString()+")()";var r=window.URL||window.webkitURL;var n;try{n=new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;n=new i;n.append(t);n=n.getBlob()}return new gn.Worker(r.createObjectURL(n))}function bs(){return Gs.version.match(/^(\{\{VER\}\}|DEV)$/)}function ws(){if(Go()){return}var e;if(document.currentScript){e=document.currentScript}else{var t=document.querySelectorAll("script");if(!t.length){return}e=t[t.length-1]}var r=e.getAttribute("src");return r}var Ds=ws();function Es(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var t="dist/std.xcb";if(e===""){if(Ds){e=Ds.replace(/[^/]*$/,"std.xcb")}else if(bs()){e="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/".concat(t)}else{e="https://cdn.jsdelivr.net/npm/@jcubic/lips@".concat(Gs.version,"/").concat(t)}}var r=qo.get("load");return r.call(Yo,e,qo)}function As(e){this.url=e;var a=this.worker=gs(function(){var a;var o;self.addEventListener("message",function(e){var r=e.data;var t=r.id;if(r.type!=="RPC"||t===null){return}function n(e){self.postMessage({id:t,type:"RPC",result:e})}function i(e){self.postMessage({id:t,type:"RPC",error:e})}if(r.method==="eval"){if(!o){i("Worker RPC: LIPS not initilized, call init first");return}o.then(function(){var e=r.params[0];var t=r.params[1];a.exec(e,t).then(function(e){e=e.map(function(e){return e&&e.valueOf()});n(e)})["catch"](function(e){i(e)})})}else if(r.method==="init"){var u=r.params[0];if(typeof u!=="string"){i("Worker RPC: url is not a string")}else{importScripts("".concat(u,"/dist/lips.min.js"));a=new Gs.Interpreter("worker");o=Es(u);o.then(function(){n(true)})}}})});this.rpc=function(){var n=0;return function e(t,r){var u=++n;return new Promise(function(n,i){a.addEventListener("message",function e(t){var r=t.data;if(r&&r.type==="RPC"&&r.id===u){if(r.error){i(r.error)}else{n(r.result)}a.removeEventListener("message",e)}});a.postMessage({type:"RPC",method:t,id:u,params:r})})}}();this.rpc("init",[e])["catch"](function(e){console.error(e)});this.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return this.rpc("eval",[e,t])}}var xs={pair:function e(t){var r=j(t,2),n=r[0],i=r[1];return M(n,i)},number:function e(t){if($a.isString(t)){return C([t,10])}return C(t)},regex:function e(t){var r=j(t,2),n=r[0],i=r[1];return new RegExp(n,i)},nil:function e(){return U},symbol:function e(t){if($a.isString(t)){return L(t)}else if(Array.isArray(t)){return L(Symbol["for"](t[0]))}},string:$a,character:za};var Fs=Object.keys(xs);var ks={};for(var Cs=0,Os=Object.entries(Fs);Cs1){var n=t.reduce(function(e,t){return e+t.length},0);var i=new Uint8Array(n);var u=0;t.forEach(function(e){i.set(e,u);u+=e.length});return i}else if(t.length){return t[0]}}function Us(){var e=1;var t=new TextEncoder("utf-8");return t.encode("LIPS".concat(e.toString().padStart(3," ")))}var Ms=7;function qs(e){var t=new TextDecoder("utf-8");var r=t.decode(e.slice(0,Ms));var n=r.substring(0,4);if(n==="LIPS"){var i=r.match(/^(....).*([0-9]+)$/);if(i){return{type:i[1],version:Number(i[2])}}}return{type:"unknown"}}function Ys(e){var t=Us();var r=Ts.encode(e);return Ls(t,un(r,{magic:false}))}function Vs(e){var t=qs(e),r=t.type,n=t.version;if(r==="LIPS"&&n===1){var i=an(e.slice(Ms),{magic:false});return Ts.decode(i)}else{throw new Error("Invalid file format ".concat(r))}}function zs(e){console.error(e.message||e);if(e.code){console.error(e.code.map(function(e,t){return"[".concat(t+1,"]: ").concat(e)}))}}function $s(){var a=["text/x-lips","text/x-scheme"];var o;function s(r){return new Promise(function(t){var e=r.getAttribute("src");if(e){return fetch(e).then(function(e){return e.text()}).then(vs).then(t)["catch"](function(e){zs(e);t()})}else{return vs(r.innerHTML).then(t)["catch"](function(e){zs(e);t()})}})}function e(){return new Promise(function(i){var u=Array.from(document.querySelectorAll("script"));return function e(){var t=u.shift();if(!t){i()}else{var r=t.getAttribute("type");if(a.includes(r)){var n=t.getAttribute("bootstrap");if(!o&&typeof n==="string"){return Es(n).then(function(){return s(t)}).then(e)}else{return s(t).then(e)}}else if(r&&r.match(/lips|lisp/)){console.warn("Expecting "+a.join(" or ")+" found "+r)}return e()}}()})}if(!window.document){return Promise.resolve()}else if(Js){var t=Js;var r=t.getAttribute("bootstrap");if(typeof r==="string"){return Es(r).then(function(){o=true;return e()})}}return e()}var Js=typeof window!=="undefined"&&window.document&&document.currentScript;if(typeof window!=="undefined"){Fn(window,$s)}var Ks=function(){var e=$a("Fri, 10 Nov 2023 16:25:41 +0000").valueOf();var t=e==="{{"+"DATE}}"?new Date:new Date(e);var r=function e(t){return t.toString().padStart(2,"0")};var n=t.getFullYear();var i=[n,r(t.getMonth()+1),r(t.getDate())].join("-");var u="\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter DEV (".concat(i,") \nCopyright (c) 2018-").concat(n," Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specic function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/,"");return u}();$i(eu,"__class__","ahead");$i(M,"__class__","pair");$i(mu,"__class__","nil");$i(tu,"__class__","pattern");$i(Xi,"__class__","formatter");$i(Vu,"__class__","macro");$i(Ku,"__class__","syntax");$i(So,"__class__","environment");$i(ho,"__class__","input-port");$i(po,"__class__","output-port");$i(_o,"__class__","output-port");$i(vo,"__class__","output-string-port");$i(mo,"__class__","input-string-port");$i(wo,"__class__","input-file-port");$i(yo,"__class__","output-file-port");$i(Oo,"__class__","lips-error");[C,io,fo,uo,lo].forEach(function(e){$i(e,"__class__","number")});$i(za,"__class__","character");$i(L,"__class__","symbol");$i($a,"__class__","string");$i(ki,"__class__","promise");var Gs={version:"DEV",banner:Ks,date:"Fri, 10 Nov 2023 16:25:41 +0000",exec:vs,parse:Ra(Ji,Mi),tokenize:wi,evaluate:_s,compile:ds,serialize:Ns,unserialize:Rs,serialize_bin:Ys,unserialize_bin:Vs,bootstrap:Es,Environment:So,env:Yo,Worker:As,Interpreter:Co,balanced_parenthesis:ms,balancedParenthesis:ms,balanced:ms,Macro:Vu,Syntax:Ku,Pair:M,Values:jo,QuotedPromise:ki,Error:Oo,quote:Io,InputPort:ho,OutputPort:po,BufferedOutputPort:_o,InputFilePort:wo,OutputFilePort:yo,InputStringPort:mo,OutputStringPort:vo,InputByteVectorPort:go,OutputByteVectorPort:bo,InputBinaryFilePort:Do,OutputBinaryFilePort:Eo,Formatter:Xi,Parser:Li,Lexer:s,specials:Bi,repr:bu,nil:U,eof:Fo,LSymbol:L,LNumber:C,LFloat:uo,LComplex:io,LRational:fo,LBigInteger:lo,LCharacter:za,LString:$a,rationalize:so};qo.set("lips",Gs);var Hs={};var Ws=Object.freeze({__proto__:null,default:Hs});function Qs(e,t){var r=0;for(var n=e.length-1;n>=0;n--){var i=e[n];if(i==="."){e.splice(n,1)}else if(i===".."){e.splice(n,1);r++}else if(r){e.splice(n,1);r--}}if(t){for(;r--;r){e.unshift("..")}}return e}var Zs=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var Xs=function(e){return Zs.exec(e).slice(1)};function ec(){var e="",t=false;for(var r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!n){continue}e=n+"/"+e;t=n.charAt(0)==="/"}e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");return(t?"/":"")+e||"."}function tc(e){var t=rc(e),r=hc(e,-1)==="/";e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");if(!e&&!t){e="."}if(e&&r){e+="/"}return(t?"/":"")+e}function rc(e){return e.charAt(0)==="/"}function nc(){var e=Array.prototype.slice.call(arguments,0);return tc(lc(e,function(e,t){if(typeof e!=="string"){throw new TypeError("Arguments to path.join must be strings")}return e}).join("/"))}function ic(e,t){e=ec(e).substr(1);t=ec(t).substr(1);function r(e){var t=0;for(;t=0;r--){if(e[r]!=="")break}if(t>r)return[];return e.slice(t,r-t+1)}var n=r(e.split("/"));var i=r(t.split("/"));var u=Math.min(n.length,i.length);var a=u;for(var o=0;o=t.length)return{done:true};return{done:false,value:t[n++]}},e:function e(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=true,a=false,o;return{s:function e(){r=r.call(t)},n:function e(){var t=r.next();u=t.done;return t},e:function e(t){a=true;o=t},f:function e(){try{if(!u&&r["return"]!=null)r["return"]()}finally{if(a)throw o}}}}function pn(e,t){if(!e)return;if(typeof e==="string")return _n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor)r=e.constructor.name;if(r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _n(e,t)}function _n(e,t){if(t==null||t>e.length)t=e.length;for(var r=0,n=new Array(t);r1&&arguments[1]!==undefined?arguments[1]:null;var n=arguments[1]===true;function t(e){if(!Cn()){return}var t=qo.get("repr")(e);if(r===null||r instanceof RegExp&&r.test(t)){console.log(qo.get("type")(e)+": "+t)}if(n){console.log(e)}}if(ra(e)){e.then(t)}else{t(e)}return e}function Cn(){return Yo&&Yo.get("DEBUG",{throwError:false})}function On(e){return e?"(?:#".concat(e,"(?:#[ie])?|#[ie]#").concat(e,")"):"(?:#[ie])?"}function Sn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+/").concat(t,"+")}function Bn(e,t){return"".concat(On(e),"(?:[+-]?(?:").concat(t,"+/").concat(t,"+|nan.0|inf.0|").concat(t,"+))?(?:[+-]i|[+-]?(?:").concat(t,"+/").concat(t,"+|").concat(t,"+|nan.0|inf.0)i)(?=[()[\\]\\s]|$)")}function jn(e,t){return"".concat(On(e),"[+-]?").concat(t,"+")}var In=/^#\/((?:\\\/|[^/]|\[[^\]]*\/[^\]]*\])+)\/([gimyus]*)$/;var Pn="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+)(?:[eE][-+]?[0-9]+)?)|[0-9]+\\.)";var Nn="(?:#[ie])?(?:[+-]?(?:[0-9]+/[0-9]+|nan.0|inf.0|".concat(Pn,"|[+-]?[0-9]+))?(?:").concat(Pn,"|[+-](?:[0-9]+/[0-9]+|[0-9]+|nan.0|inf.0))i");var Rn=new RegExp("^(#[ie])?".concat(Pn,"$"),"i");function Tn(e,t){var r=e==="x"?"(?!\\+|".concat(t,")"):"(?!\\.|".concat(t,")");var n="";if(e===""){n="(?:[-+]?(?:[0-9]+(?:[eE][-+]?[0-9]+)|(?:\\.[0-9]+|[0-9]+\\.[0-9]+(?![0-9]))(?:[eE][-+]?[0-9]+)?))"}return new RegExp("^((?:(?:".concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+(?!").concat(t,")|[+-]?").concat(t,"+)").concat(r,")?)(").concat(n,"|[-+]?inf.0|[-+]?nan.0|[+-]?").concat(t,"+/").concat(t,"+|[+-]?").concat(t,"+|[+-])i$"),"i")}var Ln=function(){var u={};[[10,"","[0-9]"],[16,"x","[0-9a-fA-F]"],[8,"o","[0-7]"],[2,"b","[01]"]].forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];u[r]=Tn(n,i)});return u}();var Un={alarm:"",backspace:"\b",delete:"",escape:"",newline:"\n",null:"\0",return:"\r",space:" ",tab:"\t",dle:"",soh:"",dc1:"",stx:"",dc2:"",etx:"",dc3:"",eot:"",dc4:"",enq:"",nak:"",ack:"",syn:"",bel:"",etb:"",bs:"\b",can:"",ht:"\t",em:"",lf:"\n",sub:"",vt:"\v",esc:"",ff:"\f",fs:"",cr:"\r",gs:"",so:"",rs:"",si:"",us:"",del:""};function Mn(e){var t=[];var r=0;var n=e.length;while(r=55296&&i<=56319&&r1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);var n=r.number.split("/");var i=fo({num:C([n[0],r.radix||t]),denom:C([n[1],r.radix||t])});if(r.inexact){return i.valueOf()}else{return i}}function ri(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;var r=ei(e);if(r.inexact){return uo(parseInt(r.number,r.radix||t))}return C([r.number,r.radix||t])}function ni(e){var t=e.match(/#\\x([0-9a-f]+)$/i);var r;if(t){var n=parseInt(t[1],16);r=String.fromCodePoint(n)}else{t=e.match(/#\\(.+)$/);if(t){r=t[1]}}if(r){return za(r)}throw new Error("Parse: invalid character")}function ii(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;function t(e){var t;if(e==="+"){t=C(1)}else if(e==="-"){t=C(-1)}else if(e.match(Hn)){t=C([e,i])}else if(e.match(Wn)){var r=e.split("/");t=fo({num:C([r[0],i]),denom:C([r[1],i])})}else if(e.match(Rn)){var n=oi(e);if(u.exact){return n.toRational()}return n}else if(e.match(/nan.0$/)){return C(NaN)}else if(e.match(/inf.0$/)){if(e[0]==="-"){return C(Number.NEGATIVE_INFINITY)}return C(Number.POSITIVE_INFINITY)}else{throw new Error("Internal Parser Error")}if(u.inexact){return uo(t.valueOf())}return t}var u=ei(e);i=u.radix||i;var r;var n=u.number.match(Zn);if(i!==10&&n){r=n}else{r=u.number.match(Ln[i])}var a,o;o=t(r[2]);if(r[1]){a=t(r[1])}else{a=C(0)}if(o.cmp(0)===0&&o.__type__==="bigint"){return a}return io({im:o,re:a})}function ui(e){return parseInt(e.toString(),10)===e}function ai(e){var t=e.match(/^(([-+]?[0-9]*)(?:\.([0-9]+))?)e([-+]?[0-9]+)/i);if(t){var r=parseInt(t[4],10);var n;var i=t[1].replace(/[-+]?([0-9]*)\..+$/,"$1").length;var u=t[3]&&t[3].length;if(i0){return C(u).mul(o)}}}r=uo(r);if(t.exact){return r.toRational()}return r}function si(e){e=e.replace(/\\x([0-9a-f]+);/gi,function(e,t){return"\\u"+t.padStart(4,"0")}).replace(/\n/g,"\\n");var t=e.match(/(\\*)(\\x[0-9A-F])/i);if(t&&t[1].length%2===0){throw new Error("Invalid string literal, unclosed ".concat(t[2]))}try{return $a(JSON.parse(e))}catch(e){var r=e.message.replace(/in JSON /,"").replace(/.*Error: /,"");throw new Error("Invalid string literal: ".concat(r))}}function ci(e){if(e.match(/^\|.*\|$/)){e=e.replace(/(^\|)|(\|$)/g,"");var r={t:"\t",r:"\r",n:"\n"};e=e.replace(/\\(x[^;]+);/g,function(e,t){return String.fromCharCode(parseInt("0"+t,16))}).replace(/\\(.)/g,function(e,t){return r[t]||t})}return new L(e)}function fi(e){if(Mo.hasOwnProperty(e)){return Mo[e]}if(e.match(/^"[\s\S]*"$/)){return si(e)}else if(e[0]==="#"){var t=e.match(In);if(t){return new RegExp(t[1],t[2])}else if(e.match(Vn)){return ni(e)}var r=e.match(/#\\(.+)/);if(r&&Mn(r[1]).length===1){return ni(e)}}if(e.match(/[0-9a-f]|[+-]i/i)){if(e.match(Gn)){return ri(e)}else if(e.match(Rn)){return oi(e)}else if(e.match(Kn)){return ti(e)}else if(e.match(Jn)){return ii(e)}}if(e.match(/^#[iexobd]/)){throw new Error("Invalid numeric constant: "+e)}return ci(e)}function li(e){return!(["(",")","[","]"].includes(e)||Bi.names().includes(e))}function hi(e){return li(e)&&!(e.match(In)||e.match(/^"[\s\S]*"$/)||e.match(Gn)||e.match(Rn)||e.match(Jn)||e.match(Kn)||e.match(Vn)||["#t","#f","nil","true","false"].includes(e))}var pi=/"(?:\\[\S\s]|[^"])*"?/g;function _i(e){if(typeof e==="string"){var t=/([-\\^$[\]()+{}?*.|])/g;return e.replace(t,"\\$1")}return e}function di(){this.data=[]}di.prototype.push=function(e){this.data.push(e)};di.prototype.top=function(){return this.data[this.data.length-1]};di.prototype.pop=function(){return this.data.pop()};di.prototype.is_empty=function(){return!this.data.length};function vi(e){if(e instanceof $a){e=e.valueOf()}var t=new s(e,{whitespace:true});var r=[];while(true){var n=t.peek(true);if(n===Fo){break}r.push(n);t.skip()}return r}function yi(e){var t=e.token,r=F(e,sn);if(t.match(/^"[\s\S]*"$/)&&t.match(/\n/)){var n=new RegExp("^ {1,"+(e.col+1)+"}","mg");t=t.replace(n,"")}return vn({token:t},r)}function mi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(){};this.fn=e;this.cont=t}mi.prototype.toString=function(){return"#"};function gi(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof $a){e=e.toString()}if(t){return vi(e)}else{var r=vi(e).map(function(e){if(e.token==="#\\ "){return e.token}return e.token.trim()}).filter(function(e){return e&&!e.match(/^;/)&&!e.match(/^#\|[\s\S]*\|#$/)});return Di(r)}}function Di(e){var t=0;var r=null;var n=[];for(var i=0;i0&&arguments[0]!==undefined?arguments[0]:null;if(e instanceof L){if(e.is_gensym()){return e}e=e.valueOf()}if(xi(e)){return L(e)}if(e!==null){return r(e,Symbol("#:".concat(e)))}t++;return r(t,Symbol("#:g".concat(t)))}}();function ki(e){var r=this;var n={pending:true,rejected:false,fulfilled:false,reason:undefined,type:undefined};e=e.then(function(e){n.type=us(e);n.fulfilled=true;n.pending=false;return e});$i(this,"_promise",e,{hidden:true});if(Xu(e["catch"])){e=e["catch"](function(e){n.rejected=true;n.pending=false;n.reason=e})}Object.keys(n).forEach(function(t){Object.defineProperty(r,"__".concat(t,"__"),{enumerable:true,get:function e(){return n[t]}})});$i(this,"__promise__",e);this.then=false}ki.prototype.then=function(e){return new ki(this.valueOf().then(e))};ki.prototype["catch"]=function(e){return new ki(this.valueOf()["catch"](e))};ki.prototype.valueOf=function(){if(!this._promise){throw new Error("QuotedPromise: invalid promise created")}return this._promise};ki.prototype.toString=function(){if(this.__pending__){return ki.pending_str}if(this.__rejected__){return ki.rejected_str}return"#")};ki.pending_str="#";ki.rejected_str="#";function Ci(e){if(Array.isArray(e)){return Promise.all(Oi(e)).then(Si)}return e}function Oi(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof ki){t[r]=new Bo(n)}else{t[r]=n}}return t}function Si(e){var t=new Array(e.length),r=e.length;while(r--){var n=e[r];if(n instanceof Bo){t[r]=n.valueOf()}else{t[r]=n}}return t}var Bi={LITERAL:Symbol["for"]("literal"),SPLICE:Symbol["for"]("splice"),SYMBOL:Symbol["for"]("symbol"),names:function e(){return Object.keys(this.__list__)},type:function e(t){return this.get(t).type},get:function e(t){return this.__list__[t]},off:function e(t){var r=this;var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(Array.isArray(t)){t.forEach(function(e){return r.off(e,n)})}else if(n===null){delete this.__events__[t]}else{this.__events__=this.__events__.filter(function(e){return e!==n})}},on:function e(t,r){var n=this;if(Array.isArray(t)){t.forEach(function(e){return n.on(e,r)})}else if(!this.__events__[t]){this.__events__[t]=[r]}else{this.__events__[t].push(r)}},trigger:function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i",new L("quote-promise"),Bi.LITERAL]];var Ri=Ni.map(function(e){return e[0]});Object.freeze(Ri);Object.defineProperty(Bi,"__builtins__",{writable:false,value:Ri});Ni.forEach(function(e){var t=j(e,3),r=t[0],n=t[1],i=t[2];Bi.append(r,n,i)});var s=function(){function p(e){var t=this;var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},n=r.whitespace,i=n===void 0?false:n;D(this,p);$i(this,"__input__",e.replace(/\r/g,""));var u={};["_i","_whitespace","_col","_newline","_line","_state","_next","_token","_prev_char"].forEach(function(r){Object.defineProperty(t,r,{configurable:false,enumerable:false,get:function e(){return u[r]},set:function e(t){u[r]=t}})});this._whitespace=i;this._i=this._line=this._col=this._newline=0;this._state=this._next=this._token=null;this._prev_char=""}A(p,[{key:"get",value:function e(t){return this.__internal[t]}},{key:"set",value:function e(t,r){this.__internal[t]=r}},{key:"token",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(t){var r=this._line;if(this._whitespace&&this._token==="\n"){--r}return{token:this._token,col:this._col,offset:this._i,line:r}}return this._token}},{key:"peek",value:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(this._i>=this.__input__.length){return Fo}if(this._token){return this.token(t)}var r=this.next_token();if(r){this._token=this.__input__.substring(this._i,this._next);return this.token(t)}return Fo}},{key:"skip",value:function e(){if(this._next!==null){this._token=null;this._i=this._next}}},{key:"read_line",value:function e(){var t=this.__input__.length;if(this._i>=t){return Fo}for(var r=this._i;r=r){return Fo}if(t+this._i>=r){return this.read_rest()}var n=this._i+t;var i=this.__input__.substring(this._i,n);var u=i.match(/\n/g);if(u){this._line+=u.length}this._i=n;return i}},{key:"peek_char",value:function e(){if(this._i>=this.__input__.length){return Fo}return za(this.__input__[this._i])}},{key:"read_char",value:function e(){var t=this.peek_char();this.skip_char();return t}},{key:"skip_char",value:function e(){if(this._i1&&arguments[1]!==undefined?arguments[1]:{},r=t.prev_char,n=t["char"],i=t.next_char;var u=j(e,4),a=u[0],o=u[1],s=u[2],f=u[3];if(e.length!==5){throw new Error("Lexer: Invalid rule of length ".concat(e.length))}if(!n.match(a)){return false}if(!Ti(o,r)){return false}if(!Ti(s,i)){return false}if(f!==this._state){return false}return true}},{key:"next_token",value:function f(){if(this._i>=this.__input__.length){return false}var e=true;e:for(var t=this._i,r=this.__input__.length;t2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;if(t.length===0){throw new Error("Lexer: invalid literal rule")}if(t.length===1){return[[t,n,i,null,null]]}var u=[];for(var a=0,o=t.length;a1&&arguments[1]!==undefined?arguments[1]:{},r=t.env,n=t.meta,i=n===void 0?false:n,u=t.formatter,a=u===void 0?yi:u;D(this,o);if(e instanceof $a){e=e.toString()}$i(this,"_formatter",a,{hidden:true});$i(this,"__lexer__",new s(e));$i(this,"__env__",r);$i(this,"_meta",i,{hidden:true});$i(this,"_refs",[],{hidden:true});$i(this,"_state",{parentheses:0},{hidden:true})}A(o,[{key:"resolve",value:function e(t){return this.__env__&&this.__env__.get(t,{throwError:false})}},{key:"peek",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=this.__lexer__.peek(true);if(!(r===Fo)){t.next=4;break}return t.abrupt("return",Fo);case 4:if(!this.is_comment(r.token)){t.next=7;break}this.skip();return t.abrupt("continue",0);case 7:if(!(r.token==="#;")){t.next=14;break}this.skip();if(!(this.__lexer__.peek()===Fo)){t.next=11;break}throw new Error("Lexer: syntax error eof found after comment");case 11:t.next=13;return this._read_object();case 13:return t.abrupt("continue",0);case 14:return t.abrupt("break",17);case 17:r=this._formatter(r);if(!this._meta){t.next=20;break}return t.abrupt("return",r);case 20:return t.abrupt("return",r.token);case 21:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"reset",value:function e(){this._refs.length=0}},{key:"skip",value:function e(){this.__lexer__.skip()}},{key:"read",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;this.skip();return t.abrupt("return",r);case 5:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"match_datum_label",value:function e(t){var r=t.match(/^#([0-9]+)=$/);return r&&r[1]}},{key:"match_datum_ref",value:function e(t){var r=t.match(/^#([0-9]+)#$/);return r&&r[1]}},{key:"is_open",value:function e(t){var r=["(","["].includes(t);if(r){this._state.parentheses++}return r}},{key:"is_close",value:function e(t){var r=[")","]"].includes(t);if(r){this._state.parentheses--}return r}},{key:"read_list",value:function(){var e=B(z.mark(function e(){var r,n,i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=U,n=r;case 1:t.next=4;return this.peek();case 4:i=t.sent;if(!(i===Fo)){t.next=7;break}return t.abrupt("break",27);case 7:if(!this.is_close(i)){t.next=10;break}this.skip();return t.abrupt("break",27);case 10:if(!(i==="."&&r!==U)){t.next=17;break}this.skip();t.next=14;return this._read_object();case 14:n.cdr=t.sent;t.next=25;break;case 17:t.t0=M;t.next=20;return this._read_object();case 20:t.t1=t.sent;t.t2=U;u=new t.t0(t.t1,t.t2);if(r===U){r=u}else{n.cdr=u}n=u;case 25:t.next=1;break;case 27:return t.abrupt("return",r);case 28:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"read_value",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.read();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}throw new Error("Parser: Expected token eof found");case 5:return t.abrupt("return",fi(r));case 6:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"is_comment",value:function e(t){return t.match(/^;/)||t.match(/^#\|/)&&t.match(/\|#$/)}},{key:"evaluate",value:function e(t){return _s(t,{env:this.__env__,error:function e(t){throw t}})}},{key:"read_object",value:function(){var e=B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:this.reset();t.next=3;return this._read_object();case 3:r=t.sent;if(r instanceof Ui){r=r.valueOf()}if(!this._refs.length){t.next=7;break}return t.abrupt("return",this._resolve_object(r));case 7:return t.abrupt("return",r);case 8:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()},{key:"balanced",value:function e(){return this._state.parentheses===0}},{key:"ballancing_error",value:function e(t){var r=this._state.parentheses;var n=new Error("Parser: expected parenthesis but eof found");var i=new RegExp("\\){".concat(r,"}$"));n.__code__=[t.toString().replace(i,"")];throw n}},{key:"_resolve_object",value:function(){var t=B(z.mark(function e(r){var n=this;var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!Array.isArray(r)){t.next=2;break}return t.abrupt("return",r.map(function(e){return n._resolve_object(e)}));case 2:if(!wu(r)){t.next=6;break}i={};Object.keys(r).forEach(function(e){i[e]=n._resolve_object(r[e])});return t.abrupt("return",i);case 6:if(!(r instanceof M)){t.next=8;break}return t.abrupt("return",this._resolve_pair(r));case 8:return t.abrupt("return",r);case 9:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_resolve_pair",value:function(){var t=B(z.mark(function e(r){return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M)){t.next=15;break}if(!(r.car instanceof Ui)){t.next=7;break}t.next=4;return r.car.valueOf();case 4:r.car=t.sent;t.next=8;break;case 7:this._resolve_pair(r.car);case 8:if(!(r.cdr instanceof Ui)){t.next=14;break}t.next=11;return r.cdr.valueOf();case 11:r.cdr=t.sent;t.next=15;break;case 14:this._resolve_pair(r.cdr);case 15:return t.abrupt("return",r);case 16:case"end":return t.stop()}}},e,this)}));function e(e){return t.apply(this,arguments)}return e}()},{key:"_read_object",value:function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return this.peek();case 2:r=t.sent;if(!(r===Fo)){t.next=5;break}return t.abrupt("return",r);case 5:if(!ji(r)){t.next=39;break}n=Bi.get(r);i=Ii(r);this.skip();t.next=11;return this._read_object();case 11:a=t.sent;if(i){t.next=26;break}o=this.__env__.get(n.symbol);if(!(typeof o==="function")){t.next=26;break}if(!Pi(r)){t.next=19;break}return t.abrupt("return",o.call(this.__env__,a));case 19:if(!(a===U)){t.next=23;break}return t.abrupt("return",o.apply(this.__env__));case 23:if(!(a instanceof M)){t.next=25;break}return t.abrupt("return",o.apply(this.__env__,a.to_array(false)));case 25:throw new Error("Parse Error: Invalid parser extension "+"invocation ".concat(n.symbol));case 26:if(Pi(r)){u=new M(n.symbol,new M(a,U))}else{u=new M(n.symbol,a)}if(!i){t.next=29;break}return t.abrupt("return",u);case 29:if(!(o instanceof Vu)){t.next=38;break}t.next=32;return this.evaluate(u);case 32:s=t.sent;if(!(s instanceof M||s instanceof L)){t.next=35;break}return t.abrupt("return",M.fromArray([L("quote"),s]));case 35:return t.abrupt("return",s);case 38:throw new Error("Parse Error: invalid parser extension: "+n.symbol);case 39:c=this.match_datum_ref(r);if(!(c!==null)){t.next=45;break}this.skip();if(!this._refs[c]){t.next=44;break}return t.abrupt("return",new Ui(c,this._refs[c]));case 44:throw new Error("Parse Error: invalid datum label #".concat(c,"#"));case 45:f=this.match_datum_label(r);if(!(f!==null)){t.next=52;break}this.skip();this._refs[f]=this._read_object();return t.abrupt("return",this._refs[f]);case 52:if(!this.is_open(r)){t.next=57;break}this.skip();return t.abrupt("return",this.read_list());case 57:return t.abrupt("return",this.read_value());case 58:case"end":return t.stop()}}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}]);return o}();var Ui=function(){function r(e,t){D(this,r);this.name=e;this.data=t}A(r,[{key:"valueOf",value:function e(){return this.data}}]);return r}();function Mi(e,t){return qi.apply(this,arguments)}function qi(){qi=e(z.mark(function e(r,n){var i,u;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!n){if(qo){n=qo.get("**interaction-environment**",{throwError:false})}else{n=Yo}}i=new Li(r,{env:n});case 2:t.next=5;return P(i.read_object());case 5:u=t.sent;if(!i.balanced()){i.ballancing_error(u)}if(!(u===Fo)){t.next=9;break}return t.abrupt("break",13);case 9:t.next=11;return u;case 11:t.next=2;break;case 13:case"end":return t.stop()}}},e)}));return qi.apply(this,arguments)}function Yi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:function(e){return e};var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(ra(e)){var n=e.then(t);if(r===null){return n}else{return n["catch"](r)}}if(e instanceof Array){return Vi(e,t,r)}if(wu(e)){return zi(e,t,r)}return t(e)}function Vi(t,r,e){if(t.find(ra)){return Yi(Ci(t),function(e){if(Object.isFrozen(t)){Object.freeze(e)}return r(e)},e)}return r(t)}function zi(t,e,r){var i=Object.keys(t);var n=[],u=[];var a=i.length;while(a--){var o=i[a];var s=t[o];n[a]=s;if(ra(s)){u.push(s)}}if(u.length){return Yi(Ci(n),function(e){var n={};e.forEach(function(e,t){var r=i[t];n[r]=e});if(Object.isFrozen(t)){Object.freeze(n)}return n},r)}return e(t)}function $i(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{},i=n.hidden,u=i===void 0?false:i;Object.defineProperty(e,t,{value:r,configurable:true,enumerable:!u})}function Ji(e){return Ki.apply(this,arguments)}function Ki(){Ki=B(z.mark(function e(r){var n,i,u,a,o,s,c;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=[];i=false;u=false;t.prev=3;o=yn(r);case 5:t.next=7;return o.next();case 7:if(!(i=!(s=t.sent).done)){t.next=13;break}c=s.value;n.push(c);case 10:i=false;t.next=5;break;case 13:t.next=19;break;case 15:t.prev=15;t.t0=t["catch"](3);u=true;a=t.t0;case 19:t.prev=19;t.prev=20;if(!(i&&o["return"]!=null)){t.next=24;break}t.next=24;return o["return"]();case 24:t.prev=24;if(!u){t.next=27;break}throw a;case 27:return t.finish(24);case 28:return t.finish(19);case 29:return t.abrupt("return",n);case 30:case"end":return t.stop()}}},e,null,[[3,15,19,29],[20,,24,28]])}));return Ki.apply(this,arguments)}function Gi(e,t){if(t instanceof RegExp){return function(e){return String(e).match(t)}}else if(Xu(t)){return t}throw new Error("Invalid matcher")}function y(e,t,r,n){if(typeof e!=="string"){t=arguments[0];r=arguments[1];n=arguments[2];e=null}if(r){if(n){t.__doc__=r}else{t.__doc__=Hi(r)}}if(e){t.__name__=e}else if(t.name&&!Ca(t)){t.__name__=t.name}return t}function Hi(e){return e.split("\n").map(function(e){return e.trim()}).join("\n")}function Wi(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;var r=e.length;if(t<=0){throw Error("previousSexp: Invalid argument sexp = ".concat(t))}e:while(t--&&r>=0){var n=1;while(n>0){var i=e[--r];if(!i){break e}if(i==="("||i.token==="("){n--}else if(i===")"||i.token===")"){n++}}r--}return e.slice(r+1)}function Qi(e){if(!e||!e.length){return 0}var t=e.length;if(e[t-1].token==="\n"){return 0}while(--t){if(e[t].token==="\n"){var r=(e[t+1]||{}).token;if(r){return r.length}}}return 0}function Zi(e,t){return f(e,t)===t.length;function f(r,n){function e(e,t){var r=hn(e),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;var u=f(i,t);if(u!==-1){return u}}}catch(e){r.e(e)}finally{r.f()}return-1}function t(){return r[u]===Symbol["for"]("symbol")&&!hi(n[o])}function i(){var e=r[u+1];var t=n[o+1];if(e!==undefined&&t!==undefined){return f([e],[t])}}var u=0;var a={};for(var o=0;o0){continue}}else if(t()){return-1}}else if(r[u]instanceof Array){var c=f(r[u],n.slice(o));if(c===-1||c+o>n.length){return-1}o+=c-1;u++;continue}else{return-1}u++}if(r.length!==u){return-1}return n.length}}function Xi(e){this.__code__=e.replace(/\r/g,"")}Xi.defaults={offset:0,indent:2,exceptions:{specials:[/^(?:#:)?(?:define(?:-values|-syntax|-macro|-class|-record-type)?|(?:call-with-(?:input-file|output-file|port))|lambda|let-env|try|catch|when|unless|while|syntax-rules|(let|letrec)(-syntax|\*)?)$/],shift:{1:["&","#"]}}};Xi.match=Zi;Xi.prototype._options=function e(t){var r=Xi.defaults;if(typeof t==="undefined"){return Object.assign({},r)}var n=t&&t.exceptions||{};var i=n.specials||[];var u=n.shift||{1:[]};return vn(vn(vn({},r),t),{},{exceptions:{specials:[].concat(q(r.exceptions.specials),q(i)),shift:vn(vn({},u),{},{1:[].concat(q(r.exceptions.shift[1]),q(u[1]))})}})};Xi.prototype.indent=function e(t){var r=wi(this.__code__,true);return this._indent(r,t)};Xi.exception_shift=function(u,e){function t(e){if(!e.length){return false}if(e.indexOf(u)!==-1){return true}else{var t=e.filter(function(e){return e instanceof RegExp});if(!t.length){return false}var r=hn(t),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;if(u.match(i)){return true}}}catch(e){r.e(e)}finally{r.f()}}return false}if(t(e.exceptions.specials)){return e.indent}var r=e.exceptions.shift;for(var n=0,i=Object.entries(r);n0){t.offset=0}if(n.toString()===e.toString()&&ms(n)){return t.offset+n[0].col}else if(n.length===1){return t.offset+n[0].col+1}else{var u=-1;if(i){var a=Xi.exception_shift(i.token,t);if(a!==-1){u=a}}if(u===-1){u=Xi.exception_shift(n[1].token,t)}if(u!==-1){return t.offset+n[0].col+u}else if(n[0].line3&&n[1].line===n[3].line){if(n[1].token==="("||n[1].token==="["){return t.offset+n[1].col}return t.offset+n[3].col}else if(n[0].line===n[1].line){return t.offset+t.indent+n[0].col}else{var o=n.slice(2);for(var s=0;s")};eu.prototype.match=function(e){return e.match(this.pattern)};function tu(){for(var e=arguments.length,t=new Array(e),r=0;r")};Xi.Pattern=tu;Xi.Ahead=eu;var ru=/^[[(]$/;var nu=/^[\])]$/;var iu=/[^()[\]]/;var uu=new eu(/[^)\]]/);var au=Symbol["for"]("*");var ou=new tu([ru,au,nu],[iu],"+");var su=new tu([ru,au,nu],"+");var cu=new tu([Symbol["for"]("symbol")],"?");var fu=new tu([Symbol["for"]("symbol")],"*");var lu=[ru,fu,nu];var hu=new tu([ru,Symbol["for"]("symbol"),au,nu],"+");var pu=vu("define","lambda","define-macro","syntax-rules");var _u=/^(?!.*\b(?:[()[\]]|define(?:-macro)?|let(?:\*|rec|-env|-syntax|)?|lambda|syntax-rules)\b).*$/;var du=/^(?:#:)?(let(?:\*|rec|-env|-syntax)?)$/;function vu(){for(var e=arguments.length,t=new Array(e),r=0;r0&&!i[e]){i[e]=Wi(n,e)}});var u=hn(t),p;try{for(u.s();!(p=u.n()).done;){var a=j(p.value,3),_=a[0],o=a[1],s=a[2];o=o.valueOf();var d=o>0?i[o]:n;var v=d.filter(function(e){return e.trim()&&!ji(e)});var y=h(d);var m=Zi(_,v);var g=e.slice(r).find(function(e){return e.trim()&&!ji(e)});if(m&&(s instanceof eu&&s.match(g)||!s)){var c=r-y;if(e[c]!=="\n"){if(!e[c].trim()){e[c]="\n"}else{e.splice(c,0,"\n");r++}}r+=y;continue e}}}catch(e){u.e(e)}finally{u.f()}}this.__code__=e.join("");return this};Xi.prototype._spaces=function(e){return new Array(e+1).join(" ")};Xi.prototype.format=function c(e){var t=this.__code__.replace(/[ \t]*\n[ \t]*/g,"\n ");var r=wi(t,true);var n=this._options(e);var i=0;var u=0;for(var a=0;a0&&arguments[0]!==undefined?arguments[0]:true;var n=new Map;function i(e){if(e instanceof M){if(n.has(e)){return n.get(e)}var t=new M;n.set(e,t);if(r){t.car=i(e.car)}else{t.car=e.car}t.cdr=i(e.cdr);t[ga]=e[ga];return t}return e}return i(this)};M.prototype.last_pair=function(){var e=this;while(true){if(e.cdr===U){return e}e=e.cdr}};M.prototype.to_array=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;var t=[];if(this.car instanceof M){if(e){t.push(this.car.to_array())}else{t.push(this.car)}}else{t.push(this.car.valueOf())}if(this.cdr instanceof M){t=t.concat(this.cdr.to_array())}return t};M.fromArray=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof M||r&&e instanceof Array&&e[ya]){return e}if(t===false){var n=U;for(var i=e.length;i--;){n=new M(e[i],n)}return n}if(e.length&&!(e instanceof Array)){e=q(e)}var u=U;var a=e.length;while(a--){var o=e[a];if(o instanceof Array){o=M.fromArray(o,t,r)}else if(typeof o==="string"){o=$a(o)}else if(typeof o==="number"&&!Number.isNaN(o)){o=C(o)}u=new M(o,u)}return u};M.prototype.to_object=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;var t=this;var r={};while(true){if(t instanceof M&&t.car instanceof M){var n=t.car;var i=n.car;if(i instanceof L){i=i.__name__}if(i instanceof $a){i=i.valueOf()}var u=n.cdr;if(u instanceof M){u=u.to_object(e)}if(ts(u)){if(!e){u=u.valueOf()}}r[i]=u;t=t.cdr}else{break}}return r};M.fromPairs=function(e){return e.reduce(function(e,t){return new M(new M(new L(t[0]),t[1]),e)},U)};M.fromObject=function(t){var e=Object.keys(t).map(function(e){return[e,t[e]]});return M.fromPairs(e)};M.prototype.reduce=function(e){var t=this;var r=U;while(true){if(t!==U){r=e(r,t.car);t=t.cdr}else{break}}return r};M.prototype.reverse=function(){if(this.haveCycles()){throw new Error("You can't reverse list that have cycles")}var e=this;var t=U;while(e!==U){var r=e.cdr;e.cdr=t;t=e;e=r}return t};M.prototype.transform=function(n){function i(e){if(e instanceof M){if(e.replace){delete e.replace;return e}var t=n(e.car);if(t instanceof M){t=i(t)}var r=n(e.cdr);if(r instanceof M){r=i(r)}return new M(t,r)}return e}return i(this)};M.prototype.map=function(e){if(typeof this.car!=="undefined"){return new M(e(this.car),this.cdr===U?U:this.cdr.map(e))}else{return U}};var bu=new Map;function wu(e){return e&&_(e)==="object"&&e.constructor===Object}var Du=Object.getOwnPropertyNames(Array.prototype);var Eu=[];Du.forEach(function(e){Eu.push(Array[e],Array.prototype[e])});function Au(e){e=sa(e);return Eu.includes(e)}function xu(e){return Xu(e)&&(Ca(e)||e.__doc__)}function Fu(r){var e=r.constructor||Object;var n=wu(r);var i=Xu(r[Symbol.asyncIterator])||Xu(r[Symbol.iterator]);var u;if(bu.has(e)){u=bu.get(e)}else{bu.forEach(function(e,t){t=sa(t);if(r.constructor===t&&(t===Object&&n&&!i||t!==Object)){u=e}})}return u}var ku=new Map;[[true,"#t"],[false,"#f"],[null,"null"],[undefined,"#"]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ku.set(r,n)});function Cu(r){if(r&&_(r)==="object"){var n={};var e=Object.getOwnPropertySymbols(r);e.forEach(function(e){var t=e.toString().replace(/Symbol\(([^)]+)\)/,"$1");n[t]=Pu(r[e])});var t=Object.getOwnPropertyNames(r);t.forEach(function(e){var t=r[e];if(t&&_(t)==="object"&&t.constructor===Object){n[e]=Cu(t)}else{n[e]=Pu(t)}});return n}return r}function Ou(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function Su(e,t){return e.hasOwnProperty(t)&&Xu(e.toString)}function Bu(e){if(Ba(e)){return"#"}var t=e.prototype&&e.prototype.constructor;if(Xu(t)&&Ca(t)){if(e[ba]&&t.hasOwnProperty("__name__")){var r=t.__name__;if($a.isString(r)){r=r.toString();return"#")}return"#"}}if(e.hasOwnProperty("__name__")){var n=e.__name__;if(_(n)==="symbol"){n=Ai(n)}if(typeof n==="string"){return"#")}}if(Su(e,"toString")){return e.toString()}else if(e.name&&!Ca(e)){return"#")}else{return"#"}}var ju=new Map;[[Error,function(e){return e.message}],[M,function(e,t){var r=t.quote,n=t.skip_cycles,i=t.pair_args;if(!n){e.markCycles()}return e.toString.apply(e,[r].concat(q(i)))}],[za,function(e,t){var r=t.quote;if(r){return e.toString()}return e.valueOf()}],[$a,function(e,t){var r=t.quote;e=e.toString();if(r){return JSON.stringify(e).replace(/\\n/g,"\n")}return e}],[RegExp,function(e){return"#"+e.toString()}]].forEach(function(e){var t=j(e,2),r=t[0],n=t[1];ju.set(r,n)});var Iu=[L,C,Vu,jo,ho,po,So,ki];function Pu(e,t,c){if(typeof jQuery!=="undefined"&&e instanceof jQuery.fn.init){return"#"}if(ku.has(e)){return ku.get(e)}if(Nu(e)){return"#"}if(e){var r=e.constructor;if(ju.has(r)){for(var n=arguments.length,f=new Array(n>3?n-3:0),i=3;i"}if(e===null){return"null"}if(_(e)==="object"){var a=e.constructor;if(!a){a=Object}var o;if(typeof a.__class__==="string"){o=a.__class__}else{var s=Fu(e);if(s){if(Xu(s)){return s(e,t)}else{throw new Error("toString: Invalid repr value")}}o=a.name}if(Xu(e.toString)&&Ca(e.toString)){return e.toString().valueOf()}if(us(e)==="instance"){if(Ca(a)&&a.__name__){o=a.__name__.valueOf()}else if(!Ba(a)){o="instance"}}if(ns(e,Symbol.iterator)){if(o){return"#")}return"#"}if(ns(e,Symbol.asyncIterator)){if(o){return"#")}return"#"}if(o!==""){return"#<"+o+">"}return"#"}if(typeof e!=="string"){return e.toString()}return e}function Nu(e){return e&&_(e)==="object"&&e.hasOwnProperty&&e.hasOwnProperty("constructor")&&typeof e.constructor==="function"&&e.constructor.prototype===e}M.prototype.markCycles=function(){Ru(this);return this};M.prototype.haveCycles=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(!e){return this.haveCycles("car")||this.haveCycles("cdr")}return!!(this[ga]&&this[ga][e])};function Ru(e){var t=[];var i=[];var u=[];function a(e){if(!t.includes(e)){t.push(e)}}function o(e,t,r,n){if(r instanceof M){if(n.includes(r)){if(!u.includes(r)){u.push(r)}if(!e[ga]){e[ga]={}}e[ga][t]=r;if(!i.includes(e)){i.push(e)}return true}}}var s=gi(function e(t,r){if(t instanceof M){delete t.ref;delete t[ga];a(t);r.push(t);var n=o(t,"car",t.car,r);var i=o(t,"cdr",t.cdr,r);if(!n){s(t.car,r.slice())}if(!i){return new mi(function(){return e(t.cdr,r.slice())})}}});function r(e,t){if(e[ga][t]instanceof M){var r=n.indexOf(e[ga][t]);e[ga][t]="#".concat(r,"#")}}s(e,[]);var n=t.filter(function(e){return u.includes(e)});n.forEach(function(e,t){e[ma]="#".concat(t,"=")});i.forEach(function(e){r(e,"car");r(e,"cdr")})}M.prototype.toString=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.nested,n=r===void 0?false:r;var i=[];if(this[ma]){i.push(this[ma]+"(")}else if(!n){i.push("(")}var u;if(this[ga]&&this[ga].car){u=this[ga].car}else{u=Pu(this.car,e,true)}if(u!==undefined){i.push(u)}if(this.cdr instanceof M){if(this[ga]&&this[ga].cdr){i.push(" . ");i.push(this[ga].cdr)}else{if(this.cdr[ma]){i.push(" . ")}else{i.push(" ")}var a=this.cdr.toString(e,{nested:true});i.push(a)}}else if(this.cdr!==U){i=i.concat([" . ",Pu(this.cdr,e,true)])}if(!n||this[ma]){i.push(")")}return i.join("")};M.prototype.set=function(e,t){this[e]=t;if(t instanceof M){this.markCycles()}};M.prototype.append=function(e){if(e instanceof Array){return this.append(M.fromArray(e))}var t=this;if(t.car===undefined){if(e instanceof M){this.car=e.car;this.cdr=e.cdr}else{this.car=e}}else if(e!==U){while(true){if(t instanceof M&&t.cdr!==U){t=t.cdr}else{break}}t.cdr=e}return this};M.prototype.serialize=function(){return[this.car,this.cdr]};M.prototype[Symbol.iterator]=function(){var r=this;return{next:function e(){var t=r;r=t.cdr;if(t===U){return{value:undefined,done:true}}else{return{value:t.car,done:false}}}}};function Tu(e){return e<0?-e:e}function Lu(e,t){var r=m(t),n=r[0],i=r.slice(1);while(i.length>0){var u=i,a=j(u,1),o=a[0];if(!e(n,o)){return false}var s=i;var c=m(s);n=c[0];i=c.slice(1)}return true}function Uu(e,t){if(Xu(e)){return Xu(t)&&sa(e)===sa(t)}else if(e instanceof C){if(!(t instanceof C)){return false}var r;if(e.__type__===t.__type__){if(e.__type__==="complex"){r=e.__im__.__type__===t.__im__.__type__&&e.__re__.__type__===t.__re__.__type__}else{r=true}if(r&&e.cmp(t)===0){if(e.valueOf()===0){return Object.is(e.valueOf(),t.valueOf())}return true}}return false}else if(typeof e==="number"){if(typeof t!=="number"){return false}if(Number.isNaN(e)){return Number.isNaN(t)}if(e===Number.NEGATIVE_INFINITY){return t===Number.NEGATIVE_INFINITY}if(e===Number.POSITIVE_INFINITY){return t===Number.POSITIVE_INFINITY}return Uu(C(e),C(t))}else if(e instanceof za){if(!(t instanceof za)){return false}return e.__char__===t.__char__}else{return e===t}}function Mu(e,t){if(us(e)!==us(t)){return false}if(!qu(e)){return false}if(e instanceof RegExp){return e.source===t.source}if(e instanceof $a){return e.valueOf()===t.valueOf()}return Uu(e,t)}function qu(e){return e instanceof L||$a.isString(e)||e===U||e===null||e instanceof za||e instanceof C||e===true||e===false}var Yu=function(){if(Math.trunc){return Math.trunc}else{return function(e){if(e===0){return 0}else if(e<0){return Math.ceil(e)}else{return Math.floor(e)}}}}();function Vu(e,t,r,n){if(typeof this!=="undefined"&&this.constructor!==Vu||typeof this==="undefined"){return new Vu(e,t)}h("Macro",e,"string",1);h("Macro",t,"function",2);if(r){if(n){this.__doc__=r}else{this.__doc__=Hi(r)}}this.__name__=e;this.__fn__=t}Vu.defmacro=function(e,t,r,n){var i=new Vu(e,t,r,n);i.__defmacro__=true;return i};Vu.prototype.invoke=function(e,t,r){var n=t.env,i=t.dynamic_scope,u=t.error;var a={dynamic_scope:i,error:u,macro_expand:r};var o=this.__fn__.call(n,e,a,this.__name__);return o};Vu.prototype.toString=function(){return"#")};var zu="define-macro";var $u=-1e4;function Ju(c){return function(){var r=B(z.mark(function e(r,m){var u,g,n,i,s,D,E,A,x,F,k,b,a,w,o;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:o=function e(){o=B(z.mark(function e(r,n,i){var h,u,a,p,o,_,s,d,c,v,f,l,y;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r instanceof M&&r.car instanceof L)){t.next=50;break}if(!r[ya]){t.next=3;break}return t.abrupt("return",r);case 3:h=r.car.valueOf();u=i.get(r.car,{throwError:false});a=D(r.car);p=a||E(u,r)||A(u);if(!(p&&r.cdr.car instanceof M)){t.next=28;break}if(!a){t.next=15;break}g=F(r.cdr.car);t.next=12;return b(r.cdr.car,n);case 12:o=t.sent;t.next=17;break;case 15:g=x(r.cdr.car);o=r.cdr.car;case 17:t.t0=M;t.t1=r.car;t.t2=M;t.t3=o;t.next=23;return w(r.cdr.cdr,n,i);case 23:t.t4=t.sent;t.t5=new t.t2(t.t3,t.t4);return t.abrupt("return",new t.t0(t.t1,t.t5));case 28:if(!k(h,u)){t.next=50;break}_=u instanceof Ku?r:r.cdr;t.next=32;return u.invoke(_,vn(vn({},m),{},{env:i}),true);case 32:s=t.sent;if(!(u instanceof Ku)){t.next=41;break}d=s,c=d.expr,v=d.scope;if(!(c instanceof M)){t.next=40;break}if(!(n!==-1&&n<=1||n<$u)){t.next=38;break}return t.abrupt("return",c);case 38:if(n!==-1){n=n-1}return t.abrupt("return",w(c,n,v));case 40:s=c;case 41:if(!(s instanceof L)){t.next=43;break}return t.abrupt("return",Io(s));case 43:if(!(s instanceof M)){t.next=48;break}if(!(n!==-1&&n<=1||n<$u)){t.next=46;break}return t.abrupt("return",s);case 46:if(n!==-1){n=n-1}return t.abrupt("return",w(s,n,i));case 48:if(!qu(s)){t.next=50;break}return t.abrupt("return",s);case 50:f=r.car;if(!(f instanceof M)){t.next=55;break}t.next=54;return w(f,n,i);case 54:f=t.sent;case 55:l=r.cdr;if(!(l instanceof M)){t.next=60;break}t.next=59;return w(l,n,i);case 59:l=t.sent;case 60:y=new M(f,l);return t.abrupt("return",y);case 62:case"end":return t.stop()}}},e)}));return o.apply(this,arguments)};w=function e(t,r,n){return o.apply(this,arguments)};a=function e(){a=B(z.mark(function e(r,n){var i;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(r===U)){t.next=2;break}return t.abrupt("return",U);case 2:i=r.car;t.t0=M;t.t1=M;t.t2=i.car;t.next=8;return w(i.cdr,n,u);case 8:t.t3=t.sent;t.t4=new t.t1(t.t2,t.t3);t.next=12;return b(r.cdr);case 12:t.t5=t.sent;return t.abrupt("return",new t.t0(t.t4,t.t5));case 14:case"end":return t.stop()}}},e)}));return a.apply(this,arguments)};b=function e(t,r){return a.apply(this,arguments)};k=function e(t,r){return r instanceof Vu&&r.__defmacro__&&!g.includes(t)};F=function e(t){return[].concat(q(g),q(t.to_array(false).map(function(e){if(e instanceof M){return e.car.valueOf()}throw new Error("macroexpand: Invalid let binding")})))};x=function e(t){var r=[];while(true){if(t!==U){if(t instanceof L){r.push(t.valueOf());break}r.push(t.car.valueOf());t=t.cdr}else{break}}return[].concat(q(g),r)};A=function e(t){return t===i};E=function e(t,r){return t===s&&r.cdr.car instanceof M};D=function e(t){var r=t.valueOf();return n.includes(r)};u=m["env"]=this;g=[];n=["let","let*","letrec"];i=qo.get("lambda");s=qo.get("define");if(!(r.cdr instanceof M&&C.isNumber(r.cdr.car))){t.next=21;break}t.t0=Io;t.next=19;return w(r,r.cdr.car.valueOf(),u);case 19:t.t1=t.sent.car;return t.abrupt("return",(0,t.t0)(t.t1));case 21:if(!c){t.next=27;break}t.t2=Io;t.next=25;return w(r,1,u);case 25:t.t3=t.sent.car;return t.abrupt("return",(0,t.t2)(t.t3));case 27:t.t4=Io;t.next=30;return w(r,-1,u);case 30:t.t5=t.sent.car;return t.abrupt("return",(0,t.t4)(t.t5));case 32:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()}function Ku(e,t){this.__env__=t;this.__fn__=e;this.__defmacro__=true}Ku.__merge_env__=Symbol["for"]("merge");Ku.prototype=Object.create(Vu.prototype);Ku.prototype.invoke=function(e,t,r){var n=t.error,i=t.env;var u={error:n,env:i,dynamic_scope:this.__env__,macro_expand:r};return this.__fn__.call(i,e,u,this.__name__||"syntax")};Ku.prototype.constructor=Ku;Ku.prototype.toString=function(){if(this.__name__){return"#")}return"#"};Ku.className="syntax";var Gu=function(e){u(r,e);var t=fn(r);function r(){D(this,r);return t.apply(this,arguments)}return A(r)}(Ku);Ku.Parameter=Gu;function Hu(e,t,w,D){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var E={"...":{symbols:{},lists:[]},symbols:{}};var A=r.expansion,k=r.define;function x(e){if(Cn()){console.log(e)}}x(w);function F(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:[];var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;x({code:t&&Pu(t,true),pattern:e&&Pu(e,true)});if(qu(e)&&!(e instanceof L)){return Mu(e,t)}if(e instanceof L&&w.includes(e.literal())){var c=A.ref(t);if(L.is(t,e)){if(typeof c==="undefined"){return true}return c===k||c===qo}return false}if(e instanceof M&&e.car instanceof M&&e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){x(">> 0");if(t===U){x({pattern:e.toString()});if(e.car.car instanceof L){if(e.car.cdr instanceof M&&L.is(e.car.cdr.car,D)){var f=e.car.car.valueOf();var l=e.last_pair();if(L.is(l.car,D)){E["..."].symbols[f]=null;return true}else{return false}}var h=e.car.car.valueOf();if(E["..."].symbols[h]){throw new Error("syntax: named ellipsis can only "+"appear onces")}E["..."].symbols[h]=t}}}if(e instanceof M&&e.cdr instanceof M&&L.is(e.cdr.car,D)){if(e.cdr.cdr!==U){if(e.cdr.cdr instanceof M){var p=e.cdr.cdr.length();var _=t.length();var i=t;while(_-1>p){i=i.cdr;_--}var d=i.cdr;i.cdr=U;if(!F(e.cdr.cdr,d,r,n)){return false}}}if(e.car instanceof L){var u=e.car.__name__;if(E["..."].symbols[u]&&!r.includes(u)&&!n){throw new Error("syntax: named ellipsis can only appear onces")}x(">> 1");if(t===U){x(">> 2");if(n){x("NIL");E["..."].symbols[u]=U}else{x("NULL");E["..."].symbols[u]=null}}else if(t instanceof M&&(t.car instanceof M||t.car===U)){x(">> 3 "+n);if(n){if(E["..."].symbols[u]){var a=E["..."].symbols[u];if(a===U){a=new M(U,new M(t,U))}else{a=a.append(new M(t,U))}E["..."].symbols[u]=a}else{E["..."].symbols[u]=new M(t,U)}}else{x(">> 4");E["..."].symbols[u]=new M(t,U)}}else{x(">> 6");if(t instanceof M){x(">> 7 "+n);r.push(u);if(!E["..."].symbols[u]){E["..."].symbols[u]=new M(t,U)}else{var v=E["..."].symbols[u];E["..."].symbols[u]=v.append(new M(t,U))}x({IIIIII:E["..."].symbols[u].toString()})}else{x(">> 8");return false}}return true}else if(e.car instanceof M){var y=q(r);if(t===U){x(">> 9");E["..."].lists.push(U);return true}x(">> 10");var m=t;while(m instanceof M){if(!F(e.car,m.car,y,true)){return false}m=m.cdr}return true}return false}if(e instanceof L){if(L.is(e,D)){throw new Error("syntax: invalid usage of ellipsis")}x(">> 11");var o=e.__name__;if(w.includes(o)){return true}x({name:o,ellipsis:n});if(n){E["..."].symbols[o]=E["..."].symbols[o]||[];E["..."].symbols[o].push(t)}E.symbols[o]=t;if(!E.symbols[o]);return true}if(e instanceof M&&t instanceof M){x(">> 12");x({a:12,code:t&&t.toString(),pattern:e.toString()});if(t.cdr===U){var g=e.car instanceof L&&e.cdr instanceof L;if(g){if(!F(e.car,t.car,r,n)){return false}x(">> 12 | 1");var s=e.cdr.valueOf();if(!(s in E.symbols)){E.symbols[s]=U}s=e.car.valueOf();if(!(s in E.symbols)){E.symbols[s]=t.car}return true}}x({pattern:e.toString(),code:t.toString()});if(e.cdr instanceof M&&e.car instanceof L&&e.cdr.cdr instanceof M&&e.cdr.car instanceof L&&L.is(e.cdr.cdr.car,D)&&e.cdr.cdr.cdr instanceof M&&!L.is(e.cdr.cdr.cdr.car,D)&&F(e.car,t.car,r,n)&&F(e.cdr.cdr.cdr,t.cdr,r,n)){var b=e.cdr.car.__name__;x({pattern:e.car.toString(),code:t.car.toString(),name:b});if(w.includes(b)){return true}E["..."].symbols[b]=null;return true}x("recur");if(F(e.car,t.car,r,n)&&F(e.cdr,t.cdr,r,n)){return true}}else if(e===U&&(t===U||t===undefined)){return true}else if(e.car instanceof M&&L.is(e.car.car,D)){throw new Error("syntax: invalid usage of ellipsis")}else{return false}}if(F(e,t)){return E}}function Wu(e,i){function u(t){if(t instanceof M){if(!i.length){return t}var e=u(t.car);var r=u(t.cdr);return new M(e,r)}else if(t instanceof L){var n=i.find(function(e){return e.gensym===t});if(n){return L(n.name)}return t}else{return t}}return u(e)}function Qu(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var O=e.bindings,t=e.expr,S=e.scope,a=e.symbols,f=e.names,B=e.ellipsis;var c={};function o(e){if(e instanceof L){return true}return["string","symbol"].includes(_(e))}function j(e){if(!o(e)){var t=us(e);throw new Error("syntax: internal error, need symbol got ".concat(t))}var r=e.valueOf();if(r===B){throw new Error("syntax: internal error, ellipis not transformed")}var n=_(r);if(["string","symbol"].includes(n)){if(r in O.symbols){return O.symbols[r]}else if(n==="string"&&r.match(/\./)){var i=r.split(".");var u=i[0];if(u in O.symbols){return M.fromArray([L("."),O.symbols[u]].concat(i.slice(1).map(function(e){return $a(e)})))}}}if(a.includes(r)){return L(r)}return s(r)}function I(e){if(Cn()){console.log(e)}}function s(e){if(!c[e]){var t=S.ref(e);var r=Fi(e);if(t){var n=S.get(e);S.set(r,n)}else{var i=S.get(e,{throwError:false});if(typeof i!=="undefined"){S.set(r,i)}}f.push({name:e,gensym:r});c[e]=r;if(typeof e==="string"&&e.match(/\./)){var u=e.split(".").filter(Boolean),a=m(u),o=a[0],s=a.slice(1);if(c[o]){Fa(r,"__object__",[c[o]].concat(q(s)))}}}return c[e]}function P(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:function(){};var i=r.nested;I(" ==> "+e.toString(true));I(t);if(e instanceof L){var u=e.valueOf();I("[t 1");if(t[u]){if(t[u]instanceof M){var c=t[u],f=c.car,l=c.cdr;if(i){var h=f.car,p=f.cdr;if(p!==U){n(u,new M(p,U))}return h}if(l!==U){n(u,l)}return f}else if(t[u]instanceof Array){n(u,t[u].slice(1));return t[u][0]}}return j(u)}if(e instanceof M){if(e.car instanceof L&&e.cdr instanceof M&&L.is(e.cdr.car,B)){I("[t 2");var a=e.car.valueOf();var o=t[a];I({expr:e.toString(true),name:a,bindings:t,item:o});if(o===null){return}else if(o){I({b:t[a].toString()});if(o instanceof M){I("[t 2 Pair "+i);I({______:o.toString()});var s=o.car,_=o.cdr;if(i){if(_!==U){I("|| next 1");n(a,_)}I({car:s.toString()});return s}else{if(s.cdr!==U){I("|| next 2");n(a,new M(s.cdr,_))}I({car:s.car.toString()});return s.car}}else if(o instanceof Array){I("[t 2 Array "+i);if(i){n(a,o.slice(1));return M.fromArray(o)}else{var d=o.slice(1);if(d.length){n(a,d)}return o[0]}}else{return o}}}I("[t 3 recur "+e.toString());var v=P(e.car,t,r,n);var y=P(e.cdr,t,r,n);return new M(v,y)}return e}function R(t,r){var e=Object.values(t);var n=Object.getOwnPropertySymbols(t);if(n.length){e.push.apply(e,q(n.map(function(e){return t[e]})))}return e.length&&e.every(function(e){if(e===null){return!r}return e instanceof M||e===U||e instanceof Array&&e.length})}function T(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}function N(i){var n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},e=n.disabled;I("traverse>> "+Pu(i));if(i instanceof M){if(!e&&i.car instanceof M&&L.is(i.car.car,B)){return N(i.car.cdr,{disabled:true})}if(i.cdr instanceof M&&L.is(i.cdr.car,B)&&!e){I(">> 1");var t=O["..."].symbols;var f=Object.values(t);if(f.length&&f.every(function(e){return e===null})){return N(i.cdr.cdr,{disabled:e})}var l=T(t);var u=i.car instanceof L&&L.is(i.cdr.cdr.car,B);if(i.car instanceof M||u){if(O["..."].lists[0]===U){return U}var h=i.car;if(u){h=new M(i.car,new M(i.cdr.car,U))}I(">> 2");var a;if(l.length){I(">> 2 (a)");var o=vn({},t);a=U;var p=function e(){if(!R(o)){return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(h,o,{nested:true},t);if(r!==undefined){if(u){if(a===U){a=r}else{a=a.append(r)}}else{a=new M(r,a)}}o=n};while(true){var _=p();if(_==="break")break}if(a!==U&&!u){a=a.reverse()}if(i.cdr.cdr!==U&&!L.is(i.cdr.cdr.car,B)){var d=N(i.cdr.cdr,{disabled:e});return a.append(d)}return a}else{I(">> 3");var v=P(i.car,t,{nested:true});if(v){return new M(v,U)}return U}}else if(i.car instanceof L){I(">> 4");if(L.is(i.cdr.cdr.car,B)){I(">> 4 (a)")}else{I(">> 4 (b)")}var y=i.car.__name__;var s=Y({},y,t[y]);var m=t[y]===null;var c=U;var g=function e(){if(!R(s,true)){I({bind:s});return"break"}var n={};var t=function e(t,r){n[t]=r};var r=P(i,s,{nested:false},t);I({value:r.toString()});if(typeof r!=="undefined"){c=new M(r,c)}s=n};while(true){var b=g();if(b==="break")break}if(c!==U){c=c.reverse()}if(i.cdr instanceof M){if(i.cdr.cdr instanceof M||i.cdr.cdr instanceof L){var w=N(i.cdr.cdr,{disabled:e});if(m){return w}I("<<<< 1");c.append(w)}}I("<<<< 2");return c}}var D=N(i.car,{disabled:e});var r;var E;if(i.car instanceof L){var A=S.get(i.car,{throwError:false});E=A instanceof Vu&&A.__name__==="syntax-rules"}if(E){if(i.cdr.car instanceof L){r=new M(N(i.cdr.car,{disabled:e}),new M(i.cdr.cdr.car,N(i.cdr.cdr.cdr,{disabled:e})))}else{r=new M(i.cdr.car,N(i.cdr.cdr,{disabled:e}))}I("REST >>>> "+r.toString())}else{r=N(i.cdr,{disabled:e})}I({a:true,car:Pu(i.car),cdr:Pu(i.cdr),head:Pu(D),rest:Pu(r)});return new M(D,r)}if(i instanceof L){if(e&&L.is(i,B)){return i}var x=Object.keys(O["..."].symbols);var F=i.literal();if(x.includes(F)){var k="missing ellipsis symbol next to name `".concat(F,"'");throw new Error("syntax-rules: ".concat(k))}var C=j(i);if(typeof C!=="undefined"){return C}}return i}return N(t,{})}function Zu(e){return na(e)||e===U||e===null}function Xu(e){return typeof e==="function"&&typeof e.bind==="function"}function ea(e){return e instanceof hs}function ta(e){return Xu(e)||ea(e)}function ra(e){if(e instanceof ki){return false}if(e instanceof Promise){return true}return e&&Xu(e.then)}function na(e){return typeof e==="undefined"}function ia(e){switch(_(e)){case"string":return $a(e);case"bigint":return C(e);case"number":if(Number.isNaN(e)){return Uo}else{return C(e)}}return e}function ua(n,i){var e=Object.getOwnPropertyNames(n);var t=Object.getOwnPropertySymbols(n);e.concat(t).forEach(function(e){var t=i(n[e]);var r=Object.getOwnPropertyDescriptor(n,e);if(!r||r.writable&&n[e]!==t){n[e]=t}});return n}function aa(t){var e=[$a,C].some(function(e){return t instanceof e});if(e){return t.valueOf()}if(t instanceof Array){return t.map(aa)}if(t instanceof ki){delete t.then}if(wu(t)){return ua(t,aa)}return t}function oa(e,t){if(e instanceof M){e.markCycles();return Io(e)}if(Xu(e)){if(t){return ca(e,t)}}return ia(e)}function sa(e){if(la(e)){return e[va]}return e}function ca(e,t){if(e[Symbol["for"]("__bound__")]){return e}var r=e.bind(t);var n=Object.getOwnPropertyNames(e);var i=hn(n),u;try{for(i.s();!(u=i.n()).done;){var a=u.value;if(xa(a)){try{r[a]=e[a]}catch(e){}}}}catch(e){i.e(e)}finally{i.f()}Fa(r,"__fn__",e);Fa(r,"__context__",t);Fa(r,"__bound__",true);if(Ba(e)){Fa(r,"__native__",true)}if(wu(t)&&Ca(e)){Fa(r,"__method__",true)}r.valueOf=function(){return e};return r}function fa(e){return la(e)&&e[Symbol["for"]("__context__")]===Object}function la(e){return!!(Xu(e)&&e[va])}function ha(e){if(Xu(e)){var t=e[da];if(t&&(t===Gs||t.constructor&&t.constructor.__class__)){return true}}return false}function pa(e){return e instanceof ho||e instanceof po}function _a(e){if(Xu(e)){if(pa(e[da])){return true}}return false}var da=Symbol["for"]("__context__");var va=Symbol["for"]("__fn__");var ya=Symbol["for"]("__data__");var ma=Symbol["for"]("__ref__");var ga=Symbol["for"]("__cycles__");var ba=Symbol["for"]("__class__");var wa=Symbol["for"]("__method__");var Da=Symbol["for"]("__prototype__");var Ea=Symbol["for"]("__lambda__");var Aa=["name","length","caller","callee","arguments","prototype"];function xa(e){return!Aa.includes(e)}function Fa(e,t,r){Object.defineProperty(e,Symbol["for"](t),{get:function e(){return r},set:function e(){},configurable:false,enumerable:false})}function ka(t,r){try{Object.defineProperty(t,"length",{get:function e(){return r}});return t}catch(e){var n=new Array(r).fill(0).map(function(e,t){return"a"+t}).join(",");var i=new Function("f","return function(".concat(n,") {\n return f.apply(this, arguments);\n };"));return i(t)}}function Ca(e){return e&&e[Ea]}function Oa(e){return e&&e[wa]}function Sa(e){return Ca(e)&&!e[Da]&&!Oa(e)&&!_a(e)}function Ba(e){var t=Symbol["for"]("__native__");return Xu(e)&&e.toString().match(/\{\s*\[native code\]\s*\}/)&&(e.name.match(/^bound /)&&e[t]===true||!e.name.match(/^bound /)&&!e[t])}function ja(e){var g;switch(e){case Symbol["for"]("letrec"):g="letrec";break;case Symbol["for"]("let"):g="let";break;case Symbol["for"]("let*"):g="let*";break;default:throw new Error("Invalid let_macro value")}return Vu.defmacro(g,function(t,e){var f=e.dynamic_scope,l=e.error,n=e.macro_expand;var h;if(t.car instanceof L){if(!(t.cdr.car instanceof M||t.cdr.car===U)){throw new Error("let require list of pairs")}var r;if(t.cdr.car===U){h=U;r=U}else{r=t.cdr.car.map(function(e){return e.car});h=t.cdr.car.map(function(e){return e.cdr.car})}return M.fromArray([L("letrec"),[[t.car,M(L("lambda"),M(r,t.cdr.cdr))]],M(t.car,h)])}else if(n){return}var p=this;h=qo.get("list->array")(t.car);var _=p.inherit(g);var d,v;if(g==="let*"){v=_}else if(g==="let"){d=[]}var y=0;function m(){var e=new M(new L("begin"),t.cdr);return _s(e,{env:_,dynamic_scope:f,error:l})}return function t(){var r=h[y++];if(f){f=g==="let*"?_:p}if(!r){if(d&&d.length){var e=d.map(function(e){return e.value});var n=e.filter(ra);if(n.length){return Ci(e).then(function(e){for(var t=0,r=e.length;t1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;var i=this;if(r){r=this}var u=e;var a=[];while(u instanceof M){a.push(_s(u.car,{env:i,dynamic_scope:r,error:n}));u=u.cdr}var o=a.filter(ra).length;if(o){return Ci(a).then(s.bind(this))}else{return s.call(this,a)}})}function Pa(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2?n-2:0),u=2;u1&&arguments[1]!==undefined?arguments[1]:null;return function(){for(var e=arguments.length,t=new Array(e),r=0;r1?e-1:0),r=1;r=a){return u.apply(this,n)}else{return i}}return i.apply(this,arguments)}}function Va(n,i){h("limit",i,"function",2);return function(){for(var e=arguments.length,t=new Array(e),r=0;r1){e=e.toLowerCase();if(za.__names__[e]){t=e;e=za.__names__[e]}else{throw new Error("Internal: Unknown named character")}}else{t=za.__rev_names__[e]}Object.defineProperty(this,"__char__",{value:e,enumerable:true});if(t){Object.defineProperty(this,"__name__",{value:t,enumerable:true})}}za.__names__=Un;za.__rev_names__={};Object.keys(za.__names__).forEach(function(e){var t=za.__names__[e];za.__rev_names__[t]=e});za.prototype.toUpperCase=function(){return za(this.__char__.toUpperCase())};za.prototype.toLowerCase=function(){return za(this.__char__.toLowerCase())};za.prototype.toString=function(){return"#\\"+(this.__name__||this.__char__)};za.prototype.valueOf=za.prototype.serialize=function(){return this.__char__};function $a(e){if(typeof this!=="undefined"&&!(this instanceof $a)||typeof this==="undefined"){return new $a(e)}if(e instanceof Array){this.__string__=e.map(function(e,t){h("LString",e,"character",t+1);return e.toString()}).join("")}else{this.__string__=e.valueOf()}}{var Ja=["length","constructor"];var Ka=Object.getOwnPropertyNames(String.prototype).filter(function(e){return!Ja.includes(e)});var Ga=function e(n){return function(){for(var e=arguments.length,t=new Array(e),r=0;r0){r.push(this.__string__.substring(0,e))}r.push(t);if(e1&&arguments[1]!==undefined?arguments[1]:false;if(e instanceof C){return e}if(typeof this!=="undefined"&&!(this instanceof C)||typeof this==="undefined"){return new C(e,t)}if(typeof e==="undefined"){throw new Error("Invalid LNumber constructor call")}var r=C.getType(e);if(C.types[r]){return C.types[r](e,t)}var n=e instanceof Array&&$a.isString(e[0])&&C.isNumber(e[1]);if(e instanceof C){return C(e.value)}if(!C.isNumber(e)&&!n){throw new Error("You can't create LNumber from ".concat(us(e)))}if(e===null){e=0}var i;if(n){var c=e,u=j(c,2),a=u[0],o=u[1];if(a instanceof $a){a=a.valueOf()}if(o instanceof C){o=o.valueOf()}var f=a.match(/^([+-])/);var l=false;if(f){a=a.replace(/^[+-]/,"");if(f[1]==="-"){l=true}}}if(Number.isNaN(e)){return uo(e)}else if(typeof BigInt!=="undefined"){if(typeof e!=="bigint"){if(n){var s;switch(o){case 8:s="0o";break;case 16:s="0x";break;case 2:s="0b";break;case 10:s="";break}if(typeof s==="undefined"){var h=BigInt(o);i=q(a).map(function(e,t){return BigInt(parseInt(e,o))*ro(h,BigInt(t))}).reduce(function(e,t){return e+t})}else{i=BigInt(s+a)}}else{i=BigInt(e)}if(l){i*=BigInt(-1)}}else{i=e}return lo(i,true)}else if(typeof xn!=="undefined"&&!(e instanceof xn)){if(e instanceof Array){return lo(p(xn,q(e)))}return lo(new xn(e))}else if(n){this.constant(parseInt(a,o),"integer")}else{this.constant(e,"integer")}}C.prototype.constant=function(e,t){Object.defineProperty(this,"__value__",{value:e,enumerable:true});Object.defineProperty(this,"__type__",{value:t,enumerable:true})};C.types={float:function e(t){return new uo(t)},complex:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isComplex(t)){t={im:0,re:t}}return new io(t,r)},rational:function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(!C.isRational(t)){t={num:t,denom:1}}return new fo(t,r)}};C.prototype.serialize=function(){return this.__value__};C.prototype.isNaN=function(){return Number.isNaN(this.__value__)};C.prototype.gcd=function(e){var t=this.abs();e=e.abs();if(e.cmp(t)===1){var r=t;t=e;e=r}while(true){t=t.rem(e);if(t.cmp(0)===0){return e}e=e.rem(t);if(e.cmp(0)===0){return t}}};C.isFloat=function e(t){return t instanceof uo||Number(t)===t&&t%1!==0};C.isNumber=function(e){return e instanceof C||C.isNative(e)||C.isBN(e)};C.isComplex=function(e){if(!e){return false}var t=e instanceof io||(C.isNumber(e.im)||Number.isNaN(e.im))&&(C.isNumber(e.re)||Number.isNaN(e.re));return t};C.isRational=function(e){if(!e){return false}return e instanceof fo||C.isNumber(e.num)&&C.isNumber(e.denom)};C.isInteger=function(e){if(!(C.isNative(e)||e instanceof C)){return false}if(C.isFloat(e)){return false}if(C.isRational(e)){return false}if(C.isComplex(e)){return false}return true};C.isNative=function(e){return typeof e==="bigint"||typeof e==="number"};C.isBigInteger=function(e){return e instanceof lo||typeof e==="bigint"||C.isBN(e)};C.isBN=function(e){return typeof xn!=="undefined"&&e instanceof xn};C.getArgsType=function(e,t){if(e instanceof uo||t instanceof uo){return uo}if(e instanceof lo||t instanceof lo){return lo}return C};C.prototype.toString=function(e){if(Number.isNaN(this.__value__)){return"+nan.0"}if(e>2&&e<36){return this.__value__.toString(e)}return this.__value__.toString()};C.prototype.asType=function(e){var t=C.getType(this);return C.types[t]?C.types[t](e):C(e)};C.prototype.isBigNumber=function(){return typeof this.__value__==="bigint"||typeof xn!=="undefined"&&!(this.value instanceof xn)};["floor","ceil","round"].forEach(function(e){C.prototype[e]=function(){if(this["float"]||C.isFloat(this.__value__)){return C(Math[e](this.__value__))}else{return C(Math[e](this.valueOf()))}}});C.prototype.valueOf=function(){if(C.isNative(this.__value__)){return Number(this.__value__)}else if(C.isBN(this.__value__)){return this.__value__.toNumber()}};var Za=function(){var e=function e(t,r){return[t,r]};return{bigint:{bigint:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},integer:{integer:e,float:function e(t,r){return[uo(t.valueOf()),r]},rational:function e(t,r){return[{num:t,denom:1},r]},complex:function e(t,r){return[{im:0,re:t},r]}},float:{bigint:function e(t,r){return[t,r&&uo(r.valueOf())]},integer:function e(t,r){return[t,r&&uo(r.valueOf())]},float:e,rational:function e(t,r){return[t,r&&uo(r.valueOf())]},complex:function e(t,r){return[{re:t,im:uo(0)},r]}},complex:{bigint:t("bigint"),integer:t("integer"),float:t("float"),rational:t("rational"),complex:function f(e,t){var r=C.coerce(e.__re__,t.__re__),n=j(r,2),i=n[0],u=n[1];var a=C.coerce(e.__im__,t.__im__),o=j(a,2),s=o[0],c=o[1];return[{im:s,re:i},{im:c,re:u}]}},rational:{bigint:function e(t,r){return[t,r&&{num:r,denom:1}]},integer:function e(t,r){return[t,r&&{num:r,denom:1}]},float:function e(t,r){return[uo(t.valueOf()),r]},rational:e,complex:function e(t,r){return[{im:Xa(t.__type__,r.__im__.__type__,0)[0],re:Xa(t.__type__,r.__re__.__type__,t)[0]},{im:Xa(t.__type__,r.__im__.__type__,r.__im__)[0],re:Xa(t.__type__,r.__re__.__type__,r.__re__)[0]}]}}};function t(r){return function(e,t){return[{im:Xa(r,e.__im__.__type__,0,e.__im__)[1],re:Xa(r,e.__re__.__type__,0,e.__re__)[1]},{im:Xa(r,e.__im__.__type__,0,0)[1],re:Xa(r,t.__type__,0,t)[1]}]}}}();function Xa(e,t,r,n){return Za[e][t](r,n)}C.coerce=function(e,t){var r=C.getType(e);var n=C.getType(t);if(!Za[r]){throw new Error("LNumber::coerce unknown lhs type ".concat(r))}else if(!Za[r][n]){throw new Error("LNumber::coerce unknown rhs type ".concat(n))}var i=Za[r][n](e,t);return i.map(function(e){return C(e,true)})};C.prototype.coerce=function(e){if(!(typeof e==="number"||e instanceof C)){throw new Error("LNumber: you can't coerce ".concat(us(e)))}if(typeof e==="number"){e=C(e)}return C.coerce(this,e)};C.getType=function(e){if(e instanceof C){return e.__type__}if(C.isFloat(e)){return"float"}if(C.isComplex(e)){return"complex"}if(C.isRational(e)){return"rational"}if(typeof e==="number"){return"integer"}if(typeof BigInt!=="undefined"&&typeof e!=="bigint"||typeof xn!=="undefined"&&!(e instanceof xn)){return"bigint"}};C.prototype.isFloat=function(){return!!(C.isFloat(this.__value__)||this["float"])};var eo={add:"+",sub:"-",mul:"*",div:"/",rem:"%",or:"|",and:"&",neg:"~",shl:">>",shr:"<<"};var to={};Object.keys(eo).forEach(function(t){to[eo[t]]=t;C.prototype[t]=function(e){return this.op(eo[t],e)}});C._ops={"*":function e(t,r){return t*r},"+":function e(t,r){return t+r},"-":function e(t,r){if(typeof r==="undefined"){return-t}return t-r},"/":function e(t,r){return t/r},"%":function e(t,r){return t%r},"|":function e(t,r){return t|r},"&":function e(t,r){return t&r},"~":function e(t){return~t},">>":function e(t,r){return t>>r},"<<":function e(t,r){return t<1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof io)||typeof this==="undefined"){return new io(e,t)}if(e instanceof io){return io({im:e.__im__,re:e.__re__})}if(C.isNumber(e)&&t){if(!t){return Number(e)}}else if(!C.isComplex(e)){var r="Invalid constructor call for LComplex expect &(:im :re ) object but got ".concat(Pu(e));throw new Error(r)}var n=e.im instanceof C?e.im:C(e.im);var i=e.re instanceof C?e.re:C(e.re);this.constant(n,i)}io.prototype=Object.create(C.prototype);io.prototype.constructor=io;io.prototype.constant=function(e,t){Object.defineProperty(this,"__im__",{value:e,enumerable:true});Object.defineProperty(this,"__re__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"complex",enumerable:true})};io.prototype.serialize=function(){return{re:this.__re__,im:this.__im__}};io.prototype.toRational=function(e){if(C.isFloat(this.__im__)&&C.isFloat(this.__re__)){var t=uo(this.__im__).toRational(e);var r=uo(this.__re__).toRational(e);return io({im:t,re:r})}return this};io.prototype.pow=function(e){throw new Error("Not yet implemented")};io.prototype.add=function(e){return this.complex_op("add",e,function(e,t,r,n){return{re:e.add(t),im:r.add(n)}})};io.prototype.factor=function(){if(this.__im__ instanceof uo||this.__im__ instanceof uo){var e=this.__re__,t=this.__im__;var r,n;if(e instanceof uo){r=e.toRational().mul(e.toRational())}else{r=e.mul(e)}if(t instanceof uo){n=t.toRational().mul(t.toRational())}else{n=t.mul(t)}return r.add(n)}else{return this.__re__.mul(this.__re__).add(this.__im__.mul(this.__im__))}};io.prototype.modulus=function(){return this.factor().sqrt()};io.prototype.conjugate=function(){return io({re:this.__re__,im:this.__im__.sub()})};io.prototype.sqrt=function(){var e=this.modulus();var t,r;if(e.cmp(0)===0){t=r=e}else if(this.__re__.cmp(0)===1){t=uo(.5).mul(e.add(this.__re__)).sqrt();r=this.__im__.div(t).div(2)}else{r=uo(.5).mul(e.sub(this.__re__)).sqrt();if(this.__im__.cmp(0)===-1){r=r.sub()}t=this.__im__.div(r).div(2)}return io({im:r,re:t})};io.prototype.div=function(e){if(C.isNumber(e)&&!C.isComplex(e)){if(!(e instanceof C)){e=C(e)}var t=this.__re__.div(e);var r=this.__im__.div(e);return io({re:t,im:r})}else if(!C.isComplex(e)){throw new Error("[LComplex::div] Invalid value")}if(this.cmp(e)===0){var n=this.coerce(e),i=j(n,2),f=i[0],u=i[1];var l=f.__im__.div(u.__im__);return l.coerce(u.__re__)[0]}var h=this.coerce(e),a=j(h,2),p=a[0],o=a[1];var s=o.factor();var _=o.conjugate();var c=p.mul(_);if(!C.isComplex(c)){return c.div(s)}var d=c.__re__.op("/",s);var v=c.__im__.op("/",s);return io({re:d,im:v})};io.prototype.sub=function(e){return this.complex_op("sub",e,function(e,t,r,n){return{re:e.sub(t),im:r.sub(n)}})};io.prototype.mul=function(e){return this.complex_op("mul",e,function(e,t,r,n){var i={re:e.mul(t).sub(r.mul(n)),im:e.mul(n).add(t.mul(r))};return i})};io.prototype.complex_op=function(e,t,i){var u=this;var r=function e(t,r){var n=i(u.__re__,t,u.__im__,r);if("im"in n&&"re"in n){if(n.im.cmp(0)===0){return n.re}return io(n,true)}return n};if(typeof t==="undefined"){return r()}if(C.isNumber(t)&&!C.isComplex(t)){if(!(t instanceof C)){t=C(t)}var n=t.asType(0);t={__im__:n,__re__:t}}else if(!C.isComplex(t)){throw new Error("[LComplex::".concat(e,"] Invalid value"))}var a=t.__re__ instanceof C?t.__re__:this.__re__.asType(t.__re__);var o=t.__im__ instanceof C?t.__im__:this.__im__.asType(t.__im__);return r(a,o)};io._op={"+":"add","-":"sub","*":"mul","/":"div"};io.prototype._op=function(e,t){var r=io._op[e];return this[r](t)};io.prototype.cmp=function(e){var t=this.coerce(e),r=j(t,2),n=r[0],i=r[1];var u=n.__re__.coerce(i.__re__),a=j(u,2),o=a[0],f=a[1];var s=o.cmp(f);if(s!==0){return s}else{var l=n.__im__.coerce(i.__im__),c=j(l,2),h=c[0],p=c[1];return h.cmp(p)}};io.prototype.valueOf=function(){return[this.__re__,this.__im__].map(function(e){return e.valueOf()})};io.prototype.toString=function(){var e;if(this.__re__.cmp(0)!==0){e=[Pu(this.__re__)]}else{e=[]}var t=this.__im__.valueOf();var r=[Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY].includes(t);var n=Pu(this.__im__);if(!r&&!Number.isNaN(t)){var i=this.__im__.cmp(0);if(i<0||i===0&&this.__im__._minus){e.push("-")}else{e.push("+")}n=n.replace(/^-/,"")}e.push(n);e.push("i");return e.join("")};function uo(e){if(typeof this!=="undefined"&&!(this instanceof uo)||typeof this==="undefined"){return new uo(e)}if(!C.isNumber(e)){throw new Error("Invalid constructor call for LFloat")}if(e instanceof C){return uo(e.valueOf())}if(typeof e==="number"){if(Object.is(e,-0)){Object.defineProperty(this,"_minus",{value:true})}this.constant(e,"float")}}uo.prototype=Object.create(C.prototype);uo.prototype.constructor=uo;uo.prototype.toString=function(){if(this.__value__===Number.NEGATIVE_INFINITY){return"-inf.0"}if(this.__value__===Number.POSITIVE_INFINITY){return"+inf.0"}if(Number.isNaN(this.__value__)){return"+nan.0"}var e=this.__value__.toString();if(!C.isFloat(this.__value__)&&!e.match(/e/i)){var t=e+".0";return this._minus?"-"+t:t}return e.replace(/^([0-9]+)e/,"$1.0e")};uo.prototype._op=function(e,t){if(t instanceof C){t=t.__value__}var r=C._ops[e];if(e==="/"&&this.__value__===0&&t===0){return NaN}return uo(r(this.__value__,t))};uo.prototype.toRational=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){return ao(this.__value__.valueOf())}return oo(e.valueOf())(this.__value__.valueOf())};uo.prototype.sqrt=function(){var e=this.valueOf();if(this.cmp(0)<0){var t=uo(Math.sqrt(-e));return io({re:0,im:t})}return uo(Math.sqrt(e))};uo.prototype.abs=function(){var e=this.valueOf();if(e<0){e=-e}return uo(e)};var ao=oo(1e-10);function oo(n){return function(e){var t=function e(n,t,r){var i=function e(t,r){return r0){i=co(n,r)}else if(n.cmp(r)<=0){i=r}else if(r.cmp(0)>0){i=co(r,n)}else if(t.cmp(0)<0){i=C(co(n.sub(),r.sub())).sub()}else{i=C(0)}if(C.isFloat(t)||C.isFloat(e)){return uo(i)}return i}function co(e,t){var r=C(e).floor();var n=C(t).floor();if(e.cmp(r)<1){return r}else if(r.cmp(n)===0){var i=C(1).div(t.sub(n));var u=C(1).div(e.sub(r));return r.add(C(1).div(co(i,u)))}else{return r.add(C(1))}}function fo(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(typeof this!=="undefined"&&!(this instanceof fo)||typeof this==="undefined"){return new fo(e,t)}if(!C.isRational(e)){throw new Error("Invalid constructor call for LRational")}var r,n;if(e instanceof fo){r=C(e.__num__);n=C(e.__denom__)}else{r=C(e.num);n=C(e.denom)}if(!t&&n.cmp(0)!==0){var i=r.op("%",n).cmp(0)===0;if(i){return C(r.div(n))}}this.constant(r,n)}fo.prototype=Object.create(C.prototype);fo.prototype.constructor=fo;fo.prototype.constant=function(e,t){Object.defineProperty(this,"__num__",{value:e,enumerable:true});Object.defineProperty(this,"__denom__",{value:t,enumerable:true});Object.defineProperty(this,"__type__",{value:"rational",enumerable:true})};fo.prototype.serialize=function(){return{num:this.__num__,denom:this.__denom__}};fo.prototype.pow=function(e){var t=e.cmp(0);if(t===0){return C(1)}if(t===-1){e=e.sub();var r=this.__denom__.pow(e);var n=this.__num__.pow(e);return fo({num:r,denom:n})}var i=this;e=e.valueOf();while(e>1){i=i.mul(this);e--}return i};fo.prototype.sqrt=function(){var e=this.__num__.sqrt();var t=this.__denom__.sqrt();if(e instanceof uo||t instanceof uo){return e.div(t)}return fo({num:e,denom:t})};fo.prototype.abs=function(){var e=this.__num__;var t=this.__denom__;if(e.cmp(0)===-1){e=e.sub()}if(t.cmp(0)!==1){t=t.sub()}return fo({num:e,denom:t})};fo.prototype.cmp=function(e){return C(this.valueOf(),true).cmp(e)};fo.prototype.toString=function(){var e=this.__num__.gcd(this.__denom__);var t,r;if(e.cmp(1)!==0){t=this.__num__.div(e);if(t instanceof fo){t=C(t.valueOf(true))}r=this.__denom__.div(e);if(r instanceof fo){r=C(r.valueOf(true))}}else{t=this.__num__;r=this.__denom__}var n=this.cmp(0)<0;if(n){if(t.abs().cmp(r.abs())===0){return t.toString()}}else if(t.cmp(r)===0){return t.toString()}return t.toString()+"/"+r.toString()};fo.prototype.valueOf=function(e){if(this.__denom__.cmp(0)===0){if(this.__num__.cmp(0)<0){return Number.NEGATIVE_INFINITY}return Number.POSITIVE_INFINITY}if(e){return C._ops["/"](this.__num__.value,this.__denom__.value)}return uo(this.__num__.valueOf()).div(this.__denom__.valueOf())};fo.prototype.mul=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__num__);var r=this.__denom__.mul(e.__denom__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.mul(a)};fo.prototype.div=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__num__.mul(e.__denom__);var r=this.__denom__.mul(e.__num__);return fo({num:t,denom:r})}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];var o=u.div(a);return o};fo.prototype._op=function(e,t){return this[to[e]](t)};fo.prototype.sub=function(e){if(typeof e==="undefined"){return this.mul(-1)}if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=e.__num__.sub();var r=e.__denom__;return this.add(fo({num:t,denom:r}))}if(!(e instanceof C)){e=C(e).sub()}else{e=e.sub()}var n=C.coerce(this,e),i=j(n,2),u=i[0],a=i[1];return u.add(a)};fo.prototype.add=function(e){if(!(e instanceof C)){e=C(e)}if(C.isRational(e)){var t=this.__denom__;var r=e.__denom__;var n=this.__num__;var i=e.__num__;var u,a;if(t!==r){a=r.mul(n).add(i.mul(t));u=t.mul(r)}else{a=n.add(i);u=t}return fo({num:a,denom:u})}if(C.isFloat(e)){return uo(this.valueOf()).add(e)}var o=C.coerce(this,e),s=j(o,2),c=s[0],f=s[1];return c.add(f)};function lo(e,t){if(typeof this!=="undefined"&&!(this instanceof lo)||typeof this==="undefined"){return new lo(e,t)}if(e instanceof lo){return lo(e.__value__,e._native)}if(!C.isBigInteger(e)){throw new Error("Invalid constructor call for LBigInteger")}this.constant(e,"bigint");Object.defineProperty(this,"_native",{value:t})}lo.prototype=Object.create(C.prototype);lo.prototype.constructor=lo;lo.bn_op={"+":"iadd","-":"isub","*":"imul","/":"idiv","%":"imod","|":"ior","&":"iand","~":"inot","<<":"ishrn",">>":"ishln"};lo.prototype.serialize=function(){return this.__value__.toString()};lo.prototype._op=function(e,t){if(typeof t==="undefined"){if(C.isBN(this.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](),false)}return lo(C._ops[e](this.__value__),true)}if(C.isBN(this.__value__)&&C.isBN(t.__value__)){e=lo.bn_op[e];return lo(this.__value__.clone()[e](t),false)}var r=C._ops[e](this.__value__,t.__value__);if(e==="/"){var n=this.op("%",t).cmp(0)===0;if(n){return C(r)}return fo({num:this,denom:t})}return lo(r,true)};lo.prototype.sqrt=function(){var e;var t=this.cmp(0)<0;if(C.isNative(this.__value__)){e=C(Math.sqrt(t?-this.valueOf():this.valueOf()))}else if(C.isBN(this.__value__)){e=t?this.__value__.neg().sqrt():this.__value__.sqrt()}if(t){return io({re:0,im:e})}return e};C.NaN=C(NaN);function ho(e){var n=this;if(typeof this!=="undefined"&&!(this instanceof ho)||typeof this==="undefined"){return new ho(e)}h("InputPort",e,"function");$i(this,"__type__",xo);var i;Object.defineProperty(this,"__parser__",{enumerable:true,get:function e(){return i},set:function e(t){h("InputPort::__parser__",t,"parser");i=t}});this._read=e;this._with_parser=this._with_init_parser.bind(this,B(z.mark(function e(){var r;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(n.char_ready()){t.next=5;break}t.next=3;return n._read();case 3:r=t.sent;i=new Li(r,{env:n});case 5:return t.abrupt("return",n.__parser__);case 6:case"end":return t.stop()}}},e)})));this.char_ready=function(){return!!this.__parser__&&this.__parser__.__lexer__.peek()!==Fo};this._make_defaults()}ho.prototype._make_defaults=function(){this.read=this._with_parser(function(e){return e.read_object()});this.read_line=this._with_parser(function(e){return e.__lexer__.read_line()});this.read_char=this._with_parser(function(e){return e.__lexer__.read_char()});this.read_string=this._with_parser(function(e,t){if(!C.isInteger(t)){var r=C.getType(t);Qo("read-string",r,"integer")}return e.__lexer__.read_string(t.valueOf())});this.peek_char=this._with_parser(function(e){return e.__lexer__.peek_char()})};ho.prototype._with_init_parser=function(o,s){var c=this;return B(z.mark(function e(){var r,n,i,u,a=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:t.next=2;return o.call(c);case 2:r=t.sent;for(n=a.length,i=new Array(n),u=0;u"};function po(e){if(typeof this!=="undefined"&&!(this instanceof po)||typeof this==="undefined"){return new po(e)}h("OutputPort",e,"function");$i(this,"__type__",xo);this.write=e}po.prototype.is_open=function(){return this._closed!==true};po.prototype.close=function(){Object.defineProperty(this,"_closed",{get:function e(){return true},set:function e(){},configurable:false,enumerable:false});this.write=function(){throw new Error("output-port: port is closed")}};po.prototype.flush=function(){};po.prototype.toString=function(){return"#"};var _o=function(e){u(n,e);var r=fn(n);function n(e){var t;D(this,n);t=r.call(this,function(){var e;return(e=t)._write.apply(e,arguments)});h("BufferedOutputPort",e,"function");$i(i(t),"_fn",e,{hidden:true});$i(i(t),"_buffer",[],{hidden:true});return t}A(n,[{key:"flush",value:function e(){if(this._buffer.length){this._fn(this._buffer.join(""));this._buffer.length=0}}},{key:"_write",value:function e(){var t=this;for(var r=arguments.length,n=new Array(r),i=0;i"};vo.prototype.valueOf=function(){return this.__buffer__.map(function(e){return e.valueOf()}).join("")};function yo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof yo)||typeof this==="undefined"){return new yo(e,t)}h("OutputFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",xo);this.write=function(e){if(!$a.isString(e)){e=Pu(e)}else{e=e.valueOf()}r.fs().write(r._fd,e,function(e){if(e){throw e}})}}yo.prototype=Object.create(po.prototype);yo.prototype.constructor=yo;yo.prototype.fs=function(){if(!this._fs){this._fs=this.internal("fs")}return this._fs};yo.prototype.internal=function(e){return Yo.get("**internal-env**").get(e)};yo.prototype.close=function(){var n=this;return new Promise(function(t,r){n.fs().close(n._fd,function(e){if(e){r(e)}else{$i(n,"_fd",null,{hidden:true});po.prototype.close.call(n);t()}})})};yo.prototype.toString=function(){return"#")};function mo(e,t){var r=this;if(typeof this!=="undefined"&&!(this instanceof mo)||typeof this==="undefined"){return new mo(e)}h("InputStringPort",e,"string");t=t||qo;e=e.valueOf();this._with_parser=this._with_init_parser.bind(this,function(){if(!r.__parser__){r.__parser__=new Li(e,{env:t})}return r.__parser__});$i(this,"__type__",xo);this._make_defaults()}mo.prototype.char_ready=function(){return true};mo.prototype=Object.create(ho.prototype);mo.prototype.constructor=mo;mo.prototype.toString=function(){return"#"};function go(e){if(typeof this!=="undefined"&&!(this instanceof go)||typeof this==="undefined"){return new go(e)}h("InputByteVectorPort",e,"uint8array");$i(this,"__vector__",e);$i(this,"__type__",Ao);var r=0;Object.defineProperty(this,"__index__",{enumerable:true,get:function e(){return r},set:function e(t){h("InputByteVectorPort::__index__",t,"number");if(t instanceof C){t=t.valueOf()}if(typeof t==="bigint"){t=Number(t)}if(Math.floor(t)!==t){throw new Error("InputByteVectorPort::__index__ value is "+"not integer")}r=t}})}go.prototype=Object.create(ho.prototype);go.prototype.constructor=go;go.prototype.toString=function(){return"#"};go.prototype.close=function(){var t=this;$i(this,"__vector__",U);["read_u8","close","peek_u8","read_u8_vector"].forEach(function(e){t[e]=function(){throw new Error("Input-binary-port: port is closed")}});this.char_ready=function(){return false}};go.prototype.u8_ready=function(){return true};go.prototype.peek_u8=function(){if(this.__index__>=this.__vector__.length){return Fo}return this.__vector__[this.__index__]};go.prototype.skip=function(){if(this.__index__<=this.__vector__.length){++this.__index__}};go.prototype.read_u8=function(){var e=this.peek_u8();this.skip();return e};go.prototype.read_u8_vector=function(e){if(typeof e==="undefined"){e=this.__vector__.length}else if(e>this.__index__+this.__vector__.length){e=this.__index__+this.__vector__.length}if(this.peek_u8()===Fo){return Fo}return this.__vector__.slice(this.__index__,e)};function bo(){if(typeof this!=="undefined"&&!(this instanceof bo)||typeof this==="undefined"){return new bo}$i(this,"__type__",Ao);$i(this,"_buffer",[],{hidden:true});this.write=function(e){h("write",e,["number","uint8array"]);if(C.isNumber(e)){this._buffer.push(e.valueOf())}else{var t;(t=this._buffer).push.apply(t,q(Array.from(e)))}};Object.defineProperty(this,"__buffer__",{enumerable:true,get:function e(){return Uint8Array.from(this._buffer)}})}bo.prototype=Object.create(po.prototype);bo.prototype.constructor=bo;bo.prototype.close=function(){po.prototype.close.call(this);$i(this,"_buffer",null,{hidden:true})};bo.prototype._close_guard=function(){if(this._closed){throw new Error("output-port: binary port is closed")}};bo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};bo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};bo.prototype.toString=function(){return"#"};bo.prototype.valueOf=function(){return this.__buffer__};function wo(e,t){if(typeof this!=="undefined"&&!(this instanceof wo)||typeof this==="undefined"){return new wo(e,t)}mo.call(this,e);h("InputFilePort",t,"string");$i(this,"__filename__",t)}wo.prototype=Object.create(mo.prototype);wo.prototype.constructor=wo;wo.prototype.toString=function(){return"#")};function Do(e,t){if(typeof this!=="undefined"&&!(this instanceof Do)||typeof this==="undefined"){return new Do(e,t)}go.call(this,e);h("InputBinaryFilePort",t,"string");$i(this,"__filename__",t)}Do.prototype=Object.create(go.prototype);Do.prototype.constructor=Do;Do.prototype.toString=function(){return"#")};function Eo(e,t){if(typeof this!=="undefined"&&!(this instanceof Eo)||typeof this==="undefined"){return new Eo(e,t)}h("OutputBinaryFilePort",e,"string");$i(this,"__filename__",e);$i(this,"_fd",t.valueOf(),{hidden:true});$i(this,"__type__",Ao);var u,r;this.write=function(e){var n=this;h("write",e,["number","uint8array"]);var i;if(!u){u=this.internal("fs")}if(!r){r=this.internal("Buffer")}if(C.isNumber(e)){i=r.from([e.valueOf()])}else{i=r.from(Array.from(e))}return new Promise(function(t,r){u.write(n._fd,i,function(e){if(e){r(e)}else{t()}})})}}Eo.prototype=Object.create(yo.prototype);Eo.prototype.constructor=Eo;Eo.prototype.write_u8=function(e){h("OutputByteVectorPort::write_u8",e,"number");this.write(e)};Eo.prototype.write_u8_vector=function(e){h("OutputByteVectorPort::write_u8_vector",e,"uint8array");this.write(e)};var Ao=Symbol["for"]("binary");var xo=Symbol["for"]("text");var Fo=new ko;function ko(){}ko.prototype.toString=function(){return"#"};function Co(e){var c=this;var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=t.stderr,n=t.stdin,i=t.stdout,u=t.command_line,a=u===void 0?null:u,o=F(t,cn);if(typeof this!=="undefined"&&!(this instanceof Co)||typeof this==="undefined"){return new Co(e,vn({stdin:n,stdout:i,stderr:r,command_line:a},o))}if(typeof e==="undefined"){e="anonymous"}this.__env__=Yo.inherit(e,o);this.__env__.set("parent.frame",y("parent.frame",function(){return c.__env__},qo.__env__["parent.frame"].__doc__));var f="**interaction-environment-defaults**";this.set(f,Ou(o).concat(f));var s=Lo.inherit("internal-".concat(e));if(pa(n)){s.set("stdin",n)}if(pa(r)){s.set("stderr",r)}if(pa(i)){s.set("stdout",i)}s.set("command-line",a);Vo(this.__env__,s)}Co.prototype.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Interpreter::exec",e,["string","array"],1);h("Interpreter::exec",t,"boolean",2);qo.set("**interaction-environment**",this.__env__);if(r===null){r=this.__env__}return vs(e,r,t?r:false)};Co.prototype.get=function(e){var t=this.__env__.get(e);if(Xu(t)){return t.bind(this.__env__)}return t};Co.prototype.set=function(e,t){return this.__env__.set(e,t)};Co.prototype.constant=function(e,t){return this.__env__.constant(e,t)};function Oo(e,t){this.name="LipsError";this.message=e;this.args=t;this.stack=(new Error).stack}Oo.prototype=new Error;Oo.prototype.constructor=Oo;function So(e,t,r){if(arguments.length===1){if(_(arguments[0])==="object"){e=arguments[0];t=null}else if(typeof arguments[0]==="string"){e={};t=null;r=arguments[0]}}this.__docs__=new Map;this.__env__=e;this.__parent__=t;this.__name__=r||"anonymous"}So.prototype.list=function(){return Ou(this.__env__)};So.prototype.fs=function(){return this.get("**fs**")};So.prototype.unset=function(e){if(e instanceof L){e=e.valueOf()}if(e instanceof $a){e=e.valueOf()}delete this.__env__[e]};So.prototype.inherit=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(_(e)==="object"){t=e}if(!e||_(e)==="object"){e="child of "+(this.__name__||"unknown")}return new So(t||{},this,e)};So.prototype.doc=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(t){if(!r){t=Hi(t)}this.__docs__.set(e,t);return this}if(this.__docs__.has(e)){return this.__docs__.get(e)}if(this.__parent__){return this.__parent__.doc(e)}};So.prototype.newFrame=function(e,t){var n=this.inherit("__frame__");n.set("parent.frame",y("parent.frame",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;e=e.valueOf();var t=n.__parent__;if(!(t instanceof So)){return U}if(e<=0){return t}var r=t.get("parent.frame");return r(e-1)},qo.__env__["parent.frame"].__doc__));t.callee=e;n.set("arguments",t);return n};So.prototype._lookup=function(e){if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}if(this.__env__.hasOwnProperty(e)){return Bo(this.__env__[e])}if(this.__parent__){return this.__parent__._lookup(e)}};So.prototype.toString=function(){return"#"};So.prototype.clone=function(){var t=this;var r={};Object.keys(this.__env__).forEach(function(e){r[e]=t.__env__[e]});return new So(r,this.__parent__,this.__name__)};So.prototype.merge=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"merge";h("Environment::merge",e,"environment");return this.inherit(t,e.__env__)};function Bo(e){if(typeof this!=="undefined"&&!(this instanceof Bo)||typeof this==="undefined"){return new Bo(e)}this.value=e}Bo.isUndefined=function(e){return e instanceof Bo&&typeof e.value==="undefined"};Bo.prototype.valueOf=function(){return this.value};function jo(e){if(e.length){if(e.length===1){return e[0]}}if(typeof this!=="undefined"&&!(this instanceof jo)||typeof this==="undefined"){return new jo(e)}this.__values__=e}jo.prototype.toString=function(){return this.__values__.map(function(e){return Pu(e)}).join("\n")};jo.prototype.valueOf=function(){return this.__values__};So.prototype.get=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};h("Environment::get",e,["symbol","string"]);var r=t.throwError,c=r===void 0?true:r;var n=e;if(n instanceof L||n instanceof $a){n=n.valueOf()}var i=this._lookup(n);if(i instanceof Bo){if(Bo.isUndefined(i)){return undefined}return oa(i.valueOf())}var u;if(e instanceof L&&e[L.object]){u=e[L.object]}else if(typeof n==="string"){u=n.split(".").filter(Boolean)}if(u&&u.length>0){var f=u,a=m(f),o=a[0],s=a.slice(1);i=this._lookup(o);if(s.length){try{if(i instanceof Bo){i=i.valueOf()}else{i=No(gn,o);if(Xu(i)){i=sa(i)}}if(typeof i!=="undefined"){return No.apply(void 0,[i].concat(q(s)))}}catch(e){throw e}}else if(i instanceof Bo){return oa(i.valueOf())}i=No(gn,n)}if(typeof i!=="undefined"){return i}if(c){throw new Error("Unbound variable `"+n.toString()+"'")}};So.prototype.set=function(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;h("Environment::set",e,["string","symbol"]);if(C.isNumber(t)){t=C(t)}if(e instanceof L){e=e.__name__}if(e instanceof $a){e=e.valueOf()}this.__env__[e]=t;if(r){this.doc(e,r,true)}return this};So.prototype.constant=function(t,e){var r=this;if(this.__env__.hasOwnProperty(t)){throw new Error("Environment::constant: ".concat(t," already exists"))}if(arguments.length===1&&wu(arguments[0])){var n=arguments[0];Object.keys(n).forEach(function(e){r.constant(t,n[e])})}else{Object.defineProperty(this.__env__,t,{value:e,enumerable:true})}return this};So.prototype.has=function(e){return this.__env__.hasOwnProperty(e)};So.prototype.ref=function(e){var t=this;while(true){if(!t){break}if(t.has(e)){return t}t=t.__parent__}};So.prototype.parents=function(){var e=this;var t=[];while(e){t.unshift(e);e=e.__parent__}return t};function Io(e){if(ra(e)){return e.then(Io)}if(e instanceof M||e instanceof L){e[ya]=true}return e}var Po=Mi(wi('(lambda ()\n "[native code]"\n (throw "Invalid Invocation"))'))[0];var No=y("get",function c(e){var t;for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("peek-char",e,"input-port");return e.peek_char()},"(peek-char port)\n\n This function reads and returns a character from the string\n port, or, if there is no more data in the string port, it\n returns an EOF."),"read-line":y("read-line",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-line",e,"input-port");return e.read_line()},"(read-char port)\n\n This function reads and returns the next line from the input\n port."),"read-char":y("read-char",function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;if(e===null){e=Ro(this,"stdin")}Xo("read-char",e,"input-port");return e.read_char()},"(read-char port)\n\n This function reads and returns the next character from the\n input port."),read:y("read",function(){var e=B(z.mark(function e(){var r,n,i,u,a,o,s,c,f=arguments;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:r=f.length>0&&f[0]!==undefined?f[0]:null;if(!$a.isString(r)){t.next=30;break}n=false;i=false;t.prev=4;a=yn(Mi(r,this));case 6:t.next=8;return a.next();case 8:if(!(n=!(o=t.sent).done)){t.next=14;break}s=o.value;return t.abrupt("return",s);case 11:n=false;t.next=6;break;case 14:t.next=20;break;case 16:t.prev=16;t.t0=t["catch"](4);i=true;u=t.t0;case 20:t.prev=20;t.prev=21;if(!(n&&a["return"]!=null)){t.next=25;break}t.next=25;return a["return"]();case 25:t.prev=25;if(!i){t.next=28;break}throw u;case 28:return t.finish(25);case 29:return t.finish(20);case 30:if(r===null){c=Ro(this,"stdin")}else{c=r}Xo("read",c,"input-port");return t.abrupt("return",c.read.call(this));case 33:case"end":return t.stop()}}},e,this,[[4,16,20,30],[21,,25,29]])}));function t(){return e.apply(this,arguments)}return t}(),"(read [string])\n\n This function, if used with a string, will parse it and\n return the LIPS code, if there is any. If called with a\n port, it will parse the next item from the port. If called\n without an input, it will read a string from standard input\n (using the browser's prompt or a user defined input method)\n and calls itself with that string. This function can be used\n together with `eval` to evaluate code from a string."),pprint:y("pprint",function e(t){if(t instanceof M){t=new Gs.Formatter(t.toString(true))["break"]().format();qo.get("display").call(qo,t)}else{qo.get("write").call(qo,t)}qo.get("newline").call(qo)},"(pprint expression)\n\n This function will pretty print its input to stdout. If it is called\n with a non-list, it will just call the print function on its\n input."),print:y("print",function e(){var t=qo.get("display");var r=qo.get("newline");for(var n=arguments.length,i=new Array(n),u=0;u1?r-1:0),i=1;in.length){throw new Error("Not enough arguments")}var o=0;var s=qo.get("repr");t=t.replace(u,function(e){var t=e[1];if(t==="~"){return"~"}else if(t==="%"){return"\n"}else{var r=n[o++];if(t==="a"){return s(r)}else{return s(r,true)}}});a=t.match(/~([\S])/);if(a){throw new Error("format: Unrecognized escape sequence ".concat(a[1]))}return t},"(format string n1 n2 ...)\n\n This function accepts a string template and replaces any\n escape sequences in its inputs:\n\n * ~a value as if printed with `display`\n * ~s value as if printed with `write`\n * ~% newline character\n * ~~ literal tilde '~'\n\n If there are missing inputs or other escape characters it\n will error."),display:y("display",function e(t){var r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;if(r===null){r=Ro(this,"stdout")}else{h("display",r,"output-port")}var n=qo.get("repr")(t);r.write.call(qo,n)},"(display string [port])\n\n This function outputs the string to the standard output or\n the port if given. No newline."),"display-error":y("display-error",function e(){var t=Ro(this,"stderr");var r=qo.get("repr");for(var n=arguments.length,i=new Array(n),u=0;u1&&arguments[1]!==undefined?arguments[1]:{},r=t.dynamic_scope,n=t.error;if(r){r=this}var i=this;var u;var a=_s(e.cdr.car,{env:this,dynamic_scope:r,error:n});a=as(a);function o(t,r,n){if(ra(t)){return t.then(function(e){return o(t,e,n)})}if(ra(r)){return r.then(function(e){return o(t,e,n)})}if(ra(n)){return n.then(function(e){return o(t,r,e)})}i.get("set-obj!").call(i,t,r,n);return n}if(e.car instanceof M&&L.is(e.car.car,".")){var f=e.car.cdr.car;var l=e.car.cdr.cdr.car;var h=_s(f,{env:this,dynamic_scope:r,error:n});var p=_s(l,{env:this,dynamic_scope:r,error:n});return o(h,p,a)}if(!(e.car instanceof L)){throw new Error("set! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var s=e.car.valueOf();u=this.ref(e.car.__name__);return Yi(a,function(e){if(!u){var t=s.split(".");if(t.length>1){var r=t.pop();var n=t.join(".");var i=c.get(n,{throwError:false});if(i){o(i,r,e);return}}throw new Error("Unbound variable `"+s+"'")}u.set(s,e)})}),"(set! name value)\n\n Macro that can be used to set the value of the variable or slot (mutate it).\n set! searches the scope chain until it finds first non empty slot and sets it."),"unset!":y(new Vu("set!",function(e){if(!(e.car instanceof L)){throw new Error("unset! first argument need to be a symbol or "+"dot accessor that evaluate to object.")}var t=e.car;var r=this.ref(t);if(r){delete r.__env__[t.__name__]}}),"(unset! name)\n\n Function to delete the specified name from environment.\n Trying to access the name afterwards will error."),"set-car!":y("set-car!",function(e,t){h("set-car!",e,"pair");e.car=t},"(set-car! obj value)\n\n Function that sets the car (first item) of the list/pair to specified value.\n The old value is lost."),"set-cdr!":y("set-cdr!",function(e,t){h("set-cdr!",e,"pair");e.cdr=t},"(set-cdr! obj value)\n\n Function that sets the cdr (tail) of the list/pair to specified value.\n It will destroy the list. The old tail is lost."),"empty?":y("empty?",function(e){return typeof e==="undefined"||e===U},"(empty? object)\n\n Function that returns #t if value is nil (an empty list) or undefined."),gensym:y("gensym",Fi,"(gensym)\n\n Generates a unique symbol that is not bound anywhere,\n to use with macros as meta name."),load:y("load",function e(o,t){h("load",o,"string");var s=this;if(s.__name__==="__frame__"){s=s.__parent__}if(!(t instanceof So)){if(s===qo){t=s}else{t=this.get("**interaction-environment**")}}var c="**module-path**";var f=qo.get(c,{throwError:false});o=o.valueOf();if(!o.match(/.[^.]+$/)){o+=".scm"}var r=o.match(/\.xcb$/);function l(e){if(r){e=Vs(e)}else{if(us(e)==="buffer"){e=e.toString()}e=e.replace(/^#!.*/,"");if(e.match(/^\{/)){e=Rs(e)}}return vs(e,t)}function n(e){return gn.fetch(e).then(function(e){return r?e.arrayBuffer():e.text()}).then(function(e){if(r){e=new Uint8Array(e)}return e})}if(Go()){return new Promise(function(){var r=B(z.mark(function e(r,n){var i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:i=An("path");if(!f){t.next=6;break}f=f.valueOf();o=i.join(f,o);t.next=12;break;case 6:u=s.get("command-line",{throwError:false});if(!u){t.next=11;break}t.next=10;return u();case 10:a=t.sent;case 11:if(a&&a!==U){process.cwd();o=i.join(i.dirname(a.car.valueOf()),o)}case 12:qo.set(c,i.dirname(o));An("fs").readFile(o,function(e,t){if(e){n(e);qo.set(c,f)}else{try{l(t).then(function(){r();qo.set(c,f)})["catch"](n)}catch(e){n(e)}}});case 14:case"end":return t.stop()}}},e)}));return function(e,t){return r.apply(this,arguments)}}())}if(f){f=f.valueOf();o=f+"/"+o.replace(/^\.?\/?/,"")}return n(o).then(function(e){qo.set(c,o.replace(/\/[^/]*$/,""));return l(e)}).then(function(){})["finally"](function(){qo.set(c,f)})},"(load filename)\n (load filename environment)\n\n Fetches the file (from disk or network) and evaluates its content as LIPS code.\n If the second argument is provided and it's an environment the evaluation\n will happen in that environment."),do:y(new Vu("do",function(){var r=B(z.mark(function e(r,h){var n,i,u,o,s,a,c,f,l,p,_;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:n=h.dynamic_scope,i=h.error;u=this;if(n){n=u}o=u.inherit("do");s=r.car;a=r.cdr.car;c=r.cdr.cdr;if(c!==U){c=new M(L("begin"),c)}f={env:u,dynamic_scope:n,error:i};l=s;case 10:if(!(l!==U)){t.next=21;break}p=l.car;t.t0=o;t.t1=p.car;t.next=16;return _s(p.cdr.car,f);case 16:t.t2=t.sent;t.t0.set.call(t.t0,t.t1,t.t2);l=l.cdr;t.next=10;break;case 21:f={env:o,dynamic_scope:n,error:i};_=z.mark(function e(){var r,n,i,u,a;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(!(c!==U)){t.next=3;break}t.next=3;return Gs.evaluate(c,f);case 3:r=s;n={};case 5:if(!(r!==U)){t.next=15;break}i=r.car;if(!(i.cdr.cdr!==U)){t.next=12;break}t.next=10;return _s(i.cdr.cdr.car,f);case 10:u=t.sent;n[i.car.valueOf()]=u;case 12:r=r.cdr;t.next=5;break;case 15:a=Object.getOwnPropertySymbols(n);Object.keys(n).concat(a).forEach(function(e){o.set(e,n[e])});case 17:case"end":return t.stop()}}},e)});case 23:t.next=25;return _s(a.car,f);case 25:t.t3=t.sent;if(!(t.t3===false)){t.next=30;break}return t.delegateYield(_(),"t4",28);case 28:t.next=23;break;case 30:if(!(a.cdr!==U)){t.next=34;break}t.next=33;return _s(a.cdr.car,f);case 33:return t.abrupt("return",t.sent);case 34:case"end":return t.stop()}}},e,this)}));return function(e,t){return r.apply(this,arguments)}}()),"(do (( )) (test return) . body)\n\n Iteration macro that evaluates the expression body in scope of the variables.\n On each loop it changes the variables according to the expression and runs\n test to check if the loop should continue. If test is a single value, the macro\n will return undefined. If the test is a pair of expressions the macro will\n evaluate and return the second expression after the loop exits."),if:y(new Vu("if",function(r,e){var n=e.dynamic_scope,i=e.error;if(n){n=this}var u=this;var t=function e(t){if(t===false){return _s(r.cdr.cdr.car,{env:u,dynamic_scope:n,error:i})}else{return _s(r.cdr.car,{env:u,dynamic_scope:n,error:i})}};if(r===U){throw new Error("too few expressions for `if`")}var a=_s(r.car,{env:u,dynamic_scope:n,error:i});return Yi(a,t)}),"(if cond true-expr false-expr)\n\n Macro that evaluates cond expression and if the value is true, it\n evaluates and returns true-expression, if not it evaluates and returns\n false-expression."),"let-env":new Vu("let-env",function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=e.dynamic_scope,n=e.error;h("let-env",t,"pair");var i=_s(t.car,{env:this,dynamic_scope:r,error:n});return Yi(i,function(e){h("let-env",e,"environment");return _s(M(L("begin"),t.cdr),{env:e,dynamic_scope:r,error:n})})},"(let-env env . body)\n\n Special macro that evaluates body in context of given environment\n object."),letrec:y(ja(Symbol["for"]("letrec")),"(letrec ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to\n names and then evaluates the body in context of that environment.\n Values are evaluated sequentially and the next value can access the\n previous values/names."),"letrec*":y(ja(Symbol["for"]("letrec")),"(letrec* ((a value-a) (b value-b) ...) . body)\n\n Same as letrec but the order of execution of the binding is guaranteed,\n so you can use recursive code as well as referencing the previous binding.\n\n In LIPS both letrec and letrec* behave the same."),"let*":y(ja(Symbol["for"]("let*")),"(let* ((a value-a) (b value-b) ...) . body)\n\n Macro similar to `let`, but the subsequent bindings after the first\n are evaluated in the environment including the previous let variables,\n so you can define one variable, and use it in the next's definition."),let:y(ja(Symbol["for"]("let")),"(let ((a value-a) (b value-b) ...) . body)\n\n Macro that creates a new environment, then evaluates and assigns values to names,\n and then evaluates the body in context of that environment. Values are evaluated\n sequentially but you can't access previous values/names when the next are\n evaluated. You can only get them in the body of the let expression. (If you want\n to define multiple variables and use them in each other's definitions, use\n `let*`.)"),"begin*":y(Ia("begin*",function(e){return e.pop()}),"(begin* . body)\n\n This macro is a parallel version of begin. It evaluates each expression\n in the body and if it's a promise it will await it in parallel and return\n the value of the last expression (i.e. it uses Promise.all())."),begin:y(new Vu("begin",function(e,t){var n=Object.assign({},t);var i=qo.get("list->array")(e);if(n.dynamic_scope){n.dynamic_scope=this}n.env=this;var u;return function t(){if(i.length){var e=i.shift();var r=_s(e,n);return Yi(r,function(e){u=e;return t()})}else{return u}}()}),"(begin . args)\n\n Macro that runs a list of expressions in order and returns the value\n of the last one. It can be used in places where you can only have a\n single expression, like (if)."),ignore:new Vu("ignore",function(e,t){var r=t.dynamic_scope,n=t.error;var i={env:this,error:n};if(r){i.dynamic_scope=this}_s(new M(new L("begin"),e),i)},"(ignore . body)\n\n Macro that will evaluate the expression and swallow any promises that may\n be created. It will discard any value that may be returned by the last body\n expression. The code should have side effects and/or when it's promise\n it should resolve to undefined."),"call/cc":y(Vu.defmacro("call/cc",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var r=vn({env:this},t);return Yi(_s(e.car,r),function(e){if(Xu(e)){return e(new hs(null))}})}),"(call/cc proc)\n\n Call-with-current-continuation.\n\n NOT SUPPORTED BY LIPS RIGHT NOW"),define:y(Vu.defmacro("define",function(r,e){var n=this;if(r.car instanceof M&&r.car.car instanceof L){var t=new M(new L("define"),new M(r.car.car,new M(new M(new L("lambda"),new M(r.car.cdr,r.cdr)))));return t}else if(e.macro_expand){return}if(e.dynamic_scope){e.dynamic_scope=this}e.env=n;var i=r.cdr.car;var u;if(i instanceof M){i=_s(i,e);u=true}else if(i instanceof L){i=n.get(i)}h("define",r.car,"symbol");return Yi(i,function(e){if(n.__name__===Ku.__merge_env__){n=n.__parent__}if(u&&(Xu(e)&&Ca(e)||e instanceof Ku)){e.__name__=r.car.valueOf();if(e.__name__ instanceof $a){e.__name__=e.__name__.valueOf()}}var t;if(r.cdr.cdr instanceof M&&$a.isString(r.cdr.cdr.car)){t=r.cdr.cdr.car.valueOf()}n.set(r.car,e,t,true)})}),'(define name expression)\n (define name expression "doc string")\n (define (function-name . args) . body)\n\n Macro for defining values. It can be used to define variables,\n or functions. If the first argument is list it will create a function\n with name being first element of the list. This form expands to\n `(define function-name (lambda args body))`'),"set-obj!":y("set-obj!",function(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var i=_(e);if(Zu(e)||i!=="object"&&i!=="function"){var u=Qo("set-obj!",us(e),["object","function"]);throw new Error(u)}h("set-obj!",t,["string","symbol","number"]);e=sa(e);t=t.valueOf();if(arguments.length===2){delete e[t]}else if(Nu(e)&&Xu(r)){e[t]=sa(r);e[t][Da]=true}else if(Xu(r)||ts(r)||r===U){e[t]=r}else{e[t]=r&&!Nu(r)?r.valueOf():r}if(Du){var a=e[t];Object.defineProperty(e,t,vn(vn({},n),{},{value:a}))}},"(set-obj! obj key value)\n (set-obj! obj key value props)\n\n Function set a property of a JavaScript object. props should be a vector of pairs,\n passed to Object.defineProperty."),"null-environment":y("null-environment",function(){return qo.inherit("null")},"(null-environment)\n\n Returns a clean environment with only the standard library."),values:y("values",function e(){for(var t=arguments.length,r=new Array(t),n=0;n1&&arguments[1]!==undefined?arguments[1]:{},h=e.dynamic_scope,p=e.error;var _=this;var d;if(l.cdr instanceof M&&$a.isString(l.cdr.car)&&l.cdr.cdr!==U){d=l.cdr.car.valueOf()}function v(){var e;if(h){if(!(this instanceof So)){e=_}else{e=this}}else{e=_}e=e.inherit("lambda");var t=l.car;var r=0;var n;if(typeof this!=="undefined"&&!(this instanceof So)){if(this&&!this.__instance__){Object.defineProperty(this,"__instance__",{enumerable:false,get:function e(){return true},set:function e(){},configurable:false})}e.set("this",this)}for(var i=arguments.length,u=new Array(i),a=0;a>> "+c.toString());if(c){o=c}var d=r.merge(t,Ku.__merge_env__);if(l){return{expr:o,scope:d}}var v=_s(o,vn(vn({},p),{},{env:d}));return Wu(v,_)}i=i.cdr}}catch(e){e.message+=" in macro: ".concat(y.toString(true));throw e}throw new Error("Invalid Syntax ".concat(e.toString(true)))},b);r.__code__=y;return r},"(syntax-rules () (pattern expression) ...)\n\n Base of hygienic macros, it will return a new syntax expander\n that works like Lisp macros."),quote:y(new Vu("quote",function(e){return Io(e.car)}),"(quote expression) or 'expression\n\n Macro that returns a single LIPS expression as data (it won't evaluate the\n argument). It will return a list if put in front of LIPS code.\n And if put in front of a symbol it will return the symbol itself, not the value\n bound to that name."),"unquote-splicing":y("unquote-splicing",function(){throw new Error("You can't call `unquote-splicing` outside of quasiquote")},"(unquote-splicing code) or ,@code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n splices the list into quasiquote's result. If it is not the last element of the\n expression, the computed value must be a pair."),unquote:y("unquote",function(){throw new Error("You can't call `unquote` outside of quasiquote")},"(unquote code) or ,code\n\n Special form used in the quasiquote macro. It evaluates the expression inside and\n substitutes the value into quasiquote's result."),quasiquote:Vu.defmacro("quasiquote",function(e,t){var o=t.dynamic_scope,s=t.error;var c=this;if(o){o=c}function a(e){return e instanceof M||wu(e)||Array.isArray(e)}function h(e,t){var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:a;if(e instanceof M){var n=e.car;var i=e.cdr;if(r(n)){n=t(n)}if(r(i)){i=t(i)}if(ra(n)||ra(i)){return Ci([n,i]).then(function(e){var t=j(e,2),r=t[0],n=t[1];return new M(r,n)})}else{return new M(n,i)}}return e}function u(e,t){if(e instanceof M){if(t!==U){e.append(t)}}else{e=new M(e,t)}return e}function r(e){return!!e.filter(function(e){return e instanceof M&&L.is(e.car,/^(unquote|unquote-splicing)$/)}).length}function p(e,n,i){return e.reduce(function(e,t){if(!(t instanceof M)){e.push(t);return e}if(L.is(t.car,"unquote-splicing")){var r;if(n+11){var t="You can't splice multiple atoms inside list";throw new Error(t)}if(!(i.cdr instanceof M&&r[0]===U)){return r[0]}}r=r.map(function(e){if(d.has(e)){return e.clone()}else{d.add(e);return e}});var n=l(i.cdr,0,1);if(n===U&&r[0]===U){return undefined}return Yi(n,function(e){if(r[0]===U){return e}if(r.length===1){return u(r[0],e)}var t=r.reduce(function(e,t){return u(e,t)});return u(t,e)})})}(i.car.cdr)}var d=new Set;function l(e,t,r){if(e instanceof M){if(e.car instanceof M){if(L.is(e.car.car,"unquote-splicing")){return f(e,t+1,r)}if(L.is(e.car.car,"unquote")){if(t+2===r&&e.car.cdr instanceof M&&e.car.cdr.car instanceof M&&L.is(e.car.cdr.car.car,"unquote-splicing")){var n=e.car.cdr;return new M(new M(new L("unquote"),f(n,t+2,r)),U)}else if(e.car.cdr instanceof M&&e.car.cdr.cdr!==U){if(e.car.cdr.car instanceof M){var i=[];return function t(r){if(r===U){return M.fromArray(i)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){i.push(e);return t(r.cdr)})}(e.car.cdr)}else{return e.car.cdr}}}}if(L.is(e.car,"quasiquote")){var u=l(e.cdr,t,r+1);return new M(e.car,u)}if(L.is(e.car,"quote")){return new M(e.car,l(e.cdr,t,r))}if(L.is(e.car,"unquote")){t++;if(tr){throw new Error("You can't call `unquote` outside "+"of quasiquote")}if(e.cdr instanceof M){if(e.cdr.cdr!==U){if(e.cdr.car instanceof M){var a=[];return function t(r){if(r===U){return M.fromArray(a)}return Yi(_s(r.car,{env:c,dynamic_scope:o,error:s}),function(e){a.push(e);return t(r.cdr)})}(e.cdr)}else{return e.cdr}}else{return _s(e.cdr.car,{env:c,dynamic_scope:o,error:s})}}else{return e.cdr}}return h(e,function(e){return l(e,t,r)})}else if(wu(e)){return _(e,t,r)}else if(e instanceof Array){return p(e,t,r)}return e}function n(e){if(e instanceof M){delete e[ya];if(!e.haveCycles("car")){n(e.car)}if(!e.haveCycles("cdr")){n(e.cdr)}}}if(wu(e.car)&&!r(Object.values(e.car))){return Io(e.car)}if(Array.isArray(e.car)&&!r(e.car)){return Io(e.car)}if(e.car instanceof M&&!e.car.find("unquote")&&!e.car.find("unquote-splicing")&&!e.car.find("quasiquote")){return Io(e.car)}var i=l(e.car,0,1);return Yi(i,function(e){n(e);return Io(e)})},"(quasiquote list)\n\n Similar macro to `quote` but inside it you can use special expressions (unquote\n x) abbreviated to ,x that will evaluate x and insert its value verbatim or\n (unquote-splicing x) abbreviated to ,@x that will evaluate x and splice the value\n into the result. Best used with macros but it can be used outside."),clone:y("clone",function e(t){h("clone",t,"pair");return t.clone()},"(clone list)\n\n Function that returns a clone of the list, that does not share any pairs with the\n original, so the clone can be safely mutated without affecting the original."),append:y("append",function e(){var t;for(var r=arguments.length,n=new Array(r),i=0;iarray")(t).reverse();return qo.get("array->list")(r)}else if(!(t instanceof Array)){throw new Error(Qo("reverse",us(t),"array or pair"))}else{return t.reverse()}},"(reverse list)\n\n Function that reverses the list or array. If value is not a list\n or array it will error."),nth:y("nth",function e(t,r){h("nth",t,"number");h("nth",r,["array","pair"]);if(r instanceof M){var n=r;var i=0;while(iarray")(r).join(t)},"(join separator list)\n\n Function that returns a string by joining elements of the list using separator."),split:y("split",function e(t,r){h("split",t,["regex","string"]);h("split",r,"string");return qo.get("array->list")(r.split(t))},"(split separator string)\n\n Function that creates a list by splitting string by separator which can\n be a string or regular expression."),replace:y("replace",function e(t,r,n){h("replace",t,["regex","string"]);h("replace",r,["string","function"]);h("replace",n,"string");return n.replace(t,r)},"(replace pattern replacement string)\n\n Function that changes pattern to replacement inside string. Pattern can be a\n string or regex and replacement can be function or string. See Javascript\n String.replace()."),match:y("match",function e(t,r){h("match",t,["regex","string"]);h("match",r,"string");var n=r.match(t);return n?qo.get("array->list")(n):false},"(match pattern string)\n\n Function that returns a match object from JavaScript as a list or #f if\n no match."),search:y("search",function e(t,r){h("search",t,["regex","string"]);h("search",r,"string");return r.search(t)},"(search pattern string)\n\n Function that returns the first found index of the pattern inside a string."),repr:y("repr",function e(t,r){return Pu(t,r)},"(repr obj)\n\n Function that returns a LIPS code representation of the object as a string."),"escape-regex":y("escape-regex",function(e){h("escape-regex",e,"string");return _i(e.valueOf())},"(escape-regex string)\n\n Function that returns a new string where all special operators used in regex,\n are escaped with backslashes so they can be used in the RegExp constructor\n to match a literal string."),env:y("env",function e(e){e=e||this;var t=Object.keys(e.__env__).map(L);var r;if(t.length){r=M.fromArray(t)}else{r=U}if(e.__parent__ instanceof So){return qo.get("env")(e.__parent__).append(r)}return r},"(env)\n (env obj)\n\n Function that returns a list of names (functions, macros and variables)\n that are bound in the current environment or one of its parents."),new:y("new",function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n2&&arguments[2]!==undefined?arguments[2]:Bi.LITERAL;h("set-special!",e,"string",1);h("set-special!",t,"symbol",2);Bi.append(e.valueOf(),t,r)},'(set-special! symbol name [type])\n\n Add a special symbol to the list of transforming operators by the parser.\n e.g.: `(add-special! "#" \'x)` will allow to use `#(1 2 3)` and it will be\n transformed into (x (1 2 3)) so you can write x macro that will process\n the list. 3rd argument is optional, and it can be one of two values:\n lips.specials.LITERAL, which is the default behavior, or\n lips.specials.SPLICE which causes the value to be unpacked into the expression.\n This can be used for e.g. to make `#(1 2 3)` into (x 1 2 3) that is needed\n by # that defines vectors.'),get:No,".":No,unbind:y(sa,"(unbind fn)\n\n Function that removes the weak 'this' binding from a function so you\n can get properties from the actual function object."),type:y(us,"(type object)\n\n Function that returns the type of an object as string."),debugger:y("debugger",function(){debugger},'(debugger)\n\n Function that triggers the JavaScript debugger (e.g. the browser devtools)\n using the "debugger;" statement. If a debugger is not running this\n function does nothing.'),in:y("in",function(e,t){if(e instanceof L||e instanceof $a||e instanceof C){e=e.valueOf()}return e in aa(t)},'(in key value)\n\n Function that uses the Javascript "in" operator to check if key is\n a valid property in the value.'),instanceof:y("instanceof",function(e,t){return t instanceof sa(e)},"(instanceof type obj)\n\n Predicate that tests if the obj is an instance of type."),"prototype?":y("prototype?",Nu,"(prototype? obj)\n\n Predicate that tests if value is a valid JavaScript prototype,\n i.e. calling (new) with it will not throw ' is not a constructor'."),"macro?":y("macro?",function(e){return e instanceof Vu},"(macro? expression)\n\n Predicate that tests if value is a macro."),"function?":y("function?",Xu,"(function? expression)\n\n Predicate that tests if value is a callable function."),"real?":y("real?",function(e){if(us(e)!=="number"){return false}if(e instanceof C){return e.isFloat()}return C.isFloat(e)},"(real? number)\n\n Predicate that tests if value is a real number (not complex)."),"number?":y("number?",function(e){return Number.isNaN(e)||C.isNumber(e)},"(number? expression)\n\n Predicate that tests if value is a number or NaN value."),"string?":y("string?",function(e){return $a.isString(e)},"(string? expression)\n\n Predicate that tests if value is a string."),"pair?":y("pair?",function(e){return e instanceof M},"(pair? expression)\n\n Predicate that tests if value is a pair or list structure."),"regex?":y("regex?",function(e){return e instanceof RegExp},"(regex? expression)\n\n Predicate that tests if value is a regular expression."),"null?":y("null?",function(e){return Zu(e)},"(null? expression)\n\n Predicate that tests if value is null-ish (i.e. undefined, nil, or\n Javascript null)."),"boolean?":y("boolean?",function(e){return typeof e==="boolean"},"(boolean? expression)\n\n Predicate that tests if value is a boolean (#t or #f)."),"symbol?":y("symbol?",function(e){return e instanceof L},"(symbol? expression)\n\n Predicate that tests if value is a LIPS symbol."),"array?":y("array?",function(e){return e instanceof Array},"(array? expression)\n\n Predicate that tests if value is an array."),"object?":y("object?",function(e){return e!==U&&e!==null&&!(e instanceof za)&&!(e instanceof RegExp)&&!(e instanceof $a)&&!(e instanceof M)&&!(e instanceof C)&&_(e)==="object"&&!(e instanceof Array)},"(object? expression)\n\n Predicate that tests if value is an plain object (not another LIPS type)."),flatten:y("flatten",function e(t){h("flatten",t,"pair");return t.flatten()},"(flatten list)\n\n Returns a shallow list from tree structure (pairs)."),"array->list":y("array->list",function(e){h("array->list",e,"array");return M.fromArray(e)},"(array->list array)\n\n Function that converts a JavaScript array to a LIPS cons list."),"tree->array":y("tree->array",gu("tree->array",true),"(tree->array list)\n\n Function that converts a LIPS cons tree structure into a JavaScript array."),"list->array":y("list->array",gu("list->array"),"(list->array list)\n\n Function that converts a LIPS list into a JavaScript array."),apply:y("apply",function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;iarray").call(this,u));return t.apply(this,fs(t,n))},"(apply fn list)\n\n Function that calls fn with the list of arguments."),length:y("length",function e(t){if(!t||t===U){return 0}if(t instanceof M){return t.length()}if("length"in t){return t.length}},'(length expression)\n\n Function that returns the length of the object. The object can be a LIPS\n list or any object that has a "length" property. Returns undefined if the\n length could not be found.'),"string->number":y("string->number",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;h("string->number",e,"string",1);h("string->number",t,"number",2);e=e.valueOf();t=t.valueOf();if(e.match(Wn)||e.match(Kn)){return ti(e,t)}else if(e.match(Qn)||e.match(Jn)){return ii(e,t)}else{var r=t===10&&!e.match(/e/i)||t===16;if(e.match(Hn)&&r||e.match(Gn)){return ri(e,t)}if(e.match(Rn)){return oi(e)}}return false},"(string->number number [radix])\n\n Function that parses a string into a number."),try:y(new Vu("try",function(t,e){var c=this;var f=e.dynamic_scope,l=e.error;return new Promise(function(i,n){var u,a;if(L.is(t.cdr.car.car,"catch")){u=t.cdr.car;if(t.cdr.cdr instanceof M&&L.is(t.cdr.cdr.car.car,"finally")){a=t.cdr.cdr.car}}else if(L.is(t.cdr.car.car,"finally")){a=t.cdr.car}if(!(a||u)){throw new Error("try: invalid syntax")}var o=i;if(a){o=function e(t,r){o=n;Yi(_s(new M(new L("begin"),a.cdr),s),function(){r(t)})}}var s={env:c,error:function e(t){var r=c.inherit("try");if(u){r.set(u.cdr.car.car,t);var n={env:r,error:l};if(f){n.dynamic_scope=c}Yi(_s(new M(new L("begin"),u.cdr.cdr),n),function(e){o(e,i)})}else{o(t,l)}}};if(f){s.dynamic_scope=c}var e=_s(t.car,s);if(ra(e)){e.then(function(e){o(e,i)})["catch"](s.error)}else{o(e,i)}})}),"(try expr (catch (e) code))\n (try expr (catch (e) code) (finally code))\n (try expr (finally code))\n\n Macro that executes expr and catches any exceptions thrown. If catch is provided\n it's executed when an error is thrown. If finally is provided it's always executed\n at the end."),raise:y("raise",function(e){throw e},"(raise obj)\n\n Throws the object verbatim (no wrapping an a new Error)."),throw:y("throw",function(e){throw new Error(e)},"(throw string)\n\n Throws a new exception."),find:y("find",function t(r,n){h("find",r,["regex","function"]);h("find",n,["pair","nil"]);if(Zu(n)){return U}var e=Gi("find",r);return Yi(e(n.car),function(e){if(e&&e!==U){return n.car}return t(r,n.cdr)})},"(find fn list)\n (find regex list)\n\n Higher-order function that finds the first value for which fn return true.\n If called with a regex it will create a matcher function."),"for-each":y("for-each",function(e){var t;h("for-each",e,"function");for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i1?t-1:0),u=1;u3?n-3:0),u=3;u3?i-3:0),a=3;aarray")(r);var u=[];var a=Gi("filter",t);return function t(r){function e(e){if(e&&e!==U){u.push(n)}return t(++r)}if(r===i.length){return M.fromArray(u)}var n=i[r];return Yi(a(n),e)}(0)},"(filter fn list)\n (filter regex list)\n\n Higher-order function that calls `fn` for each element of the list\n and return a new list for only those elements for which fn returns\n a truthy value. If called with a regex it will create a matcher function."),compose:y(Ra,"(compose . fns)\n\n Higher-order function that creates a new function that applies all functions\n from right to left and returns the last value. Reverse of pipe.\n e.g.:\n ((compose (curry + 2) (curry * 3)) 10) --\x3e (+ 2 (* 3 10)) --\x3e 32"),pipe:y(Na,"(pipe . fns)\n\n Higher-order function that creates a new function that applies all functions\n from left to right and returns the last value. Reverse of compose.\n e.g.:\n ((pipe (curry + 2) (curry * 3)) 10) --\x3e (* 3 (+ 2 10)) --\x3e 36"),curry:y(Ya,"(curry fn . args)\n\n Higher-order function that creates a curried version of the function.\n The result function will have partially applied arguments and it\n will keep returning one-argument functions until all arguments are provided,\n then it calls the original function with the accumulated arguments.\n\n e.g.:\n (define (add a b c d) (+ a b c d))\n (define add1 (curry add 1))\n (define add12 (add 2))\n (display (add12 3 4))"),gcd:y("gcd",function e(){for(var t=arguments.length,r=new Array(t),n=0;no?u%=o:o%=u}u=Tu(s*r[a])/(u+o)}return C(u)},"(lcm n1 n2 ...)\n\n Function that returns the least common multiple of the arguments."),"odd?":y("odd?",Ua(function(e){return C(e).isOdd()}),"(odd? number)\n\n Checks if number is odd."),"even?":y("even?",Ua(function(e){return C(e).isEven()}),"(even? number)\n\n Checks if number is even."),"*":y("*",qa(function(e,t){return C(e).mul(t)},C(1)),"(* . numbers)\n\n Multiplies all numbers passed as arguments. If single value is passed\n it will return that value."),"+":y("+",qa(function(e,t){return C(e).add(t)},C(0)),"(+ . numbers)\n\n Sums all numbers passed as arguments. If single value is passed it will\n return that value."),"-":y("-",function(){for(var e=arguments.length,t=new Array(e),r=0;r":y(">",function(){for(var e=arguments.length,t=new Array(e),r=0;r",t,"number");return Lu(function(e,t){return C(e).cmp(t)===1},t)},"(> x1 x2 x3 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically decreasing, i.e. x1 > x2 and x2 > x3 and so on."),"<":y("<",function(){for(var e=arguments.length,t=new Array(e),r=0;r=":y(">=",function(){for(var e=arguments.length,t=new Array(e),r=0;r=",t,"number");return Lu(function(e,t){return[0,1].includes(C(e).cmp(t))},t)},"(>= x1 x2 ...)\n\n Function that compares its numerical arguments and checks if they are\n monotonically nonincreasing, i.e. x1 >= x2 and x2 >= x3 and so on."),"eq?":y("eq?",Uu,"(eq? a b)\n\n Function that compares two values if they are identical."),or:y(new Vu("or",function(e,t){var i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return false}var s;return function t(){function e(e){s=e;if(s!==false){return s}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(or . expressions)\n\n Macro that executes the values one by one and returns the first that is\n a truthy value. If there are no expressions that evaluate to true it\n returns false."),and:y(new Vu("and",function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},i=t.dynamic_scope,u=t.error;var a=qo.get("list->array")(e);var o=this;if(i){i=o}if(!a.length){return true}var s;return function t(){function e(e){s=e;if(s===false){return false}else{return t()}}if(!a.length){if(s!==false){return s}else{return false}}else{var r=a.shift();var n=_s(r,{env:o,dynamic_scope:i,error:u});return Yi(n,e)}}()}),"(and . expressions)\n\n Macro that evaluates each expression in sequence and if any value returns false\n it will stop and return false. If each value returns true it will return the\n last value. If it's called without arguments it will return true."),"|":y("|",function(e,t){return C(e).or(t)},"(| a b)\n\n Function that calculates the bitwise or operation."),"&":y("&",function(e,t){return C(e).and(t)},"(& a b)\n\n Function that calculates the bitwise and operation."),"~":y("~",function(e){return C(e).neg()},"(~ number)\n\n Function that calculates the bitwise inverse (flip all the bits)."),">>":y(">>",function(e,t){return C(e).shr(t)},"(>> a b)\n\n Function that right shifts the value a by value b bits."),"<<":y("<<",function(e,t){return C(e).shl(t)},"(<< a b)\n\n Function that left shifts the value a by value b bits."),not:y("not",function e(t){if(Zu(t)){return true}return!t},"(not object)\n\n Function that returns the Boolean negation of its argument.")},undefined,"global");var Yo=qo.inherit("user-env");function Vo(e,t){e.constant("**internal-env**",t);e.doc("**internal-env**","**internal-env**\n\n Constant used to hide stdin, stdout and stderr so they don't interfere\n with variables with the same name. Constants are an internal type\n of variable that can't be redefined, defining a variable with the same name\n will throw an error.");qo.set("**interaction-environment**",e)}Vo(Yo,Lo);qo.doc("**interaction-environment**","**interaction-environment**\n\n Internal dynamic, global variable used to find interpreter environment.\n It's used so the read and write functions can locate **internal-env**\n that contains the references to stdin, stdout and stderr.");(function(){var e={ceil:"ceiling"};["floor","round","ceil"].forEach(function(t){var r=e[t]?e[t]:t;qo.set(r,y(r,function(e){h(r,e,"number");if(e instanceof C){return e[t]()}},"(".concat(r," number)\n\n Function that calculates the ").concat(r," of a number.")))})})();function zo(e){if(e.length===1){return e[0]}else{var t=[];var r=zo(e.slice(1));for(var n=0;n3&&arguments[3]!==undefined?arguments[3]:null;var i=e?" in expression `".concat(e,"`"):"";if(n!==null){i+=" (argument ".concat(n,")")}if(Xu(r)){return"Invalid type: got ".concat(t).concat(i)}if(r instanceof Array){if(r.length===1){var u=r[0].toLowerCase();r="a"+("aeiou".includes(u)?"n ":" ")+r[0]}else{var a=r[r.length-1];r=r.slice(0,-1).join(", ")+" or "+a}}return"Expecting ".concat(r,", got ").concat(t).concat(i)}function Zo(r,e,n){e.forEach(function(e,t){h(r,e,n,t+1)})}function Xo(e,t,r){h(e,t,r);if(t.__type__===Ao){throw new Error(Qo(e,"binary-port","textual-port"))}}function h(e,t,r){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;e=e.valueOf();var i=us(t).toLowerCase();if(Xu(r)){if(!r(t)){throw new Error(Qo(e,i,r,n))}return}var u=false;if(r instanceof M){r=r.to_array()}if(r instanceof Array){r=r.map(function(e){return e.valueOf()})}if(r instanceof Array){r=r.map(function(e){return e.valueOf().toLowerCase()});if(r.includes(i)){u=true}}else{r=r.valueOf().toLowerCase()}if(!u&&i!==r){throw new Error(Qo(e,i,r,n))}}function es(e){var t=_(e);return["string","function"].includes(t)||_(e)==="symbol"||e instanceof ki||e instanceof L||e instanceof C||e instanceof $a||e instanceof RegExp}function ts(e){return e instanceof C||e instanceof $a||e instanceof za}function rs(e,t){if(e===null){return false}return _(e)==="object"&&t in Object.getOwnPropertySymbols(e)}function ns(e,t){if(rs(e,t)||rs(e.__proto__,t)){return Xu(e[t])}}function is(r){var n=new WeakMap;return function(e){var t=n.get(e);if(!t){t=r(e)}return t}}us=is(us);function us(e){var t=wn.get(e);if(t){return t}if(_(e)==="object"){for(var r=0,n=Object.entries(bn);r2&&arguments[2]!==undefined?arguments[2]:{},u=t.env,a=t.dynamic_scope,r=t.error,o=r===void 0?function(){}:r;e=os(e,{env:u,dynamic_scope:a,error:o});return Yi(e,function(e){if(Sa(i)){i=sa(i)}e=fs(i,e);var t=e.slice();var r=(a||u).newFrame(i,t);var n=as(i.apply(r,e));return Yi(n,function(e){if(e instanceof M){e.markCycles();return Io(e)}return ia(e)},o)})}var hs=function(){function t(e){D(this,t);this.__value__=e}A(t,[{key:"invoke",value:function e(){if(this.__value__===null){throw new Error("Continuations are not implemented yet")}}},{key:"toString",value:function e(){return"#"}}]);return t}();var ps=function e(){};function _s(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},r=e.env,n=e.dynamic_scope,c=e.error,i=c===void 0?ps:c;try{if(n===true){r=n=r||qo}else if(r===true){r=n=qo}else{r=r||qo}var u={env:r,dynamic_scope:n,error:i};var a;if(Zu(t)){return t}if(t instanceof L){return r.get(t)}if(!(t instanceof M)){return t}var o=t.car;var f=t.cdr;if(o instanceof M){a=as(_s(o,u));if(ra(a)){return a.then(function(e){return _s(new M(e,t.cdr),u)})}else if(!ta(a)){throw new Error(us(a)+" "+r.get("repr")(a)+" is not callable while evaluating "+t.toString())}}if(o instanceof L){a=r.get(o)}else if(Xu(o)){a=o}var s;if(a instanceof Ku){s=ss(a,t,u)}else if(a instanceof Vu){s=cs(a,f,u)}else if(Xu(a)){s=ls(a,f,u)}else if(ea(a)){s=a.invoke()}else if(t instanceof M){a=o&&o.toString();throw new Error("".concat(us(o)," ").concat(a," is not a function"))}else{return t}var l=r.get(Symbol["for"]("__promise__"),{throwError:false});if(l===true&&ra(s)){s=s.then(function(e){if(e instanceof M&&!a[ya]){return _s(e,u)}return e});return new ki(s)}return s}catch(e){i&&i.call(r,e,t)}}var ds=ys(function(e){return e});var vs=ys(function(e,t){return t});function ys(_){return function(){var n=B(z.mark(function e(r,n,i){var u,a,o,s,h,c,p,f,l;return z.wrap(function e(t){while(1){switch(t.prev=t.next){case 0:if(i===true){n=i=n||Yo}else if(n===true){n=i=Yo}else{n=n||Yo}u=[];a=Array.isArray(r)?r:Mi(r);o=false;s=false;t.prev=5;c=yn(a);case 7:t.next=9;return c.next();case 9:if(!(o=!(p=t.sent).done)){t.next=27;break}f=p.value;l=_s(f,{env:n,dynamic_scope:i,error:function e(t,r){if(t&&t.message){if(t.message.match(/^Error:/)){var n=/^(Error:)\s*([^:]+:\s*)/;t.message=t.message.replace(n,"$1 $2")}if(r){if(!(t.__code__ instanceof Array)){t.__code__=[]}t.__code__.push(r.toString(true))}}throw t}});if(ra(l)){t.next=16;break}u.push(_(f,l));t.next=24;break;case 16:t.t0=u;t.t1=_;t.t2=f;t.next=21;return l;case 21:t.t3=t.sent;t.t4=(0,t.t1)(t.t2,t.t3);t.t0.push.call(t.t0,t.t4);case 24:o=false;t.next=7;break;case 27:t.next=33;break;case 29:t.prev=29;t.t5=t["catch"](5);s=true;h=t.t5;case 33:t.prev=33;t.prev=34;if(!(o&&c["return"]!=null)){t.next=38;break}t.next=38;return c["return"]();case 38:t.prev=38;if(!s){t.next=41;break}throw h;case 41:return t.finish(38);case 42:return t.finish(33);case 43:return t.abrupt("return",u);case 44:case"end":return t.stop()}}},e,null,[[5,29,33,43],[34,,38,42]])}));function e(e,t,r){return n.apply(this,arguments)}return e}()}function ms(e){var t={"[":"]","(":")"};var r;if(typeof e==="string"){r=wi(e)}else{r=e.map(function(e){return e&&e.token?e.token:e})}var n=Object.keys(t);var i=Object.values(t).concat(n);r=r.filter(function(e){return i.includes(e)});var u=new di;var a=hn(r),o;try{for(a.s();!(o=a.n()).done;){var s=o.value;if(n.includes(s)){u.push(s)}else if(!u.is_empty()){var f=u.top();var c=t[f];if(s===c){u.pop()}else{throw new Error("Syntax error: missing closing ".concat(c))}}else{throw new Error("Syntax error: not matched closing ".concat(s))}}}catch(e){a.e(e)}finally{a.f()}return u.is_empty()}function gs(e){var t="("+e.toString()+")()";var r=window.URL||window.webkitURL;var n;try{n=new Blob([t],{type:"application/javascript"})}catch(e){var i=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;n=new i;n.append(t);n=n.getBlob()}return new gn.Worker(r.createObjectURL(n))}function bs(){return Gs.version.match(/^(\{\{VER\}\}|DEV)$/)}function ws(){if(Go()){return}var e;if(document.currentScript){e=document.currentScript}else{var t=document.querySelectorAll("script");if(!t.length){return}e=t[t.length-1]}var r=e.getAttribute("src");return r}var Ds=ws();function Es(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var t="dist/std.xcb";if(e===""){if(Ds){e=Ds.replace(/[^/]*$/,"std.xcb")}else if(bs()){e="https://cdn.jsdelivr.net/gh/jcubic/lips@devel/".concat(t)}else{e="https://cdn.jsdelivr.net/npm/@jcubic/lips@".concat(Gs.version,"/").concat(t)}}var r=qo.get("load");return r.call(Yo,e,qo)}function As(e){this.url=e;var a=this.worker=gs(function(){var a;var o;self.addEventListener("message",function(e){var r=e.data;var t=r.id;if(r.type!=="RPC"||t===null){return}function n(e){self.postMessage({id:t,type:"RPC",result:e})}function i(e){self.postMessage({id:t,type:"RPC",error:e})}if(r.method==="eval"){if(!o){i("Worker RPC: LIPS not initialized, call init first");return}o.then(function(){var e=r.params[0];var t=r.params[1];a.exec(e,t).then(function(e){e=e.map(function(e){return e&&e.valueOf()});n(e)})["catch"](function(e){i(e)})})}else if(r.method==="init"){var u=r.params[0];if(typeof u!=="string"){i("Worker RPC: url is not a string")}else{importScripts("".concat(u,"/dist/lips.min.js"));a=new Gs.Interpreter("worker");o=Es(u);o.then(function(){n(true)})}}})});this.rpc=function(){var n=0;return function e(t,r){var u=++n;return new Promise(function(n,i){a.addEventListener("message",function e(t){var r=t.data;if(r&&r.type==="RPC"&&r.id===u){if(r.error){i(r.error)}else{n(r.result)}a.removeEventListener("message",e)}});a.postMessage({type:"RPC",method:t,id:u,params:r})})}}();this.rpc("init",[e])["catch"](function(e){console.error(e)});this.exec=function(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;return this.rpc("eval",[e,t])}}var xs={pair:function e(t){var r=j(t,2),n=r[0],i=r[1];return M(n,i)},number:function e(t){if($a.isString(t)){return C([t,10])}return C(t)},regex:function e(t){var r=j(t,2),n=r[0],i=r[1];return new RegExp(n,i)},nil:function e(){return U},symbol:function e(t){if($a.isString(t)){return L(t)}else if(Array.isArray(t)){return L(Symbol["for"](t[0]))}},string:$a,character:za};var Fs=Object.keys(xs);var ks={};for(var Cs=0,Os=Object.entries(Fs);Cs1){var n=t.reduce(function(e,t){return e+t.length},0);var i=new Uint8Array(n);var u=0;t.forEach(function(e){i.set(e,u);u+=e.length});return i}else if(t.length){return t[0]}}function Us(){var e=1;var t=new TextEncoder("utf-8");return t.encode("LIPS".concat(e.toString().padStart(3," ")))}var Ms=7;function qs(e){var t=new TextDecoder("utf-8");var r=t.decode(e.slice(0,Ms));var n=r.substring(0,4);if(n==="LIPS"){var i=r.match(/^(....).*([0-9]+)$/);if(i){return{type:i[1],version:Number(i[2])}}}return{type:"unknown"}}function Ys(e){var t=Us();var r=Ts.encode(e);return Ls(t,un(r,{magic:false}))}function Vs(e){var t=qs(e),r=t.type,n=t.version;if(r==="LIPS"&&n===1){var i=an(e.slice(Ms),{magic:false});return Ts.decode(i)}else{throw new Error("Invalid file format ".concat(r))}}function zs(e){console.error(e.message||e);if(e.code){console.error(e.code.map(function(e,t){return"[".concat(t+1,"]: ").concat(e)}))}}function $s(){var a=["text/x-lips","text/x-scheme"];var o;function s(r){return new Promise(function(t){var e=r.getAttribute("src");if(e){return fetch(e).then(function(e){return e.text()}).then(vs).then(t)["catch"](function(e){zs(e);t()})}else{return vs(r.innerHTML).then(t)["catch"](function(e){zs(e);t()})}})}function e(){return new Promise(function(i){var u=Array.from(document.querySelectorAll("script"));return function e(){var t=u.shift();if(!t){i()}else{var r=t.getAttribute("type");if(a.includes(r)){var n=t.getAttribute("bootstrap");if(!o&&typeof n==="string"){return Es(n).then(function(){return s(t)}).then(e)}else{return s(t).then(e)}}else if(r&&r.match(/lips|lisp/)){console.warn("Expecting "+a.join(" or ")+" found "+r)}return e()}}()})}if(!window.document){return Promise.resolve()}else if(Js){var t=Js;var r=t.getAttribute("bootstrap");if(typeof r==="string"){return Es(r).then(function(){o=true;return e()})}}return e()}var Js=typeof window!=="undefined"&&window.document&&document.currentScript;if(typeof window!=="undefined"){Fn(window,$s)}var Ks=function(){var e=$a("Tue, 14 Nov 2023 19:09:39 +0000").valueOf();var t=e==="{{"+"DATE}}"?new Date:new Date(e);var r=function e(t){return t.toString().padStart(2,"0")};var n=t.getFullYear();var i=[n,r(t.getMonth()+1),r(t.getDate())].join("-");var u="\n __ __ __\n / / \\ \\ _ _ ___ ___ \\ \\\n| | \\ \\ | | | || . \\/ __> | |\n| | > \\ | |_ | || _/\\__ \\ | |\n| | / ^ \\ |___||_||_| <___/ | |\n \\_\\ /_/ \\_\\ /_/\n\nLIPS Interpreter DEV (".concat(i,") \nCopyright (c) 2018-").concat(n," Jakub T. Jankiewicz\n\nType (env) to see environment with functions macros and variables. You can also\nuse (help name) to display help for specific function or macro, (apropos name)\nto display list of matched names in environment and (dir object) to list\nproperties of an object.\n").replace(/^.*\n/,"");return u}();$i(eu,"__class__","ahead");$i(M,"__class__","pair");$i(mu,"__class__","nil");$i(tu,"__class__","pattern");$i(Xi,"__class__","formatter");$i(Vu,"__class__","macro");$i(Ku,"__class__","syntax");$i(So,"__class__","environment");$i(ho,"__class__","input-port");$i(po,"__class__","output-port");$i(_o,"__class__","output-port");$i(vo,"__class__","output-string-port");$i(mo,"__class__","input-string-port");$i(wo,"__class__","input-file-port");$i(yo,"__class__","output-file-port");$i(Oo,"__class__","lips-error");[C,io,fo,uo,lo].forEach(function(e){$i(e,"__class__","number")});$i(za,"__class__","character");$i(L,"__class__","symbol");$i($a,"__class__","string");$i(ki,"__class__","promise");var Gs={version:"DEV",banner:Ks,date:"Tue, 14 Nov 2023 19:09:39 +0000",exec:vs,parse:Ra(Ji,Mi),tokenize:wi,evaluate:_s,compile:ds,serialize:Ns,unserialize:Rs,serialize_bin:Ys,unserialize_bin:Vs,bootstrap:Es,Environment:So,env:Yo,Worker:As,Interpreter:Co,balanced_parenthesis:ms,balancedParenthesis:ms,balanced:ms,Macro:Vu,Syntax:Ku,Pair:M,Values:jo,QuotedPromise:ki,Error:Oo,quote:Io,InputPort:ho,OutputPort:po,BufferedOutputPort:_o,InputFilePort:wo,OutputFilePort:yo,InputStringPort:mo,OutputStringPort:vo,InputByteVectorPort:go,OutputByteVectorPort:bo,InputBinaryFilePort:Do,OutputBinaryFilePort:Eo,Formatter:Xi,Parser:Li,Lexer:s,specials:Bi,repr:bu,nil:U,eof:Fo,LSymbol:L,LNumber:C,LFloat:uo,LComplex:io,LRational:fo,LBigInteger:lo,LCharacter:za,LString:$a,rationalize:so};qo.set("lips",Gs);var Hs={};var Ws=Object.freeze({__proto__:null,default:Hs});function Qs(e,t){var r=0;for(var n=e.length-1;n>=0;n--){var i=e[n];if(i==="."){e.splice(n,1)}else if(i===".."){e.splice(n,1);r++}else if(r){e.splice(n,1);r--}}if(t){for(;r--;r){e.unshift("..")}}return e}var Zs=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var Xs=function(e){return Zs.exec(e).slice(1)};function ec(){var e="",t=false;for(var r=arguments.length-1;r>=-1&&!t;r--){var n=r>=0?arguments[r]:"/";if(typeof n!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!n){continue}e=n+"/"+e;t=n.charAt(0)==="/"}e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");return(t?"/":"")+e||"."}function tc(e){var t=rc(e),r=hc(e,-1)==="/";e=Qs(lc(e.split("/"),function(e){return!!e}),!t).join("/");if(!e&&!t){e="."}if(e&&r){e+="/"}return(t?"/":"")+e}function rc(e){return e.charAt(0)==="/"}function nc(){var e=Array.prototype.slice.call(arguments,0);return tc(lc(e,function(e,t){if(typeof e!=="string"){throw new TypeError("Arguments to path.join must be strings")}return e}).join("/"))}function ic(e,t){e=ec(e).substr(1);t=ec(t).substr(1);function r(e){var t=0;for(;t=0;r--){if(e[r]!=="")break}if(t>r)return[];return e.slice(t,r-t+1)}var n=r(e.split("/"));var i=r(t.split("/"));var u=Math.min(n.length,i.length);var a=u;for(var o=0;o procedure)\u000A (predicate? => procedure))\u000A\u000AMacro for condition checks. For usage instead of nested ifs.\u000AYou can use predicate and any number of expressions. Or symbol =>\u000AFollowed by procedure that will be invoked with result\u000Aof the predicate." (if (pair? list) (let* ((item (car list)) (value (gensym)) (first (car item)) (fn (and (not (null? (cdr item))) (eq? (cadr item) (quote =>)))) (expression (if fn (caddr item) (cdr item))) (rest (cdr list))) (quasiquote (let (((unquote value) (unquote first))) (if (unquote value) (unquote (if fn (quasiquote ((unquote expression) (unquote value))) (quasiquote (begin (unquote-splicing expression))))) (unquote (if (and (pair? rest) (or (eq? (caar rest) #t) (eq? (caar rest) (quote else)))) (quasiquote (begin (unquote-splicing (cdar rest)))) (if (not (null? rest)) (quasiquote (cond (unquote-splicing rest)))))))))) ())) (define (%r re . rest) "(%r re)\u000A\u000ACreates a new regular expression from string, to not break Emacs formatting." (if (null? rest) (new RegExp re) (new RegExp re (car rest)))) -(define (interaction-environment) "(interaction-environment)\u000A\u000AReturns the interaction environement equal to lips.env. This can be overwritten\u000Awhen creating new interpreter with lips.Interpreter." **interaction-environment**) +(define (interaction-environment) "(interaction-environment)\u000A\u000AReturns the interaction environment equal to lips.env. This can be overwritten\u000Awhen creating new interpreter with lips.Interpreter." **interaction-environment**) (define (current-output-port) "(current-output-port)\u000A\u000AReturns the default stdout port." (let-env (interaction-environment) (--> **internal-env** (get (quote stdout))))) (define (current-error-port) "(current-output-port)\u000A\u000AReturns the default stderr port." (let-env (interaction-environment) (--> **internal-env** (get (quote stderr))))) (define (current-input-port) "(current-input-port)\u000A\u000AReturns the default stdin port." (let-env (interaction-environment) (--> **internal-env** (get (quote stdin))))) (define (command-line) "(command-line)\u000A\u000AReturns the command line arguments, or an empty list if not running under Node.js." (let ((args (let-env (interaction-environment) (--> **internal-env** (get (quote command-line)))))) (if (or (null? args) (zero? (length args))) (quote ("")) (vector->list args)))) (define (flush-output . rest) "(flush-output [port])\u000A\u000AIf output-port is buffered, this causes the contents of its buffer to be written to\u000Athe output device. Otherwise it has no effect. Returns an unspecified value." (let ((port (if (null? rest) (current-output-port) (car rest)))) (typecheck "flush-output" port "output-port") (--> port (flush)))) (define (regex? x) "(regex? x)\u000A\u000AReturns true if value is a regular expression, or false otherwise." (== (--> (type x) (cmp "regex")) 0)) -(define (set-repr! type fn) "(add-repr! type fn)\u000A\u000AFunction that adds the string represention to the type, which should be a constructor function.\u000A\u000AFunction fn should have args (obj q) and it should return a string. obj is the value that\u000Aneed to be converted to a string. If the object is nested and you need to use `repr` recursively,\u000Ait should pass the second parameter q to repr, so string will be quoted when it's true.\u000A\u000Ae.g.: (lambda (obj q) (string-append \"<\" (repr obj q) \">\"))" (typecheck "add-repr!" type "function") (typecheck "add-repr!" fn "function") (ignore (--> lips.repr (set type fn)))) -(define (unset-repr! type) "(unset-repr! type)\u000A\u000ARemoves the string represention of the type, which should be constructor function,\u000Aadded by add-repr! function." (typecheck "unset-repr!" type "function") (ignore (--> lips.repr (delete type)))) +(define (set-repr! type fn) "(add-repr! type fn)\u000A\u000AFunction that adds the string representation to the type, which should be a constructor function.\u000A\u000AFunction fn should have args (obj q) and it should return a string. obj is the value that\u000Aneed to be converted to a string. If the object is nested and you need to use `repr` recursively,\u000Ait should pass the second parameter q to repr, so string will be quoted when it's true.\u000A\u000Ae.g.: (lambda (obj q) (string-append \"<\" (repr obj q) \">\"))" (typecheck "add-repr!" type "function") (typecheck "add-repr!" fn "function") (ignore (--> lips.repr (set type fn)))) +(define (unset-repr! type) "(unset-repr! type)\u000A\u000ARemoves the string representation of the type, which should be constructor function,\u000Aadded by add-repr! function." (typecheck "unset-repr!" type "function") (ignore (--> lips.repr (delete type)))) (set-special! "&" (quote object-literal) lips.specials.SPLICE) (set-repr! Object (lambda (x q) (concat "&(" (--> (Object.getOwnPropertyNames x) (map (lambda (key) (let ((value (repr (. x key) q)) (key (repr (string->symbol key)))) (concat ":" key " " value)))) (join " ")) ")"))) -(define (bound? x . rest) "(bound? x [env])\u000A\u000AFunction that check if the variable is defined in the given environement, or interaction-environment\u000Aif not specified." (let ((env (if (null? rest) (interaction-environment) (car rest)))) (try (begin (--> env (get x)) #t) (catch (e) #f)))) +(define (bound? x . rest) "(bound? x [env])\u000A\u000AFunction that check if the variable is defined in the given environment, or interaction-environment\u000Aif not specified." (let ((env (if (null? rest) (interaction-environment) (car rest)))) (try (begin (--> env (get x)) #t) (catch (e) #f)))) (define (environment-bound? env x) "(environment-bound? env symbol)\u000A\u000AChecks if symbol is a bound variable similar to bound?." (typecheck "environment-bound?" env "environment" 1) (typecheck "environment-bound?" x "symbol" 2) (bound? x env)) -(define (qsort e predicate) "(qsort list predicate)\u000A\u000ASorts the list using the quick sort alorithm according to predicate." (if (or (null? e) (<= (length e) 1)) e (let loop ((left ()) (right ()) (pivot (car e)) (rest (cdr e))) (if (null? rest) (append (append (qsort left predicate) (list pivot)) (qsort right predicate)) (if (predicate (car rest) pivot) (loop (append left (list (car rest))) right pivot (cdr rest)) (loop left (append right (list (car rest))) pivot (cdr rest))))))) +(define (qsort e predicate) "(qsort list predicate)\u000A\u000ASorts the list using the quick sort algorithm according to predicate." (if (or (null? e) (<= (length e) 1)) e (let loop ((left ()) (right ()) (pivot (car e)) (rest (cdr e))) (if (null? rest) (append (append (qsort left predicate) (list pivot)) (qsort right predicate)) (if (predicate (car rest) pivot) (loop (append left (list (car rest))) right pivot (cdr rest)) (loop left (append right (list (car rest))) pivot (cdr rest))))))) (define (sort list . rest) "(sort list [predicate])\u000A\u000ASorts the list using optional predicate function. If no comparison function is given\u000Ait will use <= and sort in increasing order." (let ((predicate (if (null? rest) <= (car rest)))) (typecheck "sort" list "pair") (typecheck "sort" predicate "function") (qsort list predicate))) -(define (every fn list) "(every fn list)\u000A\u000AFunction that calls fn on each item of the list, if every value returns true\u000Ait will return true otherwise it return false.\u000AAnalagous to Python all(map(fn, list))." (if (null? list) #t (and (fn (car list)) (every fn (cdr list))))) +(define (every fn list) "(every fn list)\u000A\u000AFunction that calls fn on each item of the list, if every value returns true\u000Ait will return true otherwise it return false.\u000AAnalogous to Python all(map(fn, list))." (if (null? list) #t (and (fn (car list)) (every fn (cdr list))))) (define-macro (promise . body) "(promise . body)\u000A\u000AAnaphoric macro that exposes resolve and reject functions from JS promise." (quasiquote (new Promise (lambda (resolve reject) (try (begin (unquote-splicing body)) (catch (e) (error e.message))))))) (define-macro (timer time . body) "(timer time . body)\u000A\u000AEvaluates body after delay, it returns the timer ID from setTimeout.\u000ATo clear the timer you can use native JS clearTimeout function." (quasiquote (setTimeout (lambda () (try (begin (unquote-splicing body)) (catch (e) (error (.. e.message))))) (unquote time)))) (define-macro (wait time . expr) "(wait time . expr)\u000A\u000AReturns a promise that will resolve with the expression after delay." (quasiquote (promise (timer (unquote time) (resolve (begin (unquote-splicing expr))))))) -(define (await value) "(await value)\u000A\u000AUnquotes a quoted promise so it can be automagicaly evaluated (resolved\u000Ato its value)." (if (instanceof lips.QuotedPromise value) (value.valueOf) value)) +(define (await value) "(await value)\u000A\u000AUnquotes a quoted promise so it can be automagically evaluated (resolved\u000Ato its value)." (if (instanceof lips.QuotedPromise value) (value.valueOf) value)) (define-macro (quote-promise expr) "(quote-promise expr) or '>expr\u000A\u000AMacro used to escape automati awaiting of the expression. It will be wrapped\u000Awith a JavaScript class that behaves like Promise but will not be automatically\u000Aresolved by LIPS like normal promises are." (quasiquote (let ((env)) (set! env (current-environment)) (env.set (Symbol.for "__promise__") #t) (unquote expr)))) (define (defmacro? obj) "(defmacro? expression)\u000A\u000AChecks if object is a macro and it's expandable." (and (macro? obj) (. obj (quote defmacro)))) (define (n-ary n fn) "(n-ary n fn)\u000A\u000AReturns a new function that limits the number of arguments to n." (lambda args (apply fn (take n args)))) @@ -95,7 +95,7 @@ (define (apropos name) "(apropos name)\u000A\u000ASearch the current environment and display names that match the given name.\u000Aname can be regex, string or symbol." (typecheck "apropos" name (quote ("string" "regex" "symbol"))) (let ((regex (lambda (string) (new RegExp (escape-regex string))))) (filter (cond ((string? name) (regex name)) ((symbol? name) (regex (symbol->string name))) (else name)) (env (interaction-environment))))) (define (promisify fn) "(promisify fn)\u000A\u000ASimple function for adding promises to NodeJS two-callback based functions.\u000AFunction tested only with fs module." (lambda args (new Promise (lambda (resolve reject) (apply fn (append args (list (lambda (err data) (if (null? err) (resolve data) (reject err)))))))))) (define-macro (list* . args) "(list* arg1 ...)\u000A\u000AParallel asynchronous version of list. Like begin* except all values are returned in a list." (let ((result (gensym "result"))) (quasiquote (let (((unquote result) (vector))) (unquote-splicing (map (lambda (arg) (quasiquote (--> (unquote result) (push (quote-promise (unquote arg)))))) args)) (map await (vector->list (unquote result))))))) -(define-macro (%not-implemented name) "(%not-implemented name)\u000A\u000AReturns new function that throws an exception with a message that this function is not implmeneted." (let ((str-name (symbol->string name))) (quasiquote (lambda () (unquote (string-append "(" str-name ")\u000A\u000AThis function is not yet implemented.")) (throw (new Error (unquote (string-append str-name " has not beed implemented")))))))) +(define-macro (%not-implemented name) "(%not-implemented name)\u000A\u000AReturns new function that throws an exception with a message that this function is not implemented." (let ((str-name (symbol->string name))) (quasiquote (lambda () (unquote (string-append "(" str-name ")\u000A\u000AThis function is not yet implemented.")) (throw (new Error (unquote (string-append str-name " has not been implemented")))))))) (define-macro (%make-env name . names) "(%make-env name f1 f2 ...)\u000A\u000ACreates a new Environment with given name and defined symbols in it from the global env.\u000AIf given function name f1 f2 ... don't exist, it will define them as functions that\u000Athrow exception that function is not yet implemented." (quasiquote (new lips.Environment (alist->object (list (unquote-splicing (map (lambda (name) (quasiquote (cons (quote (unquote name)) (unquote (let ((ref (lips.env.ref name))) (if (null? ref) (quasiquote (%not-implemented (unquote name))) (quasiquote (lips.env.get (quote (unquote name)))))))))) names)))) null (unquote name)))) (define Y (lambda (h) "(Y f)\u000A\u000A _ __ __ _ _ _ _ __ __ _ _ _\u000A / \\ \\ / / / __ / ____ \\ / \\ \\ / / ____ \\ \\ \\\u000A+ \\ v / + \\ \\ + / ___| + + \\ v / / ___| + + +\u000A| \\ / | \\ \\ | | |__ | | \\ / | |__ | | |\u000A| | | | / \\ | | __| | | | | | __| | | |\u000A| | | | / /\\ \\ | | | | | | | | | | | |\u000A+ |_| + /_/ \\_\\ + |_| + + |_| |_| + + +\u000A \\_ \\_ \\_ _/ \\_ _/ _/ _/" ((lambda (x) (x x)) (lambda (g) (h (lambda args (apply (g g) args))))))) (define (indexed-db?) "(indexed-db?)\u000A\u000AFunction that tests if IndexedDB is available." (let* ((any (lambda args (let iter ((args args)) (if (null? args) #f (if (not (null? (car args))) (car args) (iter (cdr args))))))) (indexedDB (any window.indexedDB window.indexedDB window.mozIndexedDB window.webkitIndexedDB))) (if (not (null? indexedDB)) (try (begin (window.indexedDB.open "IndexedDBExistenceCheck" 3) #t) (catch (e) #f)) #f))) @@ -104,16 +104,16 @@ (define %read-binary-file (curry %read-file #t)) (define %read-text-file (curry %read-file #f)) (define (%fs-promisify-proc fn message) "(%fs-promisify-proc fn string)\u000A\u000AReturns a promisified version of a fs function or throws an exception\u000Aif fs is not available." (let ((fs (--> lips.env (get (quote **internal-env**)) (get (quote fs))))) (if (null? fs) (throw (new Error (string-append message ": fs not defined"))) (promisify (. fs fn))))) -(define (response->content binary res) "(response->text binary res)\u000A\u000AReads all text from a Node.js HTTP response object. If binary argument\u000Ais true it will return Buffer object that can be converted to u8vector.\u000A\u000A***Warrning:*** it may overflow the Javascript call stack when converting the\u000Awhole buffer to u8vector, because LIPS doesn't have TCO." (let ((result (vector)) (append (if binary (lambda (chunk) (result.push (Buffer.from chunk "binary"))) (lambda (chunk) (result.push chunk))))) (res.setEncoding (if binary "binary" "utf8")) (new Promise (lambda (resolve) (res.on "data" append) (res.on "end" (lambda () (if binary (resolve (Buffer.concat result)) (resolve (result.join ""))))))))) +(define (response->content binary res) "(response->text binary res)\u000A\u000AReads all text from a Node.js HTTP response object. If binary argument\u000Ais true it will return Buffer object that can be converted to u8vector.\u000A\u000A***Warning:*** it may overflow the Javascript call stack when converting the\u000Awhole buffer to u8vector, because LIPS doesn't have TCO." (let ((result (vector)) (append (if binary (lambda (chunk) (result.push (Buffer.from chunk "binary"))) (lambda (chunk) (result.push chunk))))) (res.setEncoding (if binary "binary" "utf8")) (new Promise (lambda (resolve) (res.on "data" append) (res.on "end" (lambda () (if binary (resolve (Buffer.concat result)) (resolve (result.join ""))))))))) (define response->buffer (curry response->content #t)) (define response->text (curry response->content #f)) (define http-get (if (eq? self window) (lambda (url binary) "(http-get url)\u000A\u000AThis function is only available when running LIPS in NodeJS." (throw (new Error "http-get: function is Node.js only."))) (let* ((http (. (require "http") (quote get))) (https (. (require "https") (quote get)))) (lambda (url binary) "(http-get url)\u000A\u000ANode.js function that sends a HTTP Request and returns a string or\u000Abinary Buffer object." (let ((request (if (null? (url.match #/^https/)) http https))) (new Promise (lambda (resolve reject) (--> (request url (lambda (res) (if (= res.statusCode 200) (resolve (response->content binary res)) (let ((code res.statusCode)) (res.resume) (reject (string-append "Request return " (number->string code))))))) (on "error" reject))))))))) (define (buffer->u8vector bin) "(buffer->u8vector bin)\u000A\u000ACross platform function that can be used in both Node and browser.\u000AIt can be used together with %read-file or %read-binary-file to convert\u000Athe result ArrayBuffer or Buffer to u8vector." (if (instanceof ArrayBuffer bin) (new Uint8Array bin) (Uint8Array.from bin))) -(define (complement fn) "(complement fn)\u000A\u000AHiger order function that returns the Boolean complement of the given function. If the function fn\u000Afor a given arguments return true the result function will return false, if it would\u000Areturn false, the result function will return true." (typecheck "complement" fn "function") (lambda args (not (apply fn args)))) +(define (complement fn) "(complement fn)\u000A\u000AHigher order function that returns the Boolean complement of the given function. If the function fn\u000Afor a given arguments return true the result function will return false, if it would\u000Areturn false, the result function will return true." (typecheck "complement" fn "function") (lambda args (not (apply fn args)))) (define (always constant) "(always constant)\u000A\u000AHigher-order function that returns a new thunk that always returns the given constant when called." (lambda () constant)) (define (once fn) "(once fn)\u000A\u000AHigher-order function that returns a new function, that only calls the original\u000Aon the first invocation, and immediately returns the first call's result again\u000Aon subsequent invocations." (typecheck "once" fn "function") (let ((result)) (lambda args (if (string=? (type result) "undefined") (set! result (apply fn args))) result))) (define (flip fn) "(flip fn)\u000A\u000AHigher-order function that returns a new function where the first two arguments are swapped.\u000A\u000AExample:\u000A\u000A (define first (curry (flip vector-ref) 0))\u000A (first #(1 2 3))\u000A ;; ==> 1" (typecheck "flip" fn "function") (lambda (a b . rest) (apply fn b a rest))) -(define (unfold fn init) "(unfold fn init)\u000A\u000AReturns a list from the given function and init value. The function should\u000Areturn a pair where first is the item added to the list and second is next value\u000Apassed to the funtion. If the function returns false it ends the loop." (typecheck "unfold" fn "function") (let iter ((pair (fn init)) (result (quote ()))) (if (not pair) (reverse result) (iter (fn (cdr pair)) (cons (car pair) result))))) +(define (unfold fn init) "(unfold fn init)\u000A\u000AReturns a list from the given function and init value. The function should\u000Areturn a pair where first is the item added to the list and second is next value\u000Apassed to the function. If the function returns false it ends the loop." (typecheck "unfold" fn "function") (let iter ((pair (fn init)) (result (quote ()))) (if (not pair) (reverse result) (iter (fn (cdr pair)) (cons (car pair) result))))) (define string-join join) (define string-split split) (define (symbol-append . rest) "(symbol-append s1 s2 ...)\u000A\u000AFunction that creates a new symbol from symbols passed as arguments." (string->symbol (apply string-append (map symbol->string rest)))) @@ -176,12 +176,12 @@ (define (list-ref l k) "(list-ref list n)\u000A\u000AReturns n-th element of a list." (typecheck "list-ref" l (quote ("pair" "nil"))) (if (< k 0) (throw (new Error "list-ref: index out of range")) (let ((l l) (k k)) (while (> k 0) (if (or (null? (cdr l)) (null? l)) (throw (new Error "list-ref: not enough elements in the list"))) (set! l (cdr l)) (set! k (- k 1))) (if (null? l) l (car l))))) (define (not x) "(not x)\u000A\u000AReturns true if value is false and false otherwise." (if x #f #t)) (define (rationalize number tolerance) "(rationalize number tolerance)\u000A\u000AReturns simplest rational number approximation differing from number by no more\u000Athan the tolerance." (typecheck "rationalize" number "number" 1) (typecheck "rationalize" tolerance "number" 2) (lips.rationalize number tolerance)) -(define (%mem/search acces op obj list) "(%member obj list function)\u000A\u000AHelper method to get first list where car equal to obj\u000Ausing provied functions as comparator." (if (null? list) #f (if (op (acces list) obj) list (%mem/search acces op obj (cdr list))))) +(define (%mem/search access op obj list) "(%member obj list function)\u000A\u000AHelper method to get first list where car equal to obj\u000Ausing provided function as comparator." (if (null? list) #f (if (op (access list) obj) list (%mem/search access op obj (cdr list))))) (define (memq obj list) "(memq obj list)\u000A\u000AReturns first object in the list that match using eq? function." (typecheck "memq" list (quote ("nil" "pair"))) (%mem/search car eq? obj list)) (define (memv obj list) "(memv obj list)\u000A\u000AReturns first object in the list that match using eqv? function." (typecheck "memv" list (quote ("nil" "pair"))) (%mem/search car eqv? obj list)) (define (member obj list) "(member obj list)\u000A\u000AReturns first object in the list that match using equal? function." (typecheck "member" list (quote ("nil" "pair"))) (%mem/search car equal? obj list)) -(define (%assoc/acessor name) "(%assoc/acessor name)\u000A\u000AReturns carr with typecheck using give name." (lambda (x) (typecheck name x "pair") (caar x))) -(define (%assoc/search op obj alist) "(%assoc/search op obj alist)\u000A\u000AGeneric function that used in assoc functions with defined comparator\u000Afunction." (typecheck "assoc" alist (vector "nil" "pair")) (let ((ret (%mem/search (%assoc/acessor "assoc") op obj alist))) (if ret (car ret) ret))) +(define (%assoc/accessor name) "(%assoc/accessor name)\u000A\u000AReturns carr with typecheck using give name." (lambda (x) (typecheck name x "pair") (caar x))) +(define (%assoc/search op obj alist) "(%assoc/search op obj alist)\u000A\u000AGeneric function that used in assoc functions with defined comparator\u000Afunction." (typecheck "assoc" alist (vector "nil" "pair")) (let ((ret (%mem/search (%assoc/accessor "assoc") op obj alist))) (if ret (car ret) ret))) (define assoc (%doc "(assoc obj alist)\u000A\u000AReturns pair from alist that match given key using equal? check." (curry %assoc/search equal?))) (define assq (%doc "(assq obj alist)\u000A\u000AReturns pair from a list that matches given key using eq? check." (curry %assoc/search eq?))) (define assv (%doc "(assv obj alist)\u000A\u000AReturns pair from alist that match given key using eqv? check." (curry %assoc/search eqv?))) @@ -210,18 +210,18 @@ (define (string-ci>=? string1 string2) "(string-ci>=? string1 string2)\u000A\u000AReturns true if second character is not smaller than the first one, ignoring case." (> (%string-ci-cmp "string-ci>=?" string1 string2) -1)) (define char? (%doc "(char? obj)\u000A\u000AChecks if the object is a character." (curry instanceof lips.LCharacter))) (define (char->integer chr) "(char->integer chr)\u000A\u000AReturns the codepoint of Unicode character." (typecheck "char->integer" chr "character") (--> chr.__char__ (codePointAt 0))) -(define (integer->char n) "(integer->char chr)\u000A\u000AFunction that converts number argument to chararacter." (typecheck "integer->char" n "number") (if (integer? n) (string-ref (String.fromCodePoint n) 0) (throw "argument to integer->char need to be integer."))) -(define-macro (%define-chr-re spec str re) "(%define-chr-re (name chr) sring re)\u000A\u000AMacro defines the procedure that tests character against regular expression." (quasiquote (define (unquote spec) (unquote str) (typecheck (unquote (symbol->string (car spec))) (unquote (cadr spec)) "character") (not (null? (--> chr (toString) (match (unquote re)))))))) +(define (integer->char n) "(integer->char chr)\u000A\u000AFunction that converts number argument to character." (typecheck "integer->char" n "number") (if (integer? n) (string-ref (String.fromCodePoint n) 0) (throw "argument to integer->char need to be integer."))) +(define-macro (%define-chr-re spec str re) "(%define-chr-re (name chr) string re)\u000A\u000AMacro defines the procedure that tests character against regular expression." (quasiquote (define (unquote spec) (unquote str) (typecheck (unquote (symbol->string (car spec))) (unquote (cadr spec)) "character") (not (null? (--> chr (toString) (match (unquote re)))))))) (%define-chr-re (char-whitespace? chr) "(char-whitespace? chr)\u000A\u000AReturns true if character is whitespace." (let-env (interaction-environment) (--> **internal-env** (get (quote space-unicode-regex))))) (%define-chr-re (char-numeric? chr) "(char-numeric? chr)\u000A\u000AReturns true if character is number." (let-env (interaction-environment) (--> **internal-env** (get (quote numeral-unicode-regex))))) (%define-chr-re (char-alphabetic? chr) "(char-alphabetic? chr)\u000A\u000AReturns true if character is leter of the ASCII alphabet." (let-env (interaction-environment) (--> **internal-env** (get (quote letter-unicode-regex))))) -(define (%char-cmp name chr1 chr2) "(%char-cmp name a b)\u000A\u000AFunction that compares two characters and return 0 if they are equal,\u000A-1 second is smaller and 1 if is larget. The function compare\u000Athe codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) (let ((a (char->integer chr1)) (b (char->integer chr2))) (cond ((= a b) 0) ((< a b) -1) (else 1)))) +(define (%char-cmp name chr1 chr2) "(%char-cmp name a b)\u000A\u000AFunction that compares two characters and return 0 if they are equal,\u000A-1 second is smaller and 1 if is larger. The function compare\u000Athe codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) (let ((a (char->integer chr1)) (b (char->integer chr2))) (cond ((= a b) 0) ((< a b) -1) (else 1)))) (define (char=? chr1 chr2) "(char=? chr1 chr2)\u000A\u000AChecks if two characters are equal." (= (%char-cmp "char=?" chr1 chr2) 0)) (define (char? chr1 chr2) "(char?" chr1 chr2) 1)) (define (char<=? chr1 chr2) "(char=? chr1 chr2) "(char (%char-cmp "char>=?" chr1 chr2) -1)) -(define (%char-ci-cmp name chr1 chr2) "(%char-cmp name a b)\u000A\u000AFunction that compares two characters and return 0 if they are equal,\u000A-1 second is smaller and 1 if is larget. The function compare\u000Athe codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) (%char-cmp name (char-downcase chr1) (char-downcase chr2))) +(define (%char-ci-cmp name chr1 chr2) "(%char-cmp name a b)\u000A\u000AFunction that compares two characters and return 0 if they are equal,\u000A-1 second is smaller and 1 if is larger. The function compare\u000Athe codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) (%char-cmp name (char-downcase chr1) (char-downcase chr2))) (define (char-ci=? chr1 chr2) "(char-ci=? chr1 chr2)\u000A\u000AChecks if two characters are equal." (= (%char-ci-cmp "char-ci=?" chr1 chr2) 0)) (define (char-ci? chr1 chr2) "(char-ci?" chr1 chr2) 1)) @@ -242,9 +242,9 @@ (define (vector-set! vec n value) "(vector-set! vec n value)\u000A\u000AFunction that sets nth item of the vector to value." (typecheck "vector-ref" vec "array" 1) (typecheck "vector-ref" n "number" 2) (set-obj! vec n value)) (define (vector-fill! vec value) "(vector-fill! vec value)\u000A\u000ASet every element of the vector to given value." (typecheck "vector-ref" vec "array") (let recur ((n (- (length vec) 1))) (if (>= n 0) (begin (set-obj! vec n value) (recur (- n 1)))))) (define (vector-length vec) "(vector-length vec)\u000A\u000AReturns length of the vector. It errors if the argument is not a vector." (typecheck "vector-length" vec "array") (length vec)) -(define-syntax case (syntax-rules (else =>) ((case (key ...) clauses ...) (let ((atom-key (key ...))) (case atom-key clauses ...))) ((case key (else => result)) (result key)) ((case key (else result1 result2 ...)) (begin result1 result2 ...)) ((case key ((atoms ...) => result)) (if (memv key (quote (atoms ...))) (result key))) ((case key ((atoms ...) => result) clause clauses ...) (if (memv key (quote (atoms ...))) (result key) (case key clause clauses ...))) ((case key ((atoms ...) result1 result2 ...)) (if (memv key (quote (atoms ...))) (begin result1 result2 ...))) ((case key ((atoms ...) result1 result2 ...) clause clauses ...) (if (memv key (quote (atoms ...))) (begin result1 result2 ...) (case key clause clauses ...)))) "(case value\u000A (() result1)\u000A (() result2)\u000A [else result3])\u000A\u000AMacro for switch case statement. It test if value is any of the item. If\u000Aitem match the value it will return coresponding result expression value.\u000AIf no value match and there is else it will return that result.") +(define-syntax case (syntax-rules (else =>) ((case (key ...) clauses ...) (let ((atom-key (key ...))) (case atom-key clauses ...))) ((case key (else => result)) (result key)) ((case key (else result1 result2 ...)) (begin result1 result2 ...)) ((case key ((atoms ...) => result)) (if (memv key (quote (atoms ...))) (result key))) ((case key ((atoms ...) => result) clause clauses ...) (if (memv key (quote (atoms ...))) (result key) (case key clause clauses ...))) ((case key ((atoms ...) result1 result2 ...)) (if (memv key (quote (atoms ...))) (begin result1 result2 ...))) ((case key ((atoms ...) result1 result2 ...) clause clauses ...) (if (memv key (quote (atoms ...))) (begin result1 result2 ...) (case key clause clauses ...)))) "(case value\u000A (() result1)\u000A (() result2)\u000A [else result3])\u000A\u000AMacro for switch case statement. It test if value is any of the item. If\u000Aitem match the value it will return corresponding result expression value.\u000AIf no value match and there is else it will return that result.") (--> lips.Formatter.defaults.exceptions.specials (push "case")) -(define (numerator n) "(numerator n)\u000A\u000AReturn numberator of rational or same number if n is not rational." (typecheck "numerator" n "number") (cond ((integer? n) n) ((rational? n) n.__num__) (else (numerator (inexact->exact n))))) +(define (numerator n) "(numerator n)\u000A\u000AReturn numerator of rational or same number if n is not rational." (typecheck "numerator" n "number") (cond ((integer? n) n) ((rational? n) n.__num__) (else (numerator (inexact->exact n))))) (define (denominator n) "(denominator n)\u000A\u000AReturn denominator of rational or same number if one is not rational." (typecheck "denominator" n "number") (cond ((integer? n) n) ((rational? n) n.__denom__) ((exact? n) 1) (else (denominator (inexact->exact n))))) (define (imag-part n) "(imag-part n)\u000A\u000AReturn imaginary part of the complex number n." (typecheck "imag-part" n "number") (if (%number-type "complex" n) n.__im__ 0)) (define (real-part n) "(real-part n)\u000A\u000AReturn real part of the complex number n." (typecheck "real-part" n "number") (if (%number-type "complex" n) n.__re__ n)) @@ -267,8 +267,8 @@ (define (with-output-to-file string thunk) (let* ((port (open-output-file string)) (env **interaction-environment**) (internal-env (env.get (quote **internal-env**))) (old-stdout (internal-env.get "stdout"))) (internal-env.set "stdout" port) (try (thunk) (finally (internal-env.set "stdout" old-stdout) (close-output-port port))))) (define (file-exists? filename) (new Promise (lambda (resolve) (let ((fs (--> lips.env (get (quote **internal-env**)) (get (quote fs))))) (if (null? fs) (throw (new Error "file-exists?: fs not defined")) (fs.stat filename (lambda (err stat) (if (null? err) (resolve (stat.isFile)) (resolve #f))))))))) (define open-output-file (let ((open)) (lambda (filename) "(open-output-file filename)\u000A\u000AFunction that opens file and return port that can be used for writing. If file\u000Aexists it will throw an Error." (typecheck "open-output-file" filename "string") (if (not (procedure? open)) (set! open (%fs-promisify-proc (quote open) "open-output-file"))) (if (file-exists? filename) (throw (new Error "open-output-file: file exists")) (lips.OutputFilePort filename (open filename "w")))))) -(define (scheme-report-environment version) "(scheme-report-environment version)\u000A\u000AReturns new Environment object for given Scheme Spec version.\u000AOnly argument 5 is supported that create environemnt for R5RS." (typecheck "scheme-report-environment" version "number") (case version ((5) (%make-env "R5RS" * + - / < <= = > >= abs acos and angle append apply asin assoc assq assv atan begin boolean? caaaar caaadr caaar caadar caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr cadr call-with-current-continuation call-with-input-file call-with-output-file call-with-values car case cdaaar cdaadr cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cond cons cos current-input-port current-output-port define define-syntax delay denominator display do dynamic-wind eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor for-each force gcd if imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lambda lcm length let let* let-syntax letrec letrec-syntax list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector map max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file or output-port? pair? peek-char positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! vector? with-input-from-file with-output-to-file write write-char zero?)) ((7) (throw (new Error "not yet implemented"))) (else (throw (new Error (string-append "scheme-report-environment: version " (number->string version) " not supported")))))) -(define-macro (%make-vector prefix type help) "(%make-vector prefix type help)\u000A\u000AMega-helper macro that creates a list of functions for single byte vectors\u000Abased on typed arrays from JavaScript." (letrec ((prefix-str (symbol->string prefix)) (type-str (symbol->string type)) (l-type (--> type-str (toLowerCase))) (static (lambda (name) (string->symbol (format "~a.~a" type-str name)))) (TypedArray.from (static "from")) (fn-name (lambda (str) (string->symbol (format str prefix-str)))) (type-vector (fn-name "~avector")) (make-vector (fn-name "make-~avector")) (vector? (fn-name "~avector?")) (vector-in-range? (fn-name "%~avector-in-range?")) (vector-ref (fn-name "~avector-ref")) (repr-str (format "#~a" prefix-str)) (vector-length (fn-name "~avector-length")) (vector->list (fn-name "~avector->list")) (vector-set! (fn-name "~avector-set!")) (list->tvector (fn-name "list->~avector")) (vector->tvector (fn-name "vector->~avector"))) (quasiquote (begin (define ((unquote type-vector) . args) (unquote (format "(~a v1 v2 ...)\u000A\u000ACreate ~a from give arguments." type-vector help)) ((unquote TypedArray.from) (list->vector args))) (define ((unquote vector-length) v) (unquote (format "(~a v)\u000A\u000Areturn length of ~a." vector-length help)) (typecheck (unquote (symbol->string vector-length)) v (unquote l-type)) v.length) (define ((unquote make-vector) k . fill) (unquote (format "(~a k fill)\u000A\u000AAllocate new ~a of length k, with optional initial values." make-vector help)) (let ((v (new (unquote type) k))) (if (not (null? fill)) (--> v (fill (car fill)))) v)) (define ((unquote vector?) x) (unquote (format "(~a x)\u000A\u000AReturns #t of argument is ~a otherwise it return #f." vector? help)) (and (object? x) (equal? (. x (quote constructor)) (unquote type)))) (define ((unquote vector-in-range?) vector k) (unquote (format "(~a vector k)\u000A\u000AFunction that tests if index is range for ~a." vector-in-range? help)) (typecheck (unquote (symbol->string vector-in-range?)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-in-range?)) k "number") (let ((len (length vector))) (and (>= k 0) (< k len)))) (define ((unquote vector-ref) vector k) (unquote (format "(~a vector k)\u000A\u000AReturns value frome vector at index k. If index is out of range it throw exception." vector-ref help)) (typecheck (unquote (symbol->string vector-ref)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-ref)) k "number") (if (not ((unquote vector-in-range?) vector k)) (throw (new Error (unquote (format "~a index out of range" vector-ref)))) (. vector k))) (define ((unquote vector->list) vector) (typecheck (unquote (symbol->string vector->list)) vector (unquote l-type)) (vector->list (Array.from vector))) (define ((unquote vector-set!) vector k v) (unquote (format "(~a vector k)\u000A\u000AFunction set value of ~a at index k. If index is out of range it throw exception." vector-set! help)) (typecheck (unquote (symbol->string vector-set!)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-set!)) k "number") (if (not ((unquote vector-in-range?) vector k)) (throw (new Error (unquote (format "~a index out of range" vector-set!)))) (set-obj! vector k v))) (define ((unquote list->tvector) lst) (typecheck (unquote (symbol->string list->tvector)) lst "pair") (apply (unquote vector) lst)) (define ((unquote vector->tvector) vector) (typecheck (unquote (symbol->string vector->tvector)) vector "array") ((unquote TypedArray.from) vector)) (set-special! (unquote repr-str) (quote (unquote type-vector)) lips.specials.SPLICE) (set-repr! (unquote type) (lambda (x _quote) (string-append (unquote repr-str) (repr ((unquote vector->list) x) _quote)))))))) +(define (scheme-report-environment version) "(scheme-report-environment version)\u000A\u000AReturns new Environment object for given Scheme Spec version.\u000AOnly argument 5 is supported that create environment for R5RS." (typecheck "scheme-report-environment" version "number") (case version ((5) (%make-env "R5RS" * + - / < <= = > >= abs acos and angle append apply asin assoc assq assv atan begin boolean? caaaar caaadr caaar caadar caaddr caadr caar cadaar cadadr cadar caddar cadddr caddr cadr call-with-current-continuation call-with-input-file call-with-output-file call-with-values car case cdaaar cdaadr cdaar cdadar cdaddr cdadr cdar cddaar cddadr cddar cdddar cddddr cdddr cddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cond cons cos current-input-port current-output-port define define-syntax delay denominator display do dynamic-wind eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor for-each force gcd if imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lambda lcm length let let* let-syntax letrec letrec-syntax list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector map max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file or output-port? pair? peek-char positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? tan truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! vector? with-input-from-file with-output-to-file write write-char zero?)) ((7) (throw (new Error "not yet implemented"))) (else (throw (new Error (string-append "scheme-report-environment: version " (number->string version) " not supported")))))) +(define-macro (%make-vector prefix type help) "(%make-vector prefix type help)\u000A\u000AMega-helper macro that creates a list of functions for single byte vectors\u000Abased on typed arrays from JavaScript." (letrec ((prefix-str (symbol->string prefix)) (type-str (symbol->string type)) (l-type (--> type-str (toLowerCase))) (static (lambda (name) (string->symbol (format "~a.~a" type-str name)))) (TypedArray.from (static "from")) (fn-name (lambda (str) (string->symbol (format str prefix-str)))) (type-vector (fn-name "~avector")) (make-vector (fn-name "make-~avector")) (vector? (fn-name "~avector?")) (vector-in-range? (fn-name "%~avector-in-range?")) (vector-ref (fn-name "~avector-ref")) (repr-str (format "#~a" prefix-str)) (vector-length (fn-name "~avector-length")) (vector->list (fn-name "~avector->list")) (vector-set! (fn-name "~avector-set!")) (list->tvector (fn-name "list->~avector")) (vector->tvector (fn-name "vector->~avector"))) (quasiquote (begin (define ((unquote type-vector) . args) (unquote (format "(~a v1 v2 ...)\u000A\u000ACreate ~a from give arguments." type-vector help)) ((unquote TypedArray.from) (list->vector args))) (define ((unquote vector-length) v) (unquote (format "(~a v)\u000A\u000Areturn length of ~a." vector-length help)) (typecheck (unquote (symbol->string vector-length)) v (unquote l-type)) v.length) (define ((unquote make-vector) k . fill) (unquote (format "(~a k fill)\u000A\u000AAllocate new ~a of length k, with optional initial values." make-vector help)) (let ((v (new (unquote type) k))) (if (not (null? fill)) (--> v (fill (car fill)))) v)) (define ((unquote vector?) x) (unquote (format "(~a x)\u000A\u000AReturns #t of argument is ~a otherwise it return #f." vector? help)) (and (object? x) (equal? (. x (quote constructor)) (unquote type)))) (define ((unquote vector-in-range?) vector k) (unquote (format "(~a vector k)\u000A\u000AFunction that tests if index is range for ~a." vector-in-range? help)) (typecheck (unquote (symbol->string vector-in-range?)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-in-range?)) k "number") (let ((len (length vector))) (and (>= k 0) (< k len)))) (define ((unquote vector-ref) vector k) (unquote (format "(~a vector k)\u000A\u000AReturns value from vector at index k. If index is out of range it throw exception." vector-ref help)) (typecheck (unquote (symbol->string vector-ref)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-ref)) k "number") (if (not ((unquote vector-in-range?) vector k)) (throw (new Error (unquote (format "~a index out of range" vector-ref)))) (. vector k))) (define ((unquote vector->list) vector) (typecheck (unquote (symbol->string vector->list)) vector (unquote l-type)) (vector->list (Array.from vector))) (define ((unquote vector-set!) vector k v) (unquote (format "(~a vector k)\u000A\u000AFunction set value of ~a at index k. If index is out of range it throw exception." vector-set! help)) (typecheck (unquote (symbol->string vector-set!)) vector (unquote l-type)) (typecheck (unquote (symbol->string vector-set!)) k "number") (if (not ((unquote vector-in-range?) vector k)) (throw (new Error (unquote (format "~a index out of range" vector-set!)))) (set-obj! vector k v))) (define ((unquote list->tvector) lst) (typecheck (unquote (symbol->string list->tvector)) lst "pair") (apply (unquote vector) lst)) (define ((unquote vector->tvector) vector) (typecheck (unquote (symbol->string vector->tvector)) vector "array") ((unquote TypedArray.from) vector)) (set-special! (unquote repr-str) (quote (unquote type-vector)) lips.specials.SPLICE) (set-repr! (unquote type) (lambda (x _quote) (string-append (unquote repr-str) (repr ((unquote vector->list) x) _quote)))))))) (%make-vector u8 Uint8Array "unsigned 8-bit integer vector (C unsigned char)") (%make-vector s8 Int8Array "signed 8-bit integer vector (C signed char)") (%make-vector u16 Uint16Array "unsigned 16-bit integer vector (C unsigned short)") @@ -278,7 +278,7 @@ (%make-vector f32 Float32Array "32-bit IEEE-754 floating point number vector (C float)") (%make-vector f64 Float64Array "64-bit IEEE-754 floating point number vector (C double)") (define (list-match? predicate list) "(list-match? predicate list)\u000A\u000AChecks if consecutive elements of the list match the predicate function." (typecheck "list-match?" predicate #("function" "macro")) (typecheck "list-match?" list "pair") (or (or (null? list) (null? (cdr list))) (and (predicate (car list) (cadr list)) (list-match? predicate (cdr list))))) -(define (symbol=? . args) "(symbol=? s1 s2 ...)\u000A\u000AChecks if each value is symbol and it's the same acording to string=? predicate." (list-match? (lambda (a b) (and (symbol? a) (symbol? b) (equal? a b))) args)) +(define (symbol=? . args) "(symbol=? s1 s2 ...)\u000A\u000AChecks if each value is symbol and it's the same according to string=? predicate." (list-match? (lambda (a b) (and (symbol? a) (symbol? b) (equal? a b))) args)) (define (values-ref values n) "(values-ref values n)\u000A\u000AReturns n value of values object which is result of value function." (typecheck "values-ref" values "values" 1) (typecheck "values-ref" n "number" 1) (--> values (valueOf) n)) (define-syntax let-values (syntax-rules () ((_ ()) ()) ((_ () body ...) (begin body ...)) ((_ (((x ...) values) ...) body ...) (apply (lambda (x ... ...) body ...) (vector->list (apply vector-append (map (lambda (arg) ((. arg "valueOf"))) (list values ...))))))) "(let-values binding body ...)\u000A\u000AThe macro work similar to let but variable is list of values and value\u000Aneed to evaluate to result of calling values.") (define (vector-append . args) "(vector-append v1 v2 ...)\u000A\u000AReturns new vector by combining it's arguments that should be vectors." (if (null? args) (vector) (begin (typecheck "vector-append" (car args) "array") (--> (car args) (concat (apply vector-append (cdr args))))))) @@ -308,7 +308,7 @@ (define (string-map fn . rest) "(string-map fn string1 stringr2 ...)\u000A\u000AReturns new string from applying function fn to each element\u000Aof the strings, similar to map for lists." (if (or (= (length rest) 0) (not (every string? rest))) (error "string-map: function require at least 1 string") (vector->string (apply vector-map fn (map string->vector rest))))) (define (dynamic-wind before thunk after) "(dynamic-wind before thunk after)\u000A\u000AAccepts 3 procedures/lambdas and executes before, then thunk, and \u000Aalways after even if an error occurs in thunk." (before) (let ((result (try (thunk) (catch (e) (after) (error e))))) (after) result)) (define (with-exception-handler handler thunk) "(with-exception-handler handler thunk)\u000A\u000AProcedure call and return value of thunk function, if exception happen\u000Ait call handler procedure." (try (thunk) (catch (e) (handler e)))) -(define-syntax define-values (syntax-rules () ((define-values () expr) (define dummy (call-with-values (lambda () expr) (lambda args #f)))) ((define-values (var) expr) (define var expr)) ((define-values (var0 var1 ... varn) expr) (begin (define var0 (call-with-values (lambda () expr) list)) (define var1 (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... (define varn (let ((v (cadr var0))) (set! var0 (car var0)) v)))) ((define-values (var0 var1 ... . varn) expr) (begin (define var0 (call-with-values (lambda () expr) list)) (define var1 (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... (define varn (let ((v (cdr var0))) (set! var0 (car var0)) v)))) ((define-values var expr) (define var (call-with-values (lambda () expr) list)))) "(define-values (a b ...) expr)\u000A\u000AEvaluates expression expr and if it evaluates to result of values\u000Athen it will defined each value as variable like with define.") +(define-syntax define-values (syntax-rules () ((define-values () expr) (define dummy (call-with-values (lambda () expr) (lambda args #f)))) ((define-values (var) expr) (define var expr)) ((define-values (var0 var1 ... warn) expr) (begin (define var0 (call-with-values (lambda () expr) list)) (define var1 (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... (define warn (let ((v (cadr var0))) (set! var0 (car var0)) v)))) ((define-values (var0 var1 ... . warn) expr) (begin (define var0 (call-with-values (lambda () expr) list)) (define var1 (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... (define warn (let ((v (cdr var0))) (set! var0 (car var0)) v)))) ((define-values var expr) (define var (call-with-values (lambda () expr) list)))) "(define-values (a b ...) expr)\u000A\u000AEvaluates expression expr and if it evaluates to result of values\u000Athen it will defined each value as variable like with define.") (define-macro (include . files) "(include file ...)\u000A\u000ALoad at least one file content and insert them into one,\u000Abody expression." (if (null? files) (throw (new Error "include: at least one file path required")) (let ((result (vector)) (env (interaction-environment))) (if (eq? self global) (let* ((fs (require "fs")) (readFile (lambda (file) (new Promise (lambda (resolve reject) (fs.readFile file (lambda (err data) (if (null? err) (resolve (--> data (toString))) (reject err))))))))) (for-each (lambda (file) (let* ((expr (lips.parse (readFile file) env))) (set! result (--> result (concat expr))))) files)) (for-each (lambda (file) (let* ((text (--> (fetch file) (text))) (expr (lips.parse text env))) (set! result (--> result (concat expr))))) files)) (if (> result.length 0) (quasiquote (begin (unquote-splicing (vector->list result)))))))) (define-syntax syntax-error (syntax-rules () ((_ "step" arg ...) (join " " (vector->list (vector (repr arg) ...)))) ((_ message arg ...) (error (format "~a ~a" message (_ "step" arg ...)))))) (define-syntax cond-expand (syntax-rules (and or not else r7rs srfi-0 srfi-2 srfi-4 srfi-6 srfi-10 srfi-22 srfi-23 srfi-46 srfi-176 lips complex full-unicode ieee-float ratios exact-complex full-numeric-tower) ((cond-expand) (syntax-error "Unfulfilled cond-expand")) ((cond-expand (else body ...)) (begin body ...)) ((cond-expand ((and) body ...) more-clauses ...) (begin body ...)) ((cond-expand ((and req1 req2 ...) body ...) more-clauses ...) (cond-expand (req1 (cond-expand ((and req2 ...) body ...) more-clauses ...)) more-clauses ...)) ((cond-expand ((or) body ...) more-clauses ...) (cond-expand more-clauses ...)) ((cond-expand ((or req1 req2 ...) body ...) more-clauses ...) (cond-expand (req1 (begin body ...)) (else (cond-expand ((or req2 ...) body ...) more-clauses ...)))) ((cond-expand ((not req) body ...) more-clauses ...) (cond-expand (req (cond-expand more-clauses ...)) (else body ...))) ((cond-expand (r7rs body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-0 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-2 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-4 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-6 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-10 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-22 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-23 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-46 body ...) more-clauses ...) (begin body ...)) ((cond-expand (srfi-176 body ...) more-clauses ...) (begin body ...)) ((cond-expand (lips body ...) more-clauses ...) (begin body ...)) ((cond-expand (complex body ...) more-clauses ...) (begin body ...)) ((cond-expand (full-unicode body ...) more-clauses ...) (begin body ...)) ((cond-expand (ieee-float body ...) more-clauses ...) (begin body ...)) ((cond-expand (ratios body ...) more-clauses ...) (begin body ...)) ((cond-expand (exact-complex body ...) more-clauses ...) (begin body ...)) ((cond-expand (full-numeric-tower body ...) more-clauses ...) (begin body ...)))) @@ -351,7 +351,7 @@ (define (eof-object) "(eof-object)\u000A\u000AProcedure returns eof object that indicate end of the port" lips.eof) (define (output-port-open? port) "(output-port-open? port)\u000A\u000AChecks if argument is output-port and if you can write to it." (and (output-port? port) (port.is_open))) (define (input-port-open? port) "(input-port-open? port)\u000A\u000AChecks if argument is input-port and if you can read from it." (and (input-port? port) (port.is_open))) -(define (flush-output-port port) "(flush-output-port port)\u000A\u000AFunctio do nothing, flush is not needed in LIPS in both NodeJS and Browser.\u000AThe function is added, so it don't throw exception when using R7RS code." (if #f #f)) +(define (flush-output-port port) "(flush-output-port port)\u000A\u000AFunction do nothing, flush is not needed in LIPS in both NodeJS and Browser.\u000AThe function is added, so it don't throw exception when using R7RS code." (if #f #f)) (define (write-string string . rest) "(write-string string)\u000A(write-string string port)\u000A(write-string string port start)\u000A(write-string string port start end)\u000A\u000AWrites the characters of string from start to end in left-toright order\u000Ato the textual output port." (typecheck "write-string" string "string") (let ((port (if (null? rest) (current-output-port) (car rest))) (start (if (or (null? rest) (null? (cdr rest))) 0 (cadr rest))) (end (if (or (null? rest) (null? (cdr rest)) (null? (cddr rest))) (string-length string) (caddr rest)))) (typecheck "write-string" port "output-port") (typecheck "write-string" start "number") (typecheck "write-string" end "number") (display (substring string start end) port))) (define (write-char char . rest) "(write-char string)\u000A(write-char string port)\u000A\u000AWrites the character char (not an external representation of the character)\u000Ato the given textual output port and returns an unspecified value." (typecheck "write-char" char "character") (let ((port (if (null? rest) (current-output-port) (car rest)))) (typecheck "write-char" port "output-port") (display (string char) port))) (define (read-string k . rest) "(read-string k)\u000A(read-string k port)\u000A\u000AReads the next k characters, or as many as are available\u000Abefore the end of file, from the textual input port into a\u000Anewly allocated string in left-to-right order and returns the\u000Astring. If no characters are available before the end of file,\u000Aan end-of-file object is returned." (typecheck "read-string" k "number") (let ((port (if (null? rest) (current-input-port) (car rest)))) (typecheck "read-string" port "input-port") (port.read_string k))) @@ -369,13 +369,13 @@ (define-syntax define-library/export (syntax-rules (rename :c) ((_ :c (rename to from)) (print (string-append "export " (symbol->string (quote from)) " ==> " (symbol->string (quote to))))) ((_ :c name) (print (string-append "export " (symbol->string (quote name))))) ((_ x ...) (begin (define-library/export :c x) ...)))) (define-values (current-directory set-current-directory!) (if (eq? self window) (let ((cwd (string-append location.origin (--> location.pathname (replace #/\/[^/]+$/ "/"))))) (values (lambda () "(current-directory)\u000A\u000AReturn current working directory, default is the current URL." cwd) (lambda (value) "(set-current-directory! string)\u000A\u000AChanges the current working directory to provided string." (typecheck "set-current-directory!" value "string") (set! cwd value)))) (let ((process (require "process"))) (values (lambda () "(current-directory)\u000A\u000AReturns the current working directory, default is the path from where\u000Athe script was executed." (string-append (process.cwd) "/")) (lambda (value) "(set-current-directory! string)\u000A\u000AChanges the current working directory to provided string." (typecheck "set-current-directory!" value "string") (process.chdir value)))))) (define (error message . args) "(error message ...)\u000A\u000AFunction raises error with given message and arguments,\u000Awhich are called invariants." (raise (new lips.Error message (args.to_array)))) -(define (error-object? obj) "(error-object? obj)\u000A\u000AChecks if object is of Error object throwed by error function." (instanceof lips.Error obj)) +(define (error-object? obj) "(error-object? obj)\u000A\u000AChecks if object is of Error object thrown by error function." (instanceof lips.Error obj)) (define (error-object-message obj) "(error-object-message error-object)\u000A\u000AReturns the message encapsulated by error-object." (if (error-object? obj) obj.message)) (define (error-object-irritants obj) "(error-object-irritants error-object)\u000A\u000AReturns a list of the irritants encapsulated by error-object." (if (error-object? obj) obj.args)) -(define (get-environment-variables) "(get-environment-variables)\u000A\u000AReturns all process environment variables as an alist. This funtion throws exception\u000Awhen called in browser." (if (eq? self window) (throw "get-environment-variables: Node.js only funtion") (object->alist process.env))) -(define (get-environment-variable name) "(get-environment-variable name)\u000A\u000AReturns given environment variable. This funtion throws exception\u000Awhen called in browser." (. process.env name)) +(define (get-environment-variables) "(get-environment-variables)\u000A\u000AReturns all process environment variables as an alist. This function throws exception\u000Awhen called in browser." (if (eq? self window) (throw "get-environment-variables: Node.js only function") (object->alist process.env))) +(define (get-environment-variable name) "(get-environment-variable name)\u000A\u000AReturns given environment variable. This function throws exception\u000Awhen called in browser." (. process.env name)) (define (current-second) "(current-second)\u000A\u000AFunctionn return exact integer of the seconds since January 1, 1970" (inexact->exact (truncate (/ (+ %%start-jiffy (current-jiffy)) (jiffies-per-second))))) (define %%start-jiffy (truncate (* 1000 (if (eq? self window) performance.timing.navigationStart performance.timeOrigin))) "Constant value that indicates start jiffy of the scheme process.") -(define (current-jiffy) "(current-jiffy)\u000A\u000ARetturn corrent jiffy. In LIPS is jiffy since start of the process.\u000AYou can divide this value by (jiffies-per-second) to get seconds since\u000Astart of the process. And you can add %%start-jiffy to get jiffy since\u000AJanuary 1, 1970." (inexact->exact (truncate (* (performance.now) 1000)))) +(define (current-jiffy) "(current-jiffy)\u000A\u000AReturn current jiffy. In LIPS is jiffy since start of the process.\u000AYou can divide this value by (jiffies-per-second) to get seconds since\u000Astart of the process. And you can add %%start-jiffy to get jiffy since\u000AJanuary 1, 1970." (inexact->exact (truncate (* (performance.now) 1000)))) (define (jiffies-per-second) 1000000) -(let* ((fs (cond ((eq? self global) (require "fs")) ((and (not (null? self.BrowserFS)) (indexed-db?)) (new Promise (lambda (resolve reject) (BrowserFS.configure &(:fs "IndexedDB" :options &()) (lambda (e) (if (null? e) (resolve (BrowserFS.BFSRequire "fs")) (reject e))))))) ((not (null? self.BrowserFS)) (console.warn (string-append "BrowserFS is not initilalized and " "IndexedDB is not available")) ()))) (Buffer (cond ((eq? self global) self.Buffer) ((not (null? self.BrowserFS)) (. (BrowserFS.BFSRequire "buffer") (quote Buffer)))))) (let ((internal (lips.env.get (quote **internal-env**)))) (if (not (null? Buffer)) (internal.set "Buffer" Buffer)) (if (not (null? fs)) (internal.set "fs" fs)))) +(let* ((fs (cond ((eq? self global) (require "fs")) ((and (not (null? self.BrowserFS)) (indexed-db?)) (new Promise (lambda (resolve reject) (BrowserFS.configure &(:fs "IndexedDB" :options &()) (lambda (e) (if (null? e) (resolve (BrowserFS.BFSRequire "fs")) (reject e))))))) ((not (null? self.BrowserFS)) (console.warn (string-append "BrowserFS is not initialized and " "IndexedDB is not available")) ()))) (Buffer (cond ((eq? self global) self.Buffer) ((not (null? self.BrowserFS)) (. (BrowserFS.BFSRequire "buffer") (quote Buffer)))))) (let ((internal (lips.env.get (quote **internal-env**)))) (if (not (null? Buffer)) (internal.set "Buffer" Buffer)) (if (not (null? fs)) (internal.set "fs" fs)))) diff --git a/dist/std.scm b/dist/std.scm index d72a91a8..9ea1f48b 100644 --- a/dist/std.scm +++ b/dist/std.scm @@ -596,7 +596,7 @@ (define (interaction-environment) "(interaction-environment) - Returns the interaction environement equal to lips.env. This can be overwritten + Returns the interaction environment equal to lips.env. This can be overwritten when creating new interpreter with lips.Interpreter." **interaction-environment**) @@ -656,7 +656,7 @@ (define (set-repr! type fn) "(add-repr! type fn) - Function that adds the string represention to the type, which should be a constructor function. + Function that adds the string representation to the type, which should be a constructor function. Function fn should have args (obj q) and it should return a string. obj is the value that need to be converted to a string. If the object is nested and you need to use `repr` recursively, @@ -671,7 +671,7 @@ (define (unset-repr! type) "(unset-repr! type) - Removes the string represention of the type, which should be constructor function, + Removes the string representation of the type, which should be constructor function, added by add-repr! function." (typecheck "unset-repr!" type "function") (ignore (--> lips.repr (delete type)))) @@ -696,7 +696,7 @@ (define (bound? x . rest) "(bound? x [env]) - Function that check if the variable is defined in the given environement, or interaction-environment + Function that check if the variable is defined in the given environment, or interaction-environment if not specified." (let ((env (if (null? rest) (interaction-environment) (car rest)))) (try (begin @@ -720,7 +720,7 @@ (define (qsort e predicate) "(qsort list predicate) - Sorts the list using the quick sort alorithm according to predicate." + Sorts the list using the quick sort algorithm according to predicate." (if (or (null? e) (<= (length e) 1)) e (let loop ((left nil) (right nil) @@ -748,7 +748,7 @@ Function that calls fn on each item of the list, if every value returns true it will return true otherwise it return false. - Analagous to Python all(map(fn, list))." + Analogous to Python all(map(fn, list))." (if (null? list) true (and (fn (car list)) (every fn (cdr list))))) @@ -782,7 +782,7 @@ (define (await value) "(await value) - Unquotes a quoted promise so it can be automagicaly evaluated (resolved + Unquotes a quoted promise so it can be automagically evaluated (resolved to its value)." (if (instanceof lips.QuotedPromise value) (value.valueOf) @@ -1278,11 +1278,11 @@ (define-macro (%not-implemented name) "(%not-implemented name) - Returns new function that throws an exception with a message that this function is not implmeneted." + Returns new function that throws an exception with a message that this function is not implemented." (let ((str-name (symbol->string name))) `(lambda () ,(string-append "(" str-name ")\n\nThis function is not yet implemented.") - (throw (new Error ,(string-append str-name " has not beed implemented")))))) + (throw (new Error ,(string-append str-name " has not been implemented")))))) ;; ----------------------------------------------------------------------------- (define-macro (%make-env name . names) @@ -1418,7 +1418,7 @@ Reads all text from a Node.js HTTP response object. If binary argument is true it will return Buffer object that can be converted to u8vector. - ***Warrning:*** it may overflow the Javascript call stack when converting the + ***Warning:*** it may overflow the Javascript call stack when converting the whole buffer to u8vector, because LIPS doesn't have TCO." (let ((result (vector)) (append (if binary @@ -1482,7 +1482,7 @@ (define (complement fn) "(complement fn) - Higer order function that returns the Boolean complement of the given function. If the function fn + Higher order function that returns the Boolean complement of the given function. If the function fn for a given arguments return true the result function will return false, if it would return false, the result function will return true." (typecheck "complement" fn "function") @@ -1532,7 +1532,7 @@ Returns a list from the given function and init value. The function should return a pair where first is the item added to the list and second is next value - passed to the funtion. If the function returns false it ends the loop." + passed to the function. If the function returns false it ends the loop." (typecheck "unfold" fn "function") (let iter ((pair (fn init)) (result '())) (if (not pair) @@ -1639,7 +1639,7 @@ ;; ----------------------------------------------------------------------------- (set-repr! Array (lambda (arr q) - ;; Array.from is used to convert emtpy to undefined + ;; Array.from is used to convert empty to undefined ;; but we can't use the value because Array.from calls ;; valueOf on its arguments (let ((result (--> (Array.from arr) @@ -2167,16 +2167,16 @@ (lips.rationalize number tolerance)) ;; ----------------------------------------------------------------------------- -(define (%mem/search acces op obj list) +(define (%mem/search access op obj list) "(%member obj list function) Helper method to get first list where car equal to obj - using provied functions as comparator." + using provided function as comparator." (if (null? list) false - (if (op (acces list) obj) + (if (op (access list) obj) list - (%mem/search acces op obj (cdr list))))) + (%mem/search access op obj (cdr list))))) ;; ----------------------------------------------------------------------------- (define (memq obj list) @@ -2203,8 +2203,8 @@ (%mem/search car equal? obj list)) ;; ----------------------------------------------------------------------------- -(define (%assoc/acessor name) - "(%assoc/acessor name) +(define (%assoc/accessor name) + "(%assoc/accessor name) Returns carr with typecheck using give name." (lambda (x) @@ -2218,7 +2218,7 @@ Generic function that used in assoc functions with defined comparator function." (typecheck "assoc" alist (vector "nil" "pair")) - (let ((ret (%mem/search (%assoc/acessor "assoc") op obj alist))) + (let ((ret (%mem/search (%assoc/accessor "assoc") op obj alist))) (if ret (car ret) ret))) @@ -2483,7 +2483,7 @@ (define (integer->char n) "(integer->char chr) - Function that converts number argument to chararacter." + Function that converts number argument to character." (typecheck "integer->char" n "number") (if (integer? n) (string-ref (String.fromCodePoint n) 0) @@ -2491,7 +2491,7 @@ ;; ----------------------------------------------------------------------------- (define-macro (%define-chr-re spec str re) - "(%define-chr-re (name chr) sring re) + "(%define-chr-re (name chr) string re) Macro defines the procedure that tests character against regular expression." `(define ,spec @@ -2528,7 +2528,7 @@ "(%char-cmp name a b) Function that compares two characters and return 0 if they are equal, - -1 second is smaller and 1 if is larget. The function compare + -1 second is smaller and 1 if is larger. The function compare the codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) @@ -2578,7 +2578,7 @@ "(%char-cmp name a b) Function that compares two characters and return 0 if they are equal, - -1 second is smaller and 1 if is larget. The function compare + -1 second is smaller and 1 if is larger. The function compare the codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) @@ -2781,7 +2781,7 @@ [else result3]) Macro for switch case statement. It test if value is any of the item. If - item match the value it will return coresponding result expression value. + item match the value it will return corresponding result expression value. If no value match and there is else it will return that result.") ;; ----------------------------------------------------------------------------- @@ -2791,7 +2791,7 @@ (define (numerator n) "(numerator n) - Return numberator of rational or same number if n is not rational." + Return numerator of rational or same number if n is not rational." (typecheck "numerator" n "number") (cond ((integer? n) n) ((rational? n) n.__num__) @@ -3042,7 +3042,7 @@ "(scheme-report-environment version) Returns new Environment object for given Scheme Spec version. - Only argument 5 is supported that create environemnt for R5RS." + Only argument 5 is supported that create environment for R5RS." (typecheck "scheme-report-environment" version "number") (case version ((5) (%make-env "R5RS" * + - / < <= = > >= abs acos and angle append apply asin assoc assq assv @@ -3077,7 +3077,7 @@ ;; Implementation of byte vector functions - SRFI-4 and SRFI-160 ;; ;; original code was based on https://small.r7rs.org/wiki/NumericVectorsCowan/17/ -;; latest verion is defined in +;; latest version is defined in ;; https://srfi.schemers.org/srfi-160/srfi-160.html ;; ;; it uses JavaScript typed arrays @@ -3162,7 +3162,7 @@ (define (,vector-ref vector k) ,(format "(~a vector k) - Returns value frome vector at index k. If index is out of range it throw exception." + Returns value from vector at index k. If index is out of range it throw exception." vector-ref help) (typecheck ,(symbol->string vector-ref) vector ,l-type) @@ -3247,7 +3247,7 @@ (define (symbol=? . args) "(symbol=? s1 s2 ...) - Checks if each value is symbol and it's the same acording to string=? predicate." + Checks if each value is symbol and it's the same according to string=? predicate." (list-match? (lambda (a b) (and (symbol? a) (symbol? b) (equal? a b))) args)) @@ -3567,7 +3567,7 @@ (lambda args #f)))) ((define-values (var) expr) (define var expr)) - ((define-values (var0 var1 ... varn) expr) + ((define-values (var0 var1 ... warn) expr) (begin (define var0 (call-with-values (lambda () expr) @@ -3576,11 +3576,11 @@ (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... - (define varn + (define warn (let ((v (cadr var0))) (set! var0 (car var0)) v)))) - ((define-values (var0 var1 ... . varn) expr) + ((define-values (var0 var1 ... . warn) expr) (begin (define var0 (call-with-values (lambda () expr) @@ -3589,7 +3589,7 @@ (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... - (define varn + (define warn (let ((v (cdr var0))) (set! var0 (car var0)) v)))) @@ -4130,7 +4130,7 @@ (define (flush-output-port port) "(flush-output-port port) - Functio do nothing, flush is not needed in LIPS in both NodeJS and Browser. + Function do nothing, flush is not needed in LIPS in both NodeJS and Browser. The function is added, so it don't throw exception when using R7RS code." (if #f #f)) @@ -4460,7 +4460,7 @@ (define (error-object? obj) "(error-object? obj) - Checks if object is of Error object throwed by error function." + Checks if object is of Error object thrown by error function." (instanceof lips.Error obj)) ;; ----------------------------------------------------------------------------- @@ -4483,17 +4483,17 @@ (define (get-environment-variables) "(get-environment-variables) - Returns all process environment variables as an alist. This funtion throws exception + Returns all process environment variables as an alist. This function throws exception when called in browser." (if (eq? self window) - (throw "get-environment-variables: Node.js only funtion") + (throw "get-environment-variables: Node.js only function") (object->alist process.env))) ;; ----------------------------------------------------------------------------- (define (get-environment-variable name) "(get-environment-variable name) - Returns given environment variable. This funtion throws exception + Returns given environment variable. This function throws exception when called in browser." (. process.env name)) @@ -4515,7 +4515,7 @@ (define (current-jiffy) "(current-jiffy) - Retturn corrent jiffy. In LIPS is jiffy since start of the process. + Return current jiffy. In LIPS is jiffy since start of the process. You can divide this value by (jiffies-per-second) to get seconds since start of the process. And you can add %%start-jiffy to get jiffy since January 1, 1970." @@ -4538,7 +4538,7 @@ (resolve (BrowserFS.BFSRequire "fs")) (reject e))))))) ((not (null? self.BrowserFS)) - (console.warn (string-append "BrowserFS is not initilalized and " + (console.warn (string-append "BrowserFS is not initialized and " "IndexedDB is not available")) nil))) (Buffer (cond ((eq? self global) diff --git a/dist/std.xcb b/dist/std.xcb index d3fac140..0437260a 100644 Binary files a/dist/std.xcb and b/dist/std.xcb differ diff --git a/dist/std.xcm b/dist/std.xcm index 5c69b778..8e7226b7 100644 --- a/dist/std.xcm +++ b/dist/std.xcm @@ -1 +1 @@ -[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__doc__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"replace"},{"@":0,"#":[{},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-syntax"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(let-syntax ((name fn)) body)\n\n Macro works like combination of let and define-syntax. It creaates\n local macros and evaluate body in context of those macros.\n The macro to letrec-syntax is like letrec is to let."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"let-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(letrec-syntax ((name fn)) body)\n\n Macro works like combination of letrec and define-syntax. It creaates\n local macros and evaluate body in context of those macros."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"letrec-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-syntax name expression [__doc__])\n\nMacro define new hygienic macro using syntax-rules with optional documentation"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"define-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(quoted-symbol? code)\n\nHelper function that test if value is quoted symbol. To be used in macros\nthat pass literal code that is transformed by parser.\n\nusage:\n\n (define-macro (test x)\n (if (quoted-symbol? x)\n `',(cadr x)))\n\n (list 'hello (test 'world))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"code"}]}]},{"@":0,"#":[{"@":4,"#":"Helper macro that simplify calling methods on objects. It work with chaining\n\nusage: (--> ($ \"body\")\n (css \"color\" \"red\")\n (on \"click\" (lambda () (display \"click\"))))\n\n (--> document (querySelectorAll \"div\"))\n\n (--> (fetch \"https://jcubic.pl\")\n (text)\n (match #/([^<]+)<\\/title>/)\n 1)\n \n (--> document\n (querySelectorAll \".cmd-prompt\")\n 0\n 'innerHTML\n (replace #/<(\"[^\"]+\"|[^>])+>/g \"\"))\n\n (--> document.body\n (style.setProperty \"--color\" \"red\"))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[true,{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":"."},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-global"},{"@":0,"#":[{"@":3,"#":"first"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(define-global var value)\n(define-global (name . args) body)\n\nMacro that define functions or variables in global context, so they can be used\ninside let and get let variables in closure, Useful for universal macros."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"globalize"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(globalize expr)\n\n Macro will get the value of the expression and add each method as function to global\n scope."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eval"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"env-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pre"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"pre"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"match"},{"@":0,"#":[{"@":3,"#":"/^_/"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-global"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-name"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"single"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(single list)\n\nFunction check if argument is list with single element"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iterator?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(iterator? x)\n\n Function check if value is JavaScript iterator object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Symbol.iterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(.. foo.bar.baz)\n\nMacro that gets value from nested object where argument is comma separated symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parts"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"single"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#:"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"gensym-interal"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym-interal"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(gensym-interal symbol)\n\nParser extension that create new quoted named gensym."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(plain-object? x)\n\nFunction check if value is plain JavaScript object. Created using object macro."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":"object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"Object"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"TypedArray"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getPrototypeOf"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"o"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(typed-array? o)\n\nFunction test if argumnet is JavaScript typed array (Scheme byte vector)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"TypedArray"},{"@":0,"#":[{"@":3,"#":"o"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(symbol->string symbol)\n\nFunction convert LIPS symbol to string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"s.__name__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->symbol string)\n\nFunction convert string to LIPS symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%as.data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":4,"#":"LSymbol"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(alist->object alist)\n\nFunction convert alist pairs to JavaScript object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist.to_object"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Pair"},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frames"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(parent.frames)\n\nFuncion return list of environments from parent frames (lambda function calls)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":":throwError"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(pair-map fn list)\n\nFunction call fn argument for pairs in a list and return combined list with\nvalues returned from function fn. It work like the map but take two items from list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"second"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":3,"#":"second"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(object-expander reaonly '(:foo (:bar 10) (:baz (1 2 3))))\n\nRecursive function helper for defining LIPS code for create objects\nusing key like syntax."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"msg"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" is not a symbol!"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":3,"#":"msg"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"quot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.freeze"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":3,"#":"expr"}]},{"@":0,"#":[{"@":4,"#":"(object :name value)\n\nMacro that create JavaScript object using key like syntax."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[false,{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-literal"},{"@":3,"#":"expr"}]},{"@":0,"#":[{"@":4,"#":"(object-literal :name value)\n\nMacro that create JavaScript object using key like syntax. This is similar,\nto object but all values are quoted. This macro is used with & object literal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[true,{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->assign"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":3,"#":"sources"}]}]},{"@":0,"#":[{"@":4,"#":"(alist->assign alist . list-of-alists)\n\nFunction that work like Object.assign but for LIPS alist."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append!"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"sources"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"desc"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(key? symbol)\n\nFunction check if symbol is key symbol, have colon as first character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":":"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(key->string symbol)\n\nIf symbol is key it convert that to string - remove colon."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%as.data"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%as.data obj)\n\nMark object as data to stop evaluation."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%hidden-props"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%hidden-props obj)\n\nFunction return hidden names of an object, for ES6 class prototype\nit return all methods since they are indistinguishable from hidden property\ncreated using defineProperty."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyDescriptors"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"descriptor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"descriptor.enumerable"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dir"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(dir obj)\n\nFunction return all props on the object including those in prototype chain."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"Object.prototype"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proto"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyNames"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"proto"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"hidden"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%hidden-props"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"hidden.includes"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dir"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getPrototypeOf"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(tree-map fn tree)\n\nTree version of map. Function is invoked on every leaf."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"native.number"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(native.number obj)\n\nIf argument is number it will convert to native number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(value obj)\n\nFunction unwrap LNumbers and convert nil value to undefined."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-formatter-rule"},{"@":3,"#":"patterns"}]},{"@":0,"#":[{"@":4,"#":"(rule-pattern pattern)\n\nAnaphoric Macro for defining patterns for formatter. With Ahead, Pattern and * defined values."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"rules"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.Formatter.rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"lips.Formatter.Ahead"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"*"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Pattern"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Formatter.Pattern"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"native.number"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"patterns"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"else"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"else1"},{"@":0,"#":[{"@":3,"#":"else2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[true,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"else1"},{"@":0,"#":[{"@":3,"#":"else2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"receiver"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"generator"},{"@":0,"#":[{"@":3,"#":"guard"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"generator"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"guard"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"body1"},{"@":0,"#":[{"@":3,"#":"body2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body1"},{"@":0,"#":[{"@":3,"#":"body2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(cond (predicate? . body)\n (predicate? . body)\n (else . body))\n\nMacro for condition checks. For usage instead of nested ifs."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(cond/maybe-more test consequent ...)\n\nHelper macro used by cond."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":3,"#":"list"}]},{"@":0,"#":[{"@":4,"#":"(cond (predicate? . body)\n (predicate? . body))\nMacro for condition check. For usage instead of nested ifs."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"forms"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"forms"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"else"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%r"},{"@":0,"#":[{"@":3,"#":"re"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(%r re)\n\nCreate new regular expression from string, to not break Emacs formatting"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(interaction-environment)\n\nFunction return interaction environement equal to lips.env can be overwritten,\nwhen creating new interpreter with lips.Interpreter."},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(current-output-port)\n\nFunction return default stdout port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stdout"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-error-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(current-output-port)\n\nFunction return default stdout port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stderr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"current-input-port)\n\nFunction return default stdin port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stdin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(regex? x)\n\nFunction return true of value is regular expression, it return false otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":"regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(add-repr! type fn)\n\nFunction add string represention to the type, which should be constructor function.\n\nFunction fn should have args (obj q) and it should return string, obj is vlaue that\nneed to be converted to string, if the object is nested and you need to use `repr`,\nit should pass second parameter q to repr, so string will be quoted when it's true.\n\ne.g.: (lambda (obj q) (string-append \"<\" (repr obj q) \">\"))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"add-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"add-repr!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ignore"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unset-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(unset-repr! type)\n\nFunction remove string represention to the type, which should be constructor function,\nadded by add-repr! function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"unset-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ignore"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"delete"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"&"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"object-literal"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"&("},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyNames"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":":"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":")"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bound? x [env])\n\nFunction check if variable is defined in given environement or interaction environment\nif not specified."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(environment-bound? env symbol)\n\nFunction check if symbol is bound variable similar to bound?."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":4,"#":"environment"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"e"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(qsort list predicate)\n\nSort the list using quick sort alorithm according to predicate."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"e"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(sort list [predicate])\n\nSort the list using optional predicate function. if not function is specified\nit will use <= and sort in increasing order."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"sort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"sort"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(every fn list)\n\nFunction call function fn on each item of the list, if every value is true\nit will return true otherwise it return false."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":3,"#":"body"}]},{"@":0,"#":[{"@":4,"#":"(promise . body)\n\nAnaphoric macro that expose resolve and reject functions from JS promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"timer"},{"@":0,"#":[{"@":3,"#":"time"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(timer time . body)\n\nMacro evaluate expression after delay, it return timer. To clear the timer you can use\nnative JS clearTimeout function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"setTimeout"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"time"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"wait"},{"@":0,"#":[{"@":3,"#":"time"},{"@":3,"#":"expr"}]}]},{"@":0,"#":[{"@":4,"#":"(wait time . expr)\n\nFunction return promise that will resolve with evaluating the expression after delay."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"timer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"time"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"await"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(await value)\n\nFunction unquote quoted promise so it can be automagicaly evaluated (resolved\nto its value)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.QuotedPromise"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value.valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote-promise"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(quote-promise expr)\n'>expr\n\nMacro used to escape promise the whole expression, will be wrapped\nwith JavaScript class that behave like Promise but will not\nauto resolve like normal promise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"__promise__"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"defmacro?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(defmacro? expression)\n\nFunction check if object is macro and it's expandable."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"macro?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"defmacro"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(n-ary n fn)\n\nReturn new function that limit number of arguments to n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"take"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"take"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(take n list)\n\nReturn n first values of the list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(unary fn)\n\nFunction return new function with arguments limited to one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(binary fn)\n\nFunction return new function with arguments limited to two."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(class-lambda expr)\n\nReturn lambda expression where input expression lambda have `this` as first argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"this"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%class-lambda expr)\n\nDefine lambda that have self is first argument. The expr is in a form:\n(constructor (lambda (self ...) . body)) as given by define-class macro."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdadadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"this"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-method-name"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%class-method-name expr)\n\nHelper function that allow to use [Symbol.asyncIterator] inside method name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-class name parent . body)\n\nDefine class - JavaScript function constructor with prototype.\n\nusage:\n\n (define-class Person Object\n (constructor (lambda (self name)\n (set-obj! self '_name name)))\n (hi (lambda (self)\n (display (string-append self._name \" say hi\"))\n (newline))))\n (define jack (new Person \"Jack\"))\n (jack.hi)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"functions"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"__class__"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.create"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-method-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"functions"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":3,"#":"functions"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"functions"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"class"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"class: parent required"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"temp"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"temp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(class <parent> body ...)\n\nMacro allow to create anonymous classes. See define-class for details."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(make-tags expression)\n\nFunction that return list structure of code with better syntax then raw LIPS"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"val"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"car"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"s"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdaddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(%sxml h expr)\n\nHelper function that render expression using create element function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"@"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"attrs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pragma->sxml"},{"@":0,"#":[{"@":3,"#":"pragma"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sxml"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(sxml expr)\n\nMacro for JSX like syntax but with SXML.\ne.g. usage:\n\n(sxml (div (@ (data-foo \"hello\")\n (id \"foo\"))\n (span \"hello\")\n (span \"world\")))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pragma"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pragma->sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(with-tags expression)\n\nMacro that evalute LIPS shorter code for S-Expression equivalent of JSX.\ne.g.:\n\n(with-tags (:div (:class \"item\" :id \"item-1\")\n (list (:span () \"Random Item\")\n (:a (:onclick (lambda (e) (alert \"close\")))\n \"close\"))))\n\nAbove expression can be passed to function that renders JSX (like render in React, Preact)\nTo get the string from the macro you can use vhtml library from npm."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-script"},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-script url)\n\nLoad JavaScript file in browser by adding script tag to head of the current document."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"document"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"get-script: document not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"document.createElement"},{"@":0,"#":[{"@":4,"#":"script"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"src"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"onload"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"onerror"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":4,"#":"get-script: Failed to load"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"document.head"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"document.head.appendChild"},{"@":0,"#":[{"@":3,"#":"script"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(gensym? value)\n\nFunction return #t if value is symbol and it's gensym. It returns #f otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"is_gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"degree->radians"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(degree->radians x)\n\nConvert degree to radians."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"Math.PI"},{"@":0,"#":[{"@":1,"#":"180"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"radians->degree"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(radians->degree x)\n\nConvert radians to degree."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":1,"#":"180"},{"@":0,"#":[{"@":3,"#":"Math.PI"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(while cond . body)\n\nMacro that create a loop, it exectue body until cond expression is false."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"++"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"++"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(++ variable)\n\nMacro that work only on variables and increment the value by one."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"--"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"--"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(-- variable)\n\nMacro that decrement the value it work only on symbols"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pretty-format"},{"@":3,"#":"lists"}]},{"@":0,"#":[{"@":4,"#":"(pretty-format pair)\n\nFunction return pretty printed string from pair expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"lists"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"pretty-pair"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Formatter"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"break"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reset"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(reset)\n\nFunction reset environment and remove all user defined variables."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"defaults"},{"@":0,"#":[{"@":3,"#":"**interaction-environment-defaults**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"forEach"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"defaults"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"includes"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unset"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-list"},{"@":0,"#":[{"@":3,"#":"n"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"make-list: first argument need to be integer larger then 0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"range"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(range n)\n\nFunction return list of n numbers from 0 to n - 1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"range"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do-iterator"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(do-iterator (var expr) (test) body ...)\n\nMacro iterate over iterators (e.g. create with JavaScript generator function)\nit works with normal and async iterators. You can loop over infinite iterators\nand break the loop if you want, using expression like in do macro, long sync iterators\nwill block main thread (you can't print 1000 numbers from inf iterators,\nbecause it will freeze the browser), but if you use async iterators you can process\nthe values as they are generated."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gen"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"async"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sync"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iterator"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"iterator"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"next"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"stop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"stop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"Symbol.iterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"Symbol.asyncIterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"next"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"done"},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"#<Set>"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"#<Met>"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"native-symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(native-symbol? object)\n\nFunction check if value is JavaScript symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"’"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"warn-quote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"warn-quote"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(warn-quote)\n\nSimple macro that throw error, when you try to use ’ symbol as quote in code"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"You're using invalid quote character run: "},{"@":0,"#":[{"@":4,"#":"(set-special! \"’\" 'quote)"},{"@":0,"#":[{"@":4,"#":" to allow running this type of quote"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env-values"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(let-env-values env ((name var)) . body)\n\nMacro add mapping for variables var from specified env,\nMacro work similar to let-env but lexical scope is working with it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apropos"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(apropos name)\n\nSearch environment and display names that match the given name.\nname can be regex, string or symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"apropos"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":4,"#":"regex"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"escape-regex"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(promisify fn)\n\nSimple function for adding promises to NodeJS callback based function.\nFunction tested only with fs module."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list*"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(list* arg1 ...)\n\nParallel version of list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"await"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%not-implemented"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(not-implemented name)\n\nReturns new function taht throw exception that function is not implmeneted"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"("},{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":4,"#":")\n\nThis function is not yet implemented."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":4,"#":" has not beed implemented"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-env"},{"@":0,"#":[{"@":3,"#":"name"},{"@":3,"#":"names"}]}]},{"@":0,"#":[{"@":4,"#":"(%make-env name f1 f2 ...)\n\nCreate new Environment with given name and defined symbols in it from global env.\nIf given function name f1 f2 ... don't exists, it will define function that\nthrow exception that function is not yet implemented."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.ref"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"ref"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%not-implemented"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"null"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"Y"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(Y f)\n\n _ __ __ _ _ _ _ __ __ _ _ _\n / \\ \\ / / / __ / ____ \\ / \\ \\ / / ____ \\ \\ \\\n+ \\ v / + \\ \\ + / ___| + + \\ v / / ___| + + +\n| \\ / | \\ \\ | | |__ | | \\ / | |__ | | |\n| | | | / \\ | | __| | | | | | __| | | |\n| | | | / /\\ \\ | | | | | | | | | | | |\n+ |_| + /_/ \\_\\ + |_| + + |_| |_| + + +\n \\_ \\_ \\_ _/ \\_ _/ _/ _/"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"g"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"g"},{"@":0,"#":[{"@":3,"#":"g"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexed-db?"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(indexed-db?)\n\nFunction test if indexedDB is available."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"any"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexedDB"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"any"},{"@":0,"#":[{"@":3,"#":"window.indexedDB"},{"@":0,"#":[{"@":3,"#":"window.indexedDB"},{"@":0,"#":[{"@":3,"#":"window.mozIndexedDB"},{"@":0,"#":[{"@":3,"#":"window.webkitIndexedDB"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"indexedDB"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"window.indexedDB.open"},{"@":0,"#":[{"@":4,"#":"MyTestDatabase"},{"@":0,"#":[{"@":1,"#":"3"},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(environment? obj)\n\nFunction check if object is LIPS environment."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%read-file binary path)\n\nRead file from url or file system. If binary is false it will return\nstring that contain all the content. For HTTP requests, If binary\nis false it will: when in browser return ArrayBuffer and in Node\nit will return Buffer object. When reading from file system\nin both cases it will return Buffer objects.\n\nThe code that use those function, in binary mode, need to check\nif the result is ArrayBuffer or Node.js/BrowserFS Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"read-file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-input-file: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*read-file*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*read-file*"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Blob"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"buff"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"buff"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"buff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch"},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.arrayBuffer"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.text"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"http-get"},{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":5,"#":"/"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"file "},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":4,"#":" don't exists"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-directory"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-binary-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-text-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"message"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(%fs-promisify-proc fn string)\n\nFunction return promisified version of fs function or throw exception\nif fs is not available."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":4,"#":": fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(response->text binary res)\n\nFunction read all text from Node.js HTTP response object. If binary argument\nis true it will return Buffer object that can be converted to u8vector.\n\n***Warrning:*** it may overflow the stack (part of Node) when converting\nwhole buffer to u8vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer.from"},{"@":0,"#":[{"@":3,"#":"chunk"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.push"},{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.setEncoding"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":0,"#":[{"@":4,"#":"utf8"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.on"},{"@":0,"#":[{"@":4,"#":"data"},{"@":0,"#":[{"@":3,"#":"append"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.on"},{"@":0,"#":[{"@":4,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer.concat"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"response->buffer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"response->text"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"http-get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(http-get url)\n\nNode.js Function that send HTTP Request and return string or\nbinary Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"http-get: function is Node.js only."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"http"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"http"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"https"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"https"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(http-get url)\n\nNode.js Function that send HTTP Request and return string or\nbinary Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"request"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url.match"},{"@":0,"#":[{},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"http"},{"@":0,"#":[{"@":3,"#":"https"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"request"},{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"res.statusCode"},{"@":0,"#":[{"@":1,"#":"200"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":0,"#":[{"@":3,"#":"res.statusCode"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.resume"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"Request return "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"on"},{"@":0,"#":[{"@":4,"#":"error"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buffer->u8vector"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(buffer->u8vector bin)\n\nCross platform function that can be used in both Node and Browser.\nIt can be used together with %read-file or %read-binary-file and convert\nthe result ArrayBuffer or Buffer to u8vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"ArrayBuffer"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Uint8Array.from"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complement"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(complement fn)\n\nHiger order function that returns complement of the given function. If the function fn\nfor a given arguments return true the result function will return false, if it would\nreturn false, the result function will return true."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"complement"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"always"},{"@":0,"#":[{"@":3,"#":"constant"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(always constant)\n\nHigher order function returns new function that always return given constant."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"constant"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"once"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(once fn)\n\nHigher order function that return new function, that is guarantee\nto be called only once."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"once"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"undefined"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"flip"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(flip fn)\n\nHigher order function that return new function where first two arguments are swapped.\n\nExample:\n\n (define first (curry (flip vector-ref) 0))\n (first #(1 2 3))\n ;; ==> 1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"flip"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unfold"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"init"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(unfold fn init)\n\nFunction returns list from given function and init value. The function should\nreturn cons where first is the item added to the list and second is next value\npassed to the funtion. If function return false it end the loop."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"unfold"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"init"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"concat"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"=="},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"%"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"-inf.0"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"+inf.0"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"function?"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":3,"#":"**"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"list->array"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"array->list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-symbol-macro"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-symbol-macro type (name . args) . body)\n\nMacro that creates special symbol macro for evaluator similar to build in , or `.\nIt's like alias for real macro. Similar to CL reader macros but it receive already\nparsed code like normal macros. Type can be SPLICE or LITERAL symbols.\nALL default symbol macros are literal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"lips.specials."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"vector-literal"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-literal"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"Parse Error: vector require pair got "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" in "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.freeze"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector 1 2 3 (+ 3 1))\n#(1 2 3 4)\n\nMacro for defining vectors (JavaScript arrays). Vectors literals are\nautomatically quoted. So you can use expressions inside them. Only other\nliterals, like other vectors or object."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arr"},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"arr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"in"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"arr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"#<empty>"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"arr"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"#("},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":")"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(eqv? a b)\n\nFunction compare the values. It return true if they are the same, they\nneed to have same type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a.isNaN"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"b.isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"a._minus"},{"@":0,"#":[{"@":3,"#":"b._minus"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(equal? a b)\n\nFunction check if values are equal if both are pair or array\nit compares the their elements recursivly."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a.__name__"},{"@":0,"#":[{"@":3,"#":"b.__name__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%same-functions"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"make-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(make-promise fn)\n\nFunction create promise from a function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-promise"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"promise"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"promise.toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<promise - "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"forced with "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"not forced"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":">"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"delay"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(delay expression)\n\nMacro will create a promise from expression that can be forced with (force)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"force"},{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(force promise)\n\nFunction force the promise and evaluate delayed expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(promise? obj)\n\nFunction check if value is a promise created with delay or make-promise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"promise"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(positive? x)\n\nFunction check if number is larger then 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(negative? x)\n\nFunction check if number is smaller then 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(zero? x)\n\nFunction check if number is equal to 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(quotient a b)\n\nReturn quotient from divition as integer."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"quotient: divition by zero"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ceiling"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(number->string x [radix])\n\nFunction convert number to string with optional radix (number base)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"10"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(boolean? x)\n\nFunction return true if value is boolean."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"boolean"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-ref vector i)\n\nReturn i element from vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-set! vector i obj)\n\nSet obj as value in vector at position 1."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"x.__type__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"some"},{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(real? x)\n\nFunction check if argument x is real."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(integer? x)\n\nFunction check if argument x is integer."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(complex? x)\n\nFunction check if argument x is complex."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(rational? x)\n\nFunction check if value is rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck-args"},{"@":0,"#":[{"@":3,"#":"_type"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(typecheck-args args type)\n\nFunction check if all items in array are of same type."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_list"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"_type"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"typecheck-args"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"max"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(max n1 n2 ...)\n\nReturn maximum of it's arguments."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":4,"#":"max"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"Math.max"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"min"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(min n1 n2 ...)\n\nReturn minimum of it's arguments."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":4,"#":"min"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"Math.min"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":3,"#":"im"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(make-rectangular im re)\n\nCreate complex number from imaginary and real part."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"im"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LComplex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"to_object"},{"@":0,"#":[true,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact? n)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"n.__type__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n.__im__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n.__re__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(inexact? n)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact->inexact n)\n\nConvert exact number to inexact."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LComplex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":":im"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__im__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":":re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__re__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LFloat"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(inexact->exact number)\n\nFuncion convert real number to exact ratioanl number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toRational"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"_maths"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"exp"},{"@":0,"#":[{"@":4,"#":"log"},{"@":0,"#":[{"@":4,"#":"sin"},{"@":0,"#":[{"@":4,"#":"cos"},{"@":0,"#":[{"@":4,"#":"tan"},{"@":0,"#":[{"@":4,"#":"asin"},{"@":0,"#":[{"@":4,"#":"acos"},{"@":0,"#":[{"@":4,"#":"atan"},{"@":0,"#":[{"@":4,"#":"atan"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"_this_env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fns"},{"@":0,"#":[{"@":3,"#":"_maths"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"LNumber"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"lips.LNumber"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"Math"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"LNumber"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"_this_env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__doc__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"("},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" n)\n\nFunction calculate "},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" math operation (it call JavaScript Math)."},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" function."},{"@":2,"#":0}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(modulo a b)\n\nFunction return modulo operation on it's argumennts."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder__"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(modulo a b)\n\nFunction return reminder from division operation."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-tail list k)\n\nReturns the sublist of list obtained by omitting the first k elements."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: index out of range"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-tail: not enough elements in the list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-ref list n)\n\nReturns n element of a list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: index out of range"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: not enough elements in the list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(not x)\n\nFunction return true if value is false and false otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[false,{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(rationalize number tolerance)\n\nFunction returns simplest rational number differing from number by no more\nthan the tolerance."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%member obj list function)\n\nHelper method to get first list where car equal to obj\nusing provied functions as comparator."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memq"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(memq obj list)\n\nFunction return first object in the list that match using eq? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"memq"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(memv obj list)\n\nFunction return first object in the list that match using eqv? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"memv"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"member"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(member obj list)\n\nFunction return first object in the list that match using equal? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"member"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/acessor"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%assoc/acessor name)\n\nFunction return carr with typecheck using give name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%assoc/search op obj alist)\n\nGeneric function that used in assoc functions with defined comparator\nfunction."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ret"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/acessor"},{"@":0,"#":[{"@":4,"#":"assoc"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"ret"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"ret"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"ret"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assoc obj alist)\n\nFunction return pair from alist that match given key using equal? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assq"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assq obj alist)\n\nFunction return pair from alist that match given key using eq? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assv"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assv obj alist)\n\nFunction return pair from alist that match given key using eqv? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(make-string k [char])\n\nFunction return new string with k elements, if char is provied\nit's filled with that character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":5,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(string chr1 chr2 ...)\n\nFunction create new string from it's arguments. Each argument\nNeed to be a character object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-copy string)\n\nReturns a copy of the given string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"clone"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-fill! symbol char)\n\nFunction destructively fill the string with given character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"identity"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(identity n)\n\nNo op function. it just returns its argument."},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-copy x)\n\nCreate new string based of given argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LString"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(list->string _list)\n\nFunction return string from list of characters."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->list string)\n\nFunction return list of characters created from string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":"index"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-set! object index char)\n\nMacro that replace character in string in given index, it create new JavaScript\nstring and replace old value. Object need to be symbol that point to variable\nthat hold the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chars"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"chars"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"index"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"index"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-length string)\n\nFunction return length of the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ref string k)\n\nFunction return character inside string at given zero-based index."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%string-cmp name a b)\n\nFunction compare two strings and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string=? string1 string2)\n\nFunction check if two string s are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%string-ci-cmp name a b)\n\nFunction compare two strings ingoring case and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lower"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lower"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci=? string1 string2)\n\nFunction check if two string s are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci>=? string1 string2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"char?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(char? obj)\n\nFunction check if object is character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char->integer chr)\n\nFunction return codepoint of Unicode character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"chr.__char__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"codePointAt"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(integer->char chr)\n\nFunction convert number argument to chararacter."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"String.fromCodePoint"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":4,"#":"argument to integer->char need to be integer."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":0,"#":[{"@":3,"#":"str"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%define-chr-re (name chr) sring re)\n\nMacro define procedure that test character agains regular expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"match"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-whitespace?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-whitespace? chr)\n\nFunction return true if character is whitespace."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"space-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-numeric? chr)\n\nFunction return true if character is number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"numeral-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-alphabetic? chr)\n\nFunction return true if character is leter of the ASCII alphabet."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"letter-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%char-cmp name a b)\n\nFunction compare two characters and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char=? chr1 chr2)\n\nFunction check if two characters are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%char-cmp name a b)\n\nFunction compare two characters and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci=? chr1 chr2)\n\nFunction check if two characters are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upcase char)\n\nCreate uppercase version of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.toUpperCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-downcase chr)\n\nCreate lowercase version of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upper-case? char)\n\nFunction check if character is upper case."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upper-case? char)\n\nFunction check if character is lower case."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"newline"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(newline [port])\n\nWrite newline character to standard output or given port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":4,"#":"\n"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write obj [port])\n\nWrite object to standard output or give port. For strings it will include\nwrap in quotes."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-char char [port])\n\nWrite single character to given port using write function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"fold-right"},{"@":0,"#":[{"@":3,"#":"reduce"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"fold-left"},{"@":0,"#":[{"@":3,"#":"fold"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"n"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(make-vector n [fill])\n\nCreate new vector with n empty elements. If fill is specified it will set\nall elements of the vector to that value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector? n)\n\nFunction return true of value is vector and false if not."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-ref vec n)\n\nFunction return nth element of the vector vec."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-set! vec n value)\n\nFunction set nth item of the vector to value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-fill! vec value)\n\nSet every element of the vector to given value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector-length vec)\n\nFunction return length of the vector. If argument is not vector it throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atom-key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"atom-key"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(case value\n ((<items>) result1)\n ((<items>) result2)\n [else result3])\n\nMacro for switch case statement. It test if value is any of the item. If\nitem match the value it will return coresponding result expression value.\nIf no value match and there is else it will return that result."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.Formatter.defaults.exceptions.specials"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":4,"#":"case"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(numerator n)\n\nReturn numberator of rational or same number if n is not rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.num"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(denominator n)\n\nReturn denominator of rational or same number if one is not rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.denom"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":0,"#":[{"@":1,"#":1},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(imag-part n)\n\nReturn imaginary part of the complex number n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.__im__"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(real-part n)\n\nReturn real part of the complex number n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.__re__"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(make-polar magnitude angle)\n\nCreate new complex number from polar parameters."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"make-polar: argument can't be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sin"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cos"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(angle x)\n\nReturns angle of the complex number in polar coordinate system."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"angle: number need to be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Math.atan2"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"magnitude"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(magnitude x)\n\nReturns magnitude of the complex number in polar coordinate system."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"magnitude: number need to be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sqrt"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"random"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":1,"#":"69069"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"c"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"m"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":1,"#":"2"},{"@":0,"#":[{"@":1,"#":"32"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":1,"#":"19380110"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":0,"#":[{"@":4,"#":"(random)\n(random seed)\n\nFunction generate new random real number using Knuth algorithm."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"c"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"m"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":3,"#":"m"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eof-object?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(eof-object? arg)\n\nFunction check if value is eof object, returned from input string\nport when there are no more data to read."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"eof"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(output-port? arg)\n\nFunction return true if argument is output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputPort"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(input-port? arg)\n\nFunction return true if argument is input port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.InputPort"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ready?"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(char-ready?)\n(char-ready? port)\n\nFunction check it characters is ready in input port. This is usefull mostly\nfor interactive ports that return false if it would wait for user input.\nIt return false if port is closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-ready?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.char_ready"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-input-file filename)\n\nFunction return new Input Port with given filename. In Browser user need to\nprovide global fs variable that is instance of FS interface."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-input-file: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_readFile"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputFilePort"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-input-port port)\n\nProcedure close port that was opened with open-input-file. After that\nit no longer accept reading from that port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-output-port port)\n\nProcedure close port that was opened with open-output-file. After that\nit no longer accept write to that port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-input-file filename proc)\n\nProcedure open file for reading, call user defined procedure with given port\nand then close the port. It return value that was returned by user proc\nand it close the port even if user proc throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-output-file filename proc)\n\nProcedure open file for writing, call user defined procedure with port\nand then close the port. It return value that was returned by user proc and it close the port\neven if user proc throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-input-from-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(with-input-from-file string thunk)\n\nProcedure open file and make it current-input-port then thunk is executed.\nAfter thunk is executed current-input-port is restored and file port\nis closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"old-stdin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.get"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":0,"#":[{"@":3,"#":"old-stdin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-output-to-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"old-stdout"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.get"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":0,"#":[{"@":3,"#":"old-stdout"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"file-exists?: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs.stat"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"stat"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"stat.isFile"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-file filename)\n\nFunction open file and return port that can be used for writing. If file\nexists it will throw an Error."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-output-file: file exists"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.OutputFilePort"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"w"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"version"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(scheme-report-environment version)\n\nFunction return new Environment object for given Scheme Spec version.\nOnly argument 5 is supported that create environemnt for R5RS."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"version"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"version"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":1,"#":"5"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-env"},{"@":0,"#":[{"@":4,"#":"R5RS"},{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"abs"},{"@":0,"#":[{"@":3,"#":"acos"},{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"asin"},{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"assq"},{"@":0,"#":[{"@":3,"#":"assv"},{"@":0,"#":[{"@":3,"#":"atan"},{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"caaaar"},{"@":0,"#":[{"@":3,"#":"caaadr"},{"@":0,"#":[{"@":3,"#":"caaar"},{"@":0,"#":[{"@":3,"#":"caadar"},{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"cadaar"},{"@":0,"#":[{"@":3,"#":"cadadr"},{"@":0,"#":[{"@":3,"#":"cadar"},{"@":0,"#":[{"@":3,"#":"caddar"},{"@":0,"#":[{"@":3,"#":"cadddr"},{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"call-with-current-continuation"},{"@":0,"#":[{"@":3,"#":"call-with-input-file"},{"@":0,"#":[{"@":3,"#":"call-with-output-file"},{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"cdaaar"},{"@":0,"#":[{"@":3,"#":"cdaadr"},{"@":0,"#":[{"@":3,"#":"cdaar"},{"@":0,"#":[{"@":3,"#":"cdadar"},{"@":0,"#":[{"@":3,"#":"cdaddr"},{"@":0,"#":[{"@":3,"#":"cdadr"},{"@":0,"#":[{"@":3,"#":"cdar"},{"@":0,"#":[{"@":3,"#":"cddaar"},{"@":0,"#":[{"@":3,"#":"cddadr"},{"@":0,"#":[{"@":3,"#":"cddar"},{"@":0,"#":[{"@":3,"#":"cdddar"},{"@":0,"#":[{"@":3,"#":"cddddr"},{"@":0,"#":[{"@":3,"#":"cdddr"},{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"ceiling"},{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"char-ready?"},{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char-whitespace?"},{"@":0,"#":[{"@":3,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"char?"},{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"cos"},{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"delay"},{"@":0,"#":[{"@":3,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":3,"#":"dynamic-wind"},{"@":0,"#":[{"@":3,"#":"eof-object?"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"eval"},{"@":0,"#":[{"@":3,"#":"even?"},{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"exp"},{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":3,"#":"force"},{"@":0,"#":[{"@":3,"#":"gcd"},{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"lcm"},{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":3,"#":"let-syntax"},{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"list?"},{"@":0,"#":[{"@":3,"#":"load"},{"@":0,"#":[{"@":3,"#":"log"},{"@":0,"#":[{"@":3,"#":"magnitude"},{"@":0,"#":[{"@":3,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"max"},{"@":0,"#":[{"@":3,"#":"member"},{"@":0,"#":[{"@":3,"#":"memq"},{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"min"},{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"newline"},{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"null-environment"},{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"odd?"},{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"peek-char"},{"@":0,"#":[{"@":3,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"read"},{"@":0,"#":[{"@":3,"#":"read-char"},{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"round"},{"@":0,"#":[{"@":3,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"set-car!"},{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"sin"},{"@":0,"#":[{"@":3,"#":"sqrt"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string->number"},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"tan"},{"@":0,"#":[{"@":3,"#":"truncate"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"with-input-from-file"},{"@":0,"#":[{"@":3,"#":"with-output-to-file"},{"@":0,"#":[{"@":3,"#":"write"},{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"zero?"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":1,"#":"7"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"not yet implemented"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"scheme-report-environment: version "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"version"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" not supported"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"prefix"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%make-vector prefix type help)\n\nMega helper macro that create list of functions for single byte vector\nbased on typed array from JavaScript"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"prefix"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"static"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a.~a"},{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"static"},{"@":0,"#":[{"@":4,"#":"from"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"str"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":3,"#":"str"},{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"make-~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"%~avector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"#~a"},{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector->list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"list->~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"vector->~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":2,"#":0}]}]},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a v1 v2 ...)\n\nCreate ~a from give arguments."},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a v)\n\nreturn length of ~a."},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"v.length"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"fill"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a k fill)\n\nAllocate new ~a of length k, with optional initial values."},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a x)\n\nFunction return #t of argument is ~a otherwise it return #f."},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction test if index is range for ~a."},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"len"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction return value frome vector at index k. If index is out of range it throw exception."},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a index out of range"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction set value of ~a at index k. If index is out of range it throw exception."},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a index out of range"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"_quote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"_quote"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u8"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":4,"#":"usigned 8-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s8"},{"@":0,"#":[{"@":3,"#":"Int8Array"},{"@":0,"#":[{"@":4,"#":"signed 8-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u16"},{"@":0,"#":[{"@":3,"#":"Uint16Array"},{"@":0,"#":[{"@":4,"#":"usigned 16-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s16"},{"@":0,"#":[{"@":3,"#":"Int16Array"},{"@":0,"#":[{"@":4,"#":"signed 16-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u32"},{"@":0,"#":[{"@":3,"#":"Uint16Array"},{"@":0,"#":[{"@":4,"#":"usigned 32-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s32"},{"@":0,"#":[{"@":3,"#":"Int16Array"},{"@":0,"#":[{"@":4,"#":"signed 32-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"f32"},{"@":0,"#":[{"@":3,"#":"Float32Array"},{"@":0,"#":[{"@":4,"#":"32-bit IEEE floating point number vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"f64"},{"@":0,"#":[{"@":3,"#":"Float64Array"},{"@":0,"#":[{"@":4,"#":"64-bit IEEE floating point number vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-match? predicate list)\n\nFunction check if consecutive elements of the list match the predicate function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[[{"@":4,"#":"function"},{"@":4,"#":"macro"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(symbol=? s1 s2 ...)\n\nFunction check if each value is symbol and it's the same acording to string=? predicate."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(values-ref values n)\n\nFunction return n value of values object which is result of value function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":4,"#":"values"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"let-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"values"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(let-values binding body ...)\n\nThe macro work similar to let but variable is list of values and value\nneed to evaluate to result of calling values."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(vector-append v1 v2 ...)\n\nFunction return new vector by combining it's arguments that should be vectors."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(%range-function spec . body)\n\nMacro that creates R7RS vector functions that have range start end."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector->list vector)\n(vector->list vector start)\n(vector->list vector start end)\n\nFunction copy given range of vector to list. If no start is specified it use\nstart of the vector, if no end is specified it convert to the end of the vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->list string)\n(string->list string start)\n(string->list string start end)\n\nFunction copy given range of string to list. If no start is specified it use\nstart of the string, if no end is specified it convert to the end of the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string.substring"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector->string vector)\n(vector->string vector start)\n(vector->string vector start end)\n\nFunction return new string created from vector of characters in given range.\nIf no start is given it create string from 0, if no end is given it return\nstring to the end."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-fill! vector fill)\n(vector-fill! vector fill start)\n(vector-fill! vector fill start end)\n\nFill vector with a given value in given range. If start is not given is start\nat 0. If end is not given it fill till the end if the vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->fill!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"let*-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bind"},{"@":0,"#":[{"@":3,"#":"values"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"bind"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(let*-values binding body ...)\n\nThe macro work similar to let* but variable is list of values and value\nneed to evaluate to result of calling values."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient&remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"y"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"y"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor-quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor-remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient&remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate-quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate-remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"case-lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case-lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"params"},{"@":0,"#":[{"@":3,"#":"body0"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":3,"#":":::"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"no matching clause"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":3,"#":"rest"}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":3,"#":"tail"}]}]},{"@":3,"#":"body"}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":3,"#":"tail"}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":3,"#":"rest"}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"params"},{"@":0,"#":[{"@":3,"#":"body0"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(case-lambda expr ...)\n\nMacro create new function with different version of the function depend on\nnumber of arguments. Each expression is similar to single lambda.\n\ne.g.:\n\n (define sum\n (case-lambda\n ((x) x)\n ((x y) (+ x y))\n ((x y z) (+ x y z))))\n\n (sum 1)\n (sum 1 2)\n (sum 1 2 3)\n\nMore arguments will give error."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean=?"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(boolean=? b1 b2 ...)\n\nFunction check if all arguments are boolean and if they are the same."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"boolean=?: too few arguments"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reduce"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"acc"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"acc"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(port? x)\n\nFunction return true of argumet is nput or output port port object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"square"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(square z)\n\nReturns the square of z. This is equivalent to (* z z)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"when"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"when"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(when test body ...)\n\nMacro execute body when test expression is true."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"unless"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unless"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(unless test body ...)\n\nMacro execute body when test expression is false."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"inexact"},{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"exact"},{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact-integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact-integer? n)\n\nFunction returns #t if z is both exact and an integer; otherwise\nreturns #f."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(vector-map fn vector1 vector2 ...)\n\nFunction return new vector from applying function fn to each element\nof the vectors, similar to map for lists."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"vector-map: function require at least 1 vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"min"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"len"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(string-map fn string1 stringr2 ...)\n\nFunction return new string from applying function fn to each element\nof the strings, similar to map for lists."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"string-map: function require at least 1 string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dynamic-wind"},{"@":0,"#":[{"@":3,"#":"before"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":0,"#":[{"@":3,"#":"after"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(dynamic-wind before thunk after)\n\nFunction accept 3 procedures/lambdas and execute thunk with before and always\nafter even if error accur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"before"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"after"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-exception-handler"},{"@":0,"#":[{"@":3,"#":"handler"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(with-exception-handler handler thunk)\n\nProcedure call and return value of thunk function, if exception happen\nit call handler procedure."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"handler"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"raise"},{"@":0,"#":[{"@":3,"#":"throw"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"dummy"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":3,"#":"varn"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"varn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":3,"#":"..."},{"@":3,"#":"varn"}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"varn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-values (a b ...) expr)\n\nFunction evaluate expression expr and if it evaluates to result of values\nthen it will defined each value as variable like with define."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"include"},{"@":3,"#":"files"}]},{"@":0,"#":[{"@":4,"#":"(include file ...)\n\nMacro that load at least one file content and insert them into one,\nbody expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"include: at least one file path required"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":0,"#":[{"@":3,"#":"file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.parse"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"text"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch"},{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"text"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.parse"},{"@":0,"#":[{"@":3,"#":"text"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"result.length"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":4,"#":"step"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"raise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a ~a"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":4,"#":"step"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":4,"#":"Unfulfilled cond-expand"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"req"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"features"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":0,"#":[[{"@":1,"#":"48"},{"@":1,"#":"1632"},{"@":1,"#":"1776"},{"@":1,"#":"1984"},{"@":1,"#":"2406"},{"@":1,"#":"2534"},{"@":1,"#":"2662"},{"@":1,"#":"2790"},{"@":1,"#":"2918"},{"@":1,"#":"3046"},{"@":1,"#":"3174"},{"@":1,"#":"3302"},{"@":1,"#":"3430"},{"@":1,"#":"3558"},{"@":1,"#":"3664"},{"@":1,"#":"3792"},{"@":1,"#":"3872"},{"@":1,"#":"4160"},{"@":1,"#":"4240"},{"@":1,"#":"6112"},{"@":1,"#":"6160"},{"@":1,"#":"6470"},{"@":1,"#":"6608"},{"@":1,"#":"6784"},{"@":1,"#":"6800"},{"@":1,"#":"6992"},{"@":1,"#":"7088"},{"@":1,"#":"7232"},{"@":1,"#":"7248"},{"@":1,"#":"42528"},{"@":1,"#":"43216"},{"@":1,"#":"43264"},{"@":1,"#":"43472"},{"@":1,"#":"43504"},{"@":1,"#":"43600"},{"@":1,"#":"44016"},{"@":1,"#":"65296"},{"@":1,"#":"66720"},{"@":1,"#":"68912"},{"@":1,"#":"69734"},{"@":1,"#":"69872"},{"@":1,"#":"69942"},{"@":1,"#":"70096"},{"@":1,"#":"70384"},{"@":1,"#":"70736"},{"@":1,"#":"70864"},{"@":1,"#":"71248"},{"@":1,"#":"71360"},{"@":1,"#":"71472"},{"@":1,"#":"71904"},{"@":1,"#":"72016"},{"@":1,"#":"72784"},{"@":1,"#":"73040"},{"@":1,"#":"73120"},{"@":1,"#":"92768"},{"@":1,"#":"93008"},{"@":1,"#":"120782"},{"@":1,"#":"120792"},{"@":1,"#":"120802"},{"@":1,"#":"120812"},{"@":1,"#":"120822"},{"@":1,"#":"123200"},{"@":1,"#":"123632"},{"@":1,"#":"125264"},{"@":1,"#":"130032"}],{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"digit-value"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(digit-value chr)\n\nReturn digit number if character is numeral (as per char-numeric?)\nor #f otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"digit-value"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ord"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"found"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"found"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"ord"},{"@":0,"#":[{"@":3,"#":"zero"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":1,"#":"9"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"diff"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"found"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"make-bytevector"},{"@":0,"#":[{"@":3,"#":"make-u8vector"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector?"},{"@":0,"#":[{"@":3,"#":"u8vector?"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"u8vector-length"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-u8-ref"},{"@":0,"#":[{"@":3,"#":"u8vector-ref"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-u8-set!"},{"@":0,"#":[{"@":3,"#":"u8vector-set!"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-append v1 ...)\n\nCreate new bytevector u8vector that is created from joining each argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-copy"},{"@":0,"#":[{"@":3,"#":"v"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-copy v)\n(bytevector-copy v start)\n(bytevector-copy v start end)\n\nFunction and return new vector from start to end. If no start and end is provided\nwhole vector is copied and returned."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":3,"#":"from"},{"@":3,"#":"rest"}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-copy! to at from)\n(bytevector-copy! to at from start)\n(bytevector-copy! to at from start end)\n\nCopies the bytes of bytevector from between start and end to bytevector to,\nstarting at at."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"from"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"bytevector-copy! `at` need to be positive"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"to"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"bytevector-copy! `at` need to be less then byte vector length"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"at"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"to"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"from"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-u8-set!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-u8-ref"},{"@":0,"#":[{"@":3,"#":"from"},{"@":0,"#":[{"@":3,"#":"j"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"string->utf8"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"TextEncoder"},{"@":0,"#":[{"@":4,"#":"utf-8"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(string->utf8 string)\n(string->utf8 string start)\n(string->utf8 string start end)\n\nFunction converts string into u8 bytevector using utf8 encoding.\nThe start and end is the range of the input string for the conversion."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->utf8"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder.encode"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder.encode"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"utf8->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"TextDecoder"},{"@":0,"#":[{"@":4,"#":"utf-8"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(utf8->string u8vector)\n(utf8->string u8vector start)\n(utf8->string u8vector start end)\n\nFunction converts u8 bytevector into string using utf8 encoding.\nThe start and end is the range of the input byte vector for the conversion."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"utf8->string"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder.decode"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder.decode"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-input-string string)\n\nFunction create new string port as input that can be used to\nread S-exressions from this port using `read` function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-input-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputStringPort"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-string"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-string)\n\nFunction create new output port that can used to write string into\nand after finish get the whole string using `get-output-string`."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.OutputStringPort"},{"@":0,"#":[{"@":3,"#":"repr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-bytevector"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-bytevector)\n\nCreate new output port that can be used to write binary data.\nAfter done with the data the output buffer can be obtained by calling\n`get-output-bytevector` function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.OutputByteVectorPort"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-output-bytevector"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-output-string port)\n\nFunction get full string from string port. If nothing was wrote\nto given port it will return empty string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputByteVectorPort"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"get-output-bytevector: expecting output-bytevector-port get "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-output-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-output-string port)\n\nFunction get full string from string port. If nothing was wrote\nto given port it will return empty string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputStringPort"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"get-output-string: expecting output-string-port get "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-bytevector"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-input-bytevector bytevector)\n\nCreate new input binary port with given bytevector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-input-bytevector"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputByteVectorPort"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-binary-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-binary-input-file filename)\n\nFunction return new Input Binary Port with given filename. In Browser\nuser need to provide global fs variable that is instance of FS interface."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buffer->u8vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%read-binary-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputBinaryFilePort"},{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(binary-port? port)\n\nFunction test if argument is binary port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"port.__type__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"textual-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(textual-port? port)\n\nFunction test if argument is string port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"port.__type__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"text"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"peek-u8"},{"@":0,"#":[{"@":4,"#":"(peek-u8)\n(peek-u8 port)\n\nReturn next byte from input-binary port. If there are no more bytes\nit return eof object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.peek_u8"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"read-u8"},{"@":0,"#":[{"@":4,"#":"(read-u8)\n(read-u8 port)\n\nRead next byte from input-binary port. If there are no more bytes\nit return eof object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_u8"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"u8-ready?"},{"@":0,"#":[{"@":4,"#":"(u8-ready?)\n(u8-ready? port)\n\nReturns #t if a byte is ready on the binary input port and returns #f otherwise.\nIf u8-ready? returns #t then the next read-u8 operation on the given port is\nguaranteed not to hang. If the port is at end of file then u8-ready? returns #t."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.u8_ready"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-bytevector k)\n(read-bytevector k port)\n\nRead next n bytes from input-binary port. If there are no more bytes\nit returns eof object. If there are less then n bytes in port it\nreturn the only bytes that are available"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"read-bytevector: invalid port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_u8_vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"write-u8"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":4,"#":"(write-u8 byte)\n(write-u8 byte port)\n\nWrite byte into binary output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.write_u8"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"write-bytevector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":0,"#":[{"@":4,"#":"(write-bytevector bytevector)\n(write-bytevector bytevector port)\n\nWrite byte vector into binary output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.write_u8_vector"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-binary-output-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-binary-output-file filename)\n\nFunction open file and return port that can be used for writing. If file\nexists it will throw an Error."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"open-binary-output-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-binary-output-file: file exists"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.OutputBinaryFilePort"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"w"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-bytevector! bytevector)\n(read-bytevector! bytevector port)\n(read-bytevector! bytevector port start)\n(read-bytevector! bytevector port start end)\n\nFunction read next bytes from binary input port and write them into byte vector.\nif not start is specified it start to write into 0 position of the vector until\nthe end or end the vector if no end is specified."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"read-bytevector!: invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"out"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector.set"},{"@":0,"#":[{"@":3,"#":"out"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"delete-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(delete-file filename)\n\nFunction delete the file of given name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"delete-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"delete-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-port port proc)\n\nProc is executed with given port and after it returns, the port is closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-port port)\n\nClose input or output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[[{"@":4,"#":"input-port"},{"@":4,"#":"output-port"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eof-object"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(eof-object)\n\nProcedure returns eof object that indicate end of the port"},{"@":0,"#":[{"@":3,"#":"lips.eof"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port-open?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(output-port-open? port)\n\nFunction check if argument is output-port and if you can write to it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.is_open"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port-open?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(input-port-open? port)\n\nFunction check if argument is input-port and if you can read from it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.is_open"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"flush-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(flush-output-port port)\n\nFunctio do nothing, flush is not needed in LIPS in both NodeJS and Browser.\nThe function is added, so it don't throw exception when using R7RS code."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[false,{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-string string)\n(write-string string port)\n(write-string string port start)\n(write-string string port start end)\n\nWrites the characters of string from start to end in left-toright order\nto the textual output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-char string)\n(write-char string port)\n\nWrites the character char (not an external representation of the character)\nto the given textual output port and returns an unspecified value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-string k)\n(read-string k port)\n\nReads the next k characters, or as many as are available\nbefore the end of file, from the textual input port into a\nnewly allocated string in left-to-right order and returns the\nstring. If no characters are available before the end of file,\nan end-of-file object is returned."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-copy"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(list-copy obj)\n\nCopy the object passed as argument but only if it's list. The car elements\nof the list are not copied, they are passed as is."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-copy"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[[{"@":4,"#":"pair"},{"@":4,"#":"nil"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj.clone"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-record-type"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":3,"#":"fields"}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-record-type name constructor pred . fields)\n\nMacro for defining records. Example of usage:\n\n(define-record-type <pare>\n (kons x y)\n pare?\n (x kar set-kar!)\n (y kdr set-kdr!))\n\n(define p (kons 1 2))\n(print (kar p))\n;; 1\n(set-kdr! p 3)\n(print (kdr p))\n;; 3"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"class"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"self."},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toType"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":">"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"object is not record of type "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"set"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"set"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"object is not record of type "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"fields"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(nan? x)\n\nFunction check if argument x is Not a Number (NaN) value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x.isNaN"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(infinite? x)\n\nFunction check if value is infinite."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(finite? x)\n\nFunction check if value is finite."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"%Library"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"namespace "},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":4,"#":" already exists in library "},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"namespace "},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":4,"#":" sdon't exists"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<Library("},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":0,"#":[{"@":4,"#":")>"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":3,"#":"library"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"library"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"import"},{"@":3,"#":"specs"}]},{"@":0,"#":[{"@":4,"#":"(import (library namespace))\n(import (only (library namespace) name1 name2))\n\nMacro for importing names from library."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"import: invalid syntax"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"only"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"import: invalid syntax"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.get"},{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new-library"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(new-library name)\n\nCreate new empty library object with empty namespace."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__parent__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"throwError":false},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"%Library"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"library-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib.append"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%export"},{"@":0,"#":[{"@":3,"#":"module"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"rename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-library"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(define-library (library (name namespace) . body)\n\nMacro for defining modules inside you can use define to create functions.\nAnd use export name to add that name to defined environment."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__parent__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"module-var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new-library"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"export"},{"@":3,"#":"body"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%export"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-directory"},{"@":0,"#":[{"@":3,"#":"set-current-directory!"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cwd"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"location.origin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"location.pathname"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"replace"},{"@":0,"#":[{},{"@":0,"#":[{"@":4,"#":"/"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"(current-directory)\n\nReturn corrent working directory, default it's corrent URL."},{"@":0,"#":[{"@":3,"#":"cwd"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(set-current-directory! string)\n\nFunction change current working directory to provided string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"set-current-directory!"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"cwd"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"process"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"(current-directory)\n\nReturn corrent working directory, default it's path from where\nthe script was executed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process.cwd"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"/"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(set-current-directory! string)\n\nFunction change current working directory to provided string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"set-current-directory!"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process.chdir"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(and-let* ((name expression) expression ...) body)\n\nMacro that combine let and and. First expression need to be in form of let.\nSymbol expression the rest can be boolean expression or name expreession.\nThis is implementation of SRFI-2."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#,"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"sharp-comma"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-reader-ctor"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-reader-ctor symbol fn)\n\nDefine the value for #, syntax. SRFI-10\nExample:\n\n(define-reader-ctor '+ +)\n(print #,(+ 1 2))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"sharp-comma"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"Invalid symbol "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" in expression "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(sharp-comma expr)\n#,(ctor ...)\n\nThis is syntax extension for SRFI-10. To define the function to be used with\nThis syntax you need to call `define-reader-ctor` function and define\nsymbol function mapping."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexed-db?"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.configure"},{"@":0,"#":[{"options":{},"fs":{"@":4,"#":"IndexedDB"}},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.BFSRequire"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"console.warn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"BrowserFS not initilalized "},{"@":0,"#":[{"@":4,"#":"IndexedDB is not available"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"self.Buffer"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.BFSRequire"},{"@":0,"#":[{"@":4,"#":"buffer"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal.set"},{"@":0,"#":[{"@":4,"#":"Buffer"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal.set"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}] \ No newline at end of file +[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%doc"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__doc__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"replace"},{"@":0,"#":[{},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-syntax"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(let-syntax ((name fn)) body)\n\n Macro works like combination of let and define-syntax. It creates\n local macros and evaluate body in context of those macros.\n The macro to letrec-syntax is like letrec is to let."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"let-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(letrec-syntax ((name fn)) body)\n\n Macro works like combination of letrec and define-syntax. It creates\n local macros and evaluate body in context of those macros."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"letrec-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rule"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"vars"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-syntax name expression [__doc__])\n\nMacro define new hygienic macro using syntax-rules with optional documentation"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"define-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"syntax"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(quoted-symbol? code)\n\nHelper function that test if value is quoted symbol. To be used in macros\nthat pass literal code that is transformed by parser.\n\nusage:\n\n (define-macro (test x)\n (if (quoted-symbol? x)\n `',(cadr x)))\n\n (list 'hello (test 'world))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"code"}]}]},{"@":0,"#":[{"@":4,"#":"Helper macro that simplify calling methods on objects. It work with chaining\n\nusage: (--> ($ \"body\")\n (css \"color\" \"red\")\n (on \"click\" (lambda () (display \"click\"))))\n\n (--> document (querySelectorAll \"div\"))\n\n (--> (fetch \"https://jcubic.pl\")\n (text)\n (match #/<title>([^<]+)<\\/title>/)\n 1)\n \n (--> document\n (querySelectorAll \".cmd-prompt\")\n 0\n 'innerHTML\n (replace #/<(\"[^\"]+\"|[^>])+>/g \"\"))\n\n (--> document.body\n (style.setProperty \"--color\" \"red\"))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[true,{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":"."},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quoted-symbol?"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-global"},{"@":0,"#":[{"@":3,"#":"first"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(define-global var value)\n(define-global (name . args) body)\n\nMacro that define functions or variables in global context, so they can be used\ninside let and get let variables in closure, Useful for universal macros."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"globalize"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(globalize expr)\n\n Macro will get the value of the expression and add each method as function to global\n scope."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eval"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"env-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pre"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"pre"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"match"},{"@":0,"#":[{"@":3,"#":"/^_/"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-global"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-name"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"single"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(single list)\n\nFunction check if argument is list with single element"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iterator?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(iterator? x)\n\n Function check if value is JavaScript iterator object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Symbol.iterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(.. foo.bar.baz)\n\nMacro that gets value from nested object where argument is comma separated symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parts"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"single"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"parts"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#:"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"gensym-interal"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym-interal"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(gensym-interal symbol)\n\nParser extension that create new quoted named gensym."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(plain-object? x)\n\nFunction check if value is plain JavaScript object. Created using object macro."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":"object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"Object"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"TypedArray"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getPrototypeOf"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"o"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(typed-array? o)\n\nFunction test if argument is JavaScript typed array (Scheme byte vector)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"TypedArray"},{"@":0,"#":[{"@":3,"#":"o"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(symbol->string symbol)\n\nFunction convert LIPS symbol to string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"s.__name__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->symbol string)\n\nFunction convert string to LIPS symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%as.data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":4,"#":"LSymbol"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(alist->object alist)\n\nFunction convert alist pairs to JavaScript object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist.to_object"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Pair"},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frames"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(parent.frames)\n\nFuncion return list of environments from parent frames (lambda function calls)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":":throwError"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"frame"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.frame"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(pair-map fn list)\n\nFunction call fn argument for pairs in a list and return combined list with\nvalues returned from function fn. It work like the map but take two items from list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"second"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":3,"#":"second"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"seq-list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(object-expander reaonly '(:foo (:bar 10) (:baz (1 2 3))))\n\nRecursive function helper for defining LIPS code for create objects\nusing key like syntax."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"msg"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" is not a symbol!"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":3,"#":"msg"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"quot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"readonly"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.freeze"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":3,"#":"expr"}]},{"@":0,"#":[{"@":4,"#":"(object :name value)\n\nMacro that create JavaScript object using key like syntax."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[false,{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-literal"},{"@":3,"#":"expr"}]},{"@":0,"#":[{"@":4,"#":"(object-literal :name value)\n\nMacro that create JavaScript object using key like syntax. This is similar,\nto object but all values are quoted. This macro is used with & object literal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object-expander"},{"@":0,"#":[true,{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->assign"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":3,"#":"sources"}]}]},{"@":0,"#":[{"@":4,"#":"(alist->assign alist . list-of-alists)\n\nFunction that work like Object.assign but for LIPS alist."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"d-pair"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append!"},{"@":0,"#":[{"@":3,"#":"desc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"sources"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"desc"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(key? symbol)\n\nFunction check if symbol is key symbol, have colon as first character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":":"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(key->string symbol)\n\nIf symbol is key it convert that to string - remove colon."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%as.data"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%as.data obj)\n\nMark object as data to stop evaluation."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%hidden-props"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%hidden-props obj)\n\nFunction return hidden names of an object, for ES6 class prototype\nit return all methods since they are indistinguishable from hidden property\ncreated using defineProperty."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyDescriptors"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"descriptor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"descriptors"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"descriptor.enumerable"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dir"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(dir obj)\n\nFunction return all props on the object including those in prototype chain."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"Object.prototype"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proto"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyNames"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"proto"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"hidden"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%hidden-props"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"hidden.includes"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"names"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dir"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getPrototypeOf"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(tree-map fn tree)\n\nTree version of map. Function is invoked on every leaf."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"f"},{"@":0,"#":[{"@":3,"#":"tree"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"native.number"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(native.number obj)\n\nIf argument is number it will convert to native number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(value obj)\n\nFunction unwrap LNumbers and convert nil value to undefined."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-formatter-rule"},{"@":3,"#":"patterns"}]},{"@":0,"#":[{"@":4,"#":"(rule-pattern pattern)\n\nAnaphoric Macro for defining patterns for formatter. With Ahead, Pattern and * defined values."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"rules"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.Formatter.rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"lips.Formatter.Ahead"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Ahead"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"*"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Pattern"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Formatter.Pattern"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":3,"#":"flag"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"rules"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tree-map"},{"@":0,"#":[{"@":3,"#":"native.number"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"pattern"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"patterns"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"else"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"else1"},{"@":0,"#":[{"@":3,"#":"else2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[true,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"else1"},{"@":0,"#":[{"@":3,"#":"else2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"receiver"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"generator"},{"@":0,"#":[{"@":3,"#":"guard"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"generator"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"guard"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"receiver"},{"@":0,"#":[{"@":3,"#":"t"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"body1"},{"@":0,"#":[{"@":3,"#":"body2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body1"},{"@":0,"#":[{"@":3,"#":"body2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(cond (predicate? . body)\n (predicate? . body)\n (else . body))\n\nMacro for condition checks. For usage instead of nested ifs."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond/maybe-more"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"consequent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(cond/maybe-more test consequent ...)\n\nHelper macro used by cond."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":3,"#":"list"}]},{"@":0,"#":[{"@":4,"#":"(cond (predicate? . body)\n (predicate? . body))\nMacro for condition check. For usage instead of nested ifs."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"forms"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"forms"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"else"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdar"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%r"},{"@":0,"#":[{"@":3,"#":"re"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(%r re)\n\nCreate new regular expression from string, to not break Emacs formatting"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(interaction-environment)\n\nFunction return interaction environment equal to lips.env can be overwritten,\nwhen creating new interpreter with lips.Interpreter."},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(current-output-port)\n\nFunction return default stdout port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stdout"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-error-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(current-output-port)\n\nFunction return default stdout port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stderr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"current-input-port)\n\nFunction return default stdin port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"stdin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(regex? x)\n\nFunction return true of value is regular expression, it return false otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"=="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":4,"#":"regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(add-repr! type fn)\n\nFunction add string representation to the type, which should be constructor function.\n\nFunction fn should have args (obj q) and it should return string, obj is value that\nneed to be converted to string, if the object is nested and you need to use `repr`,\nit should pass second parameter q to repr, so string will be quoted when it's true.\n\ne.g.: (lambda (obj q) (string-append \"<\" (repr obj q) \">\"))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"add-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"add-repr!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ignore"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unset-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(unset-repr! type)\n\nFunction remove string representation to the type, which should be constructor function,\nadded by add-repr! function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"unset-repr!"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ignore"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"delete"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"&"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"object-literal"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"&("},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.getOwnPropertyNames"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":":"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":")"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bound? x [env])\n\nFunction check if variable is defined in given environment or interaction environment\nif not specified."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(environment-bound? env symbol)\n\nFunction check if symbol is bound variable similar to bound?."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":4,"#":"environment"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"environment-bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"e"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(qsort list predicate)\n\nSort the list using quick sort algorithm according to predicate."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"e"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"loop"},{"@":0,"#":[{"@":3,"#":"left"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"right"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pivot"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(sort list [predicate])\n\nSort the list using optional predicate function. if not function is specified\nit will use <= and sort in increasing order."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"sort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"sort"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"qsort"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(every fn list)\n\nFunction call function fn on each item of the list, if every value is true\nit will return true otherwise it return false."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":3,"#":"body"}]},{"@":0,"#":[{"@":4,"#":"(promise . body)\n\nAnaphoric macro that expose resolve and reject functions from JS promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"timer"},{"@":0,"#":[{"@":3,"#":"time"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(timer time . body)\n\nMacro evaluate expression after delay, it return timer. To clear the timer you can use\nnative JS clearTimeout function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"setTimeout"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"e.message"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"time"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"wait"},{"@":0,"#":[{"@":3,"#":"time"},{"@":3,"#":"expr"}]}]},{"@":0,"#":[{"@":4,"#":"(wait time . expr)\n\nFunction return promise that will resolve with evaluating the expression after delay."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"timer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"time"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"await"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(await value)\n\nFunction unquote quoted promise so it can be automagically evaluated (resolved\nto its value)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.QuotedPromise"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value.valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote-promise"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(quote-promise expr)\n'>expr\n\nMacro used to escape promise the whole expression, will be wrapped\nwith JavaScript class that behave like Promise but will not\nauto resolve like normal promise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"__promise__"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"defmacro?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(defmacro? expression)\n\nFunction check if object is macro and it's expandable."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"macro?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"defmacro"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(n-ary n fn)\n\nReturn new function that limit number of arguments to n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"take"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"take"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(take n list)\n\nReturn n first values of the list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(unary fn)\n\nFunction return new function with arguments limited to one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(binary fn)\n\nFunction return new function with arguments limited to two."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"n-ary"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(class-lambda expr)\n\nReturn lambda expression where input expression lambda have `this` as first argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"this"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%class-lambda expr)\n\nDefine lambda that have self is first argument. The expr is in a form:\n(constructor (lambda (self ...) . body)) as given by define-class macro."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdadadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"this"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-method-name"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%class-method-name expr)\n\nHelper function that allow to use [Symbol.asyncIterator] inside method name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-class name parent . body)\n\nDefine class - JavaScript function constructor with prototype.\n\nusage:\n\n (define-class Person Object\n (constructor (lambda (self name)\n (set-obj! self '_name name)))\n (hi (lambda (self)\n (display (string-append self._name \" say hi\"))\n (newline))))\n (define jack (new Person \"Jack\"))\n (jack.hi)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"functions"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"__class__"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.create"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"prototype"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-method-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%class-lambda"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"functions"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":3,"#":"functions"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"functions"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"class"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"class: parent required"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"temp"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"temp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(class <parent> body ...)\n\nMacro allow to create anonymous classes. See define-class for details."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(make-tags expression)\n\nFunction that return list structure of code with better syntax then raw LIPS"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"val"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key?"},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"val"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair-map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key->string"},{"@":0,"#":[{"@":3,"#":"car"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"s"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"s"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdaddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(%sxml h expr)\n\nHelper function that render expression using create element function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"@"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"have-attrs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"attrs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"first"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"first"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pragma->sxml"},{"@":0,"#":[{"@":3,"#":"pragma"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sxml"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(sxml expr)\n\nMacro for JSX like syntax but with SXML.\ne.g. usage:\n\n(sxml (div (@ (data-foo \"hello\")\n (id \"foo\"))\n (span \"hello\")\n (span \"world\")))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%sxml"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pragma"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"pragma->sxml"},{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(with-tags expression)\n\nMacro that evaluate LIPS shorter code for S-Expression equivalent of JSX.\ne.g.:\n\n(with-tags (:div (:class \"item\" :id \"item-1\")\n (list (:span () \"Random Item\")\n (:a (:onclick (lambda (e) (alert \"close\")))\n \"close\"))))\n\nAbove expression can be passed to function that renders JSX (like render in React, Preact)\nTo get the string from the macro you can use vhtml library from npm."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-tags"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-script"},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-script url)\n\nLoad JavaScript file in browser by adding script tag to head of the current document."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bound?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"document"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"get-script: document not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"document.createElement"},{"@":0,"#":[{"@":4,"#":"script"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"src"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"onload"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"script"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"onerror"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":4,"#":"get-script: Failed to load"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"document.head"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"document.head.appendChild"},{"@":0,"#":[{"@":3,"#":"script"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(gensym? value)\n\nFunction return #t if value is symbol and it's gensym. It returns #f otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"is_gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"degree->radians"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(degree->radians x)\n\nConvert degree to radians."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"Math.PI"},{"@":0,"#":[{"@":1,"#":"180"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"radians->degree"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(radians->degree x)\n\nConvert radians to degree."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":1,"#":"180"},{"@":0,"#":[{"@":3,"#":"Math.PI"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(while cond . body)\n\nMacro that create a loop, it execute body until cond expression is false."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"++"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"++"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(++ variable)\n\nMacro that work only on variables and increment the value by one."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"--"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"--"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"tmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"tmp"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(-- variable)\n\nMacro that decrement the value it work only on symbols"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pretty-format"},{"@":3,"#":"lists"}]},{"@":0,"#":[{"@":4,"#":"(pretty-format pair)\n\nFunction return pretty printed string from pair expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"lists"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"pretty-pair"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Formatter"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"break"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reset"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(reset)\n\nFunction reset environment and remove all user defined variables."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"defaults"},{"@":0,"#":[{"@":3,"#":"**interaction-environment-defaults**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"forEach"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"defaults"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"includes"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unset"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-list"},{"@":0,"#":[{"@":3,"#":"n"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"make-list: first argument need to be integer larger then 0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"undefined"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"range"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(range n)\n\nFunction return list of n numbers from 0 to n - 1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"range"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do-iterator"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(do-iterator (var expr) (test) body ...)\n\nMacro iterate over iterators (e.g. create with JavaScript generator function)\nit works with normal and async iterators. You can loop over infinite iterators\nand break the loop if you want, using expression like in do macro, long sync iterators\nwill block main thread (you can't print 1000 numbers from inf iterators,\nbecause it will freeze the browser), but if you use async iterators you can process\nthe values as they are generated."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gen"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"async"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sync"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iterator"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"iterator"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"next"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"stop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"stop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"item"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"Symbol.iterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"gen"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"Symbol.asyncIterator"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"next"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"iterator"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"sync"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"async"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"done"},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"stop"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"next"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"#<Set>"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"#<Met>"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"native-symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(native-symbol? object)\n\nFunction check if value is JavaScript symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"’"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"warn-quote"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"warn-quote"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(warn-quote)\n\nSimple macro that throw error, when you try to use ’ symbol as quote in code"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"You're using invalid quote character run: "},{"@":0,"#":[{"@":4,"#":"(set-special! \"’\" 'quote)"},{"@":0,"#":[{"@":4,"#":" to allow running this type of quote"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env-values"},{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]}]},{"@":0,"#":[{"@":4,"#":"(let-env-values env ((name var)) . body)\n\nMacro add mapping for variables var from specified env,\nMacro work similar to let-env but lexical scope is working with it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"env-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apropos"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(apropos name)\n\nSearch environment and display names that match the given name.\nname can be regex, string or symbol."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"apropos"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":4,"#":"regex"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"RegExp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"escape-regex"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(promisify fn)\n\nSimple function for adding promises to NodeJS callback based function.\nFunction tested only with fs module."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list*"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(list* arg1 ...)\n\nParallel version of list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"await"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%not-implemented"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(not-implemented name)\n\nReturns new function that throw exception that function is not implemented"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"("},{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":4,"#":")\n\nThis function is not yet implemented."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"str-name"},{"@":0,"#":[{"@":4,"#":" has not beed implemented"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-env"},{"@":0,"#":[{"@":3,"#":"name"},{"@":3,"#":"names"}]}]},{"@":0,"#":[{"@":4,"#":"(%make-env name f1 f2 ...)\n\nCreate new Environment with given name and defined symbols in it from global env.\nIf given function name f1 f2 ... don't exists, it will define function that\nthrow exception that function is not yet implemented."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"alist->object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.ref"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"ref"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%not-implemented"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"null"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"Y"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(Y f)\n\n _ __ __ _ _ _ _ __ __ _ _ _\n / \\ \\ / / / __ / ____ \\ / \\ \\ / / ____ \\ \\ \\\n+ \\ v / + \\ \\ + / ___| + + \\ v / / ___| + + +\n| \\ / | \\ \\ | | |__ | | \\ / | |__ | | |\n| | | | / \\ | | __| | | | | | __| | | |\n| | | | / /\\ \\ | | | | | | | | | | | |\n+ |_| + /_/ \\_\\ + |_| + + |_| |_| + + +\n \\_ \\_ \\_ _/ \\_ _/ _/ _/"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"g"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"h"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"g"},{"@":0,"#":[{"@":3,"#":"g"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexed-db?"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(indexed-db?)\n\nFunction test if indexedDB is available."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"any"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexedDB"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"any"},{"@":0,"#":[{"@":3,"#":"window.indexedDB"},{"@":0,"#":[{"@":3,"#":"window.indexedDB"},{"@":0,"#":[{"@":3,"#":"window.mozIndexedDB"},{"@":0,"#":[{"@":3,"#":"window.webkitIndexedDB"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"indexedDB"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"window.indexedDB.open"},{"@":0,"#":[{"@":4,"#":"MyTestDatabase"},{"@":0,"#":[{"@":1,"#":"3"},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(environment? obj)\n\nFunction check if object is LIPS environment."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%read-file binary path)\n\nRead file from url or file system. If binary is false it will return\nstring that contain all the content. For HTTP requests, If binary\nis false it will: when in browser return ArrayBuffer and in Node\nit will return Buffer object. When reading from file system\nin both cases it will return Buffer objects.\n\nThe code that use those function, in binary mode, need to check\nif the result is ArrayBuffer or Node.js/BrowserFS Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"read-file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-input-file: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*read-file*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*read-file*"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Blob"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"buff"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"buff"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"buff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch"},{"@":0,"#":[{"@":3,"#":"url"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.arrayBuffer"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.text"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"http-get"},{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":5,"#":"/"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"file "},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":4,"#":" don't exists"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-file"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch-url"},{"@":0,"#":[{"@":3,"#":"path"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-directory"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"path"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-binary-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"%read-text-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%read-file"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"message"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(%fs-promisify-proc fn string)\n\nFunction return promisified version of fs function or throw exception\nif fs is not available."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":4,"#":": fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(response->text binary res)\n\nFunction read all text from Node.js HTTP response object. If binary argument\nis true it will return Buffer object that can be converted to u8vector.\n\n***Warning:*** it may overflow the stack (part of Node) when converting\nwhole buffer to u8vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.push"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer.from"},{"@":0,"#":[{"@":3,"#":"chunk"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.push"},{"@":0,"#":[{"@":3,"#":"chunk"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.setEncoding"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":0,"#":[{"@":4,"#":"utf8"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.on"},{"@":0,"#":[{"@":4,"#":"data"},{"@":0,"#":[{"@":3,"#":"append"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.on"},{"@":0,"#":[{"@":4,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer.concat"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result.join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"response->buffer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"response->text"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"http-get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(http-get url)\n\nNode.js Function that send HTTP Request and return string or\nbinary Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"http-get: function is Node.js only."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"http"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"http"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"https"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"https"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(http-get url)\n\nNode.js Function that send HTTP Request and return string or\nbinary Buffer object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"request"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"url.match"},{"@":0,"#":[{},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"http"},{"@":0,"#":[{"@":3,"#":"https"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"request"},{"@":0,"#":[{"@":3,"#":"url"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"res.statusCode"},{"@":0,"#":[{"@":1,"#":"200"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"response->content"},{"@":0,"#":[{"@":3,"#":"binary"},{"@":0,"#":[{"@":3,"#":"res"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"code"},{"@":0,"#":[{"@":3,"#":"res.statusCode"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"res.resume"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"Request return "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"code"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"on"},{"@":0,"#":[{"@":4,"#":"error"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buffer->u8vector"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(buffer->u8vector bin)\n\nCross platform function that can be used in both Node and Browser.\nIt can be used together with %read-file or %read-binary-file and convert\nthe result ArrayBuffer or Buffer to u8vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"ArrayBuffer"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Uint8Array.from"},{"@":0,"#":[{"@":3,"#":"bin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complement"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(complement fn)\n\nHiger order function that returns complement of the given function. If the function fn\nfor a given arguments return true the result function will return false, if it would\nreturn false, the result function will return true."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"complement"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"always"},{"@":0,"#":[{"@":3,"#":"constant"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(always constant)\n\nHigher order function returns new function that always return given constant."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"constant"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"once"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(once fn)\n\nHigher order function that return new function, that is guarantee\nto be called only once."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"once"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"undefined"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"flip"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(flip fn)\n\nHigher order function that return new function where first two arguments are swapped.\n\nExample:\n\n (define first (curry (flip vector-ref) 0))\n (first #(1 2 3))\n ;; ==> 1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"flip"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unfold"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"init"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(unfold fn init)\n\nFunction returns list from given function and init value. The function should\nreturn cons where first is the item added to the list and second is next value\npassed to the function. If function return false it end the loop."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"unfold"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"init"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"pair"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"concat"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"=="},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"%"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"-inf.0"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"+inf.0"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"function?"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":3,"#":"**"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"list->array"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"array->list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-symbol-macro"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"rest"}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-symbol-macro type (name . args) . body)\n\nMacro that creates special symbol macro for evaluator similar to build in , or `.\nIt's like alias for real macro. Similar to CL reader macros but it receive already\nparsed code like normal macros. Type can be SPLICE or LITERAL symbols.\nALL default symbol macros are literal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"lips.specials."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"vector-literal"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-literal"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"Parse Error: vector require pair got "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" in "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.freeze"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector 1 2 3 (+ 3 1))\n#(1 2 3 4)\n\nMacro for defining vectors (JavaScript arrays). Vectors literals are\nautomatically quoted. So you can use expressions inside them. Only other\nliterals, like other vectors or object."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arr"},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"arr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"in"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"arr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"#<empty>"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"arr"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"q"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"#("},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":")"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(eqv? a b)\n\nFunction compare the values. It return true if they are the same, they\nneed to have same type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a.isNaN"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"b.isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"a._minus"},{"@":0,"#":[{"@":3,"#":"b._minus"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"_minus"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"re.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"re.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"im.a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"im.b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"isNaN"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(equal? a b)\n\nFunction check if values are equal if both are pair or array\nit compares the their elements recursively."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a.__name__"},{"@":0,"#":[{"@":3,"#":"b.__name__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"regex?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"source"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typed-array?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"function?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%same-functions"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"plain-object?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Object.keys"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sort"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"keys_a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"keys_b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"make-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(make-promise fn)\n\nFunction create promise from a function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-promise"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":4,"#":"function"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"promise"},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"promise.toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<promise - "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"result-ready?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"forced with "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"not forced"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":">"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"delay"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(delay expression)\n\nMacro will create a promise from expression that can be forced with (force)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"force"},{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(force promise)\n\nFunction force the promise and evaluate delayed expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promise?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(promise? obj)\n\nFunction check if value is a promise created with delay or make-promise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"promise"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(positive? x)\n\nFunction check if number is larger then 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(negative? x)\n\nFunction check if number is smaller then 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(zero? x)\n\nFunction check if number is equal to 0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(quotient a b)\n\nReturn quotient from divition as integer."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"quotient: divition by zero"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ceiling"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(number->string x [radix])\n\nFunction convert number to string with optional radix (number base)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"10"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"radix"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(boolean? x)\n\nFunction return true if value is boolean."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"boolean"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-ref vector i)\n\nReturn i element from vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-set! vector i obj)\n\nSet obj as value in vector at position 1."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"%number-type"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"x.__type__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"t"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"some"},{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typeof"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(real? x)\n\nFunction check if argument x is real."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(integer? x)\n\nFunction check if argument x is integer."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(complex? x)\n\nFunction check if argument x is complex."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":4,"#":"float"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(rational? x)\n\nFunction check if value is rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck-args"},{"@":0,"#":[{"@":3,"#":"_type"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(typecheck-args args type)\n\nFunction check if all items in array are of same type."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_list"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"_type"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"typecheck-args"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"max"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(max n1 n2 ...)\n\nReturn maximum of it's arguments."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":4,"#":"max"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"Math.max"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"min"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(min n1 n2 ...)\n\nReturn minimum of it's arguments."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numbers?"},{"@":0,"#":[{"@":4,"#":"min"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"Math.min"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":3,"#":"im"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(make-rectangular im re)\n\nCreate complex number from imaginary and real part."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"im"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LComplex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"to_object"},{"@":0,"#":[true,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact? n)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"n.__type__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"bigint"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"rational"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n.__im__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n.__re__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(inexact? n)"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact->inexact n)\n\nConvert exact number to inexact."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LComplex"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":":im"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__im__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":":re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__re__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LFloat"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(inexact->exact number)\n\nFuncion convert real number to exact ratioanl number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toRational"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"_maths"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"exp"},{"@":0,"#":[{"@":4,"#":"log"},{"@":0,"#":[{"@":4,"#":"sin"},{"@":0,"#":[{"@":4,"#":"cos"},{"@":0,"#":[{"@":4,"#":"tan"},{"@":0,"#":[{"@":4,"#":"asin"},{"@":0,"#":[{"@":4,"#":"acos"},{"@":0,"#":[{"@":4,"#":"atan"},{"@":0,"#":[{"@":4,"#":"atan"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"_this_env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fns"},{"@":0,"#":[{"@":3,"#":"_maths"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"LNumber"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":".."},{"@":0,"#":[{"@":3,"#":"lips.LNumber"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"Math"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"LNumber"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"_this_env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__doc__"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":4,"#":"("},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" n)\n\nFunction calculate "},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" math operation (it call JavaScript Math)."},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":4,"#":" function."},{"@":2,"#":0}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"fns"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(modulo a b)\n\nFunction return modulo operation on it's argumennts."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder__"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(modulo a b)\n\nFunction return reminder from division operation."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-tail list k)\n\nReturns the sublist of list obtained by omitting the first k elements."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: index out of range"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-tail: not enough elements in the list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-ref list n)\n\nReturns n element of a list."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"pair"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: index out of range"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"list-ref: not enough elements in the list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"l"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"l"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(not x)\n\nFunction return true if value is false and false otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[false,{"@":0,"#":[true,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(rationalize number tolerance)\n\nFunction returns simplest rational number differing from number by no more\nthan the tolerance."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.rationalize"},{"@":0,"#":[{"@":3,"#":"number"},{"@":0,"#":[{"@":3,"#":"tolerance"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%member obj list function)\n\nHelper method to get first list where car equal to obj\nusing provied functions as comparator."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[false,{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"access"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memq"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(memq obj list)\n\nFunction return first object in the list that match using eq? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"memq"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(memv obj list)\n\nFunction return first object in the list that match using eqv? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"memv"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"member"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(member obj list)\n\nFunction return first object in the list that match using equal? function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"member"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/accessor"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(%assoc/accessor name)\n\nFunction return carr with typecheck using give name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%assoc/search op obj alist)\n\nGeneric function that used in assoc functions with defined comparator\nfunction."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"nil"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ret"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%mem/search"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%assoc/accessor"},{"@":0,"#":[{"@":4,"#":"assoc"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"op"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"alist"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"ret"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"ret"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"ret"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assoc obj alist)\n\nFunction return pair from alist that match given key using equal? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assq"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assq obj alist)\n\nFunction return pair from alist that match given key using eq? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"assv"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(assv obj alist)\n\nFunction return pair from alist that match given key using eqv? check."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"%assoc/search"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(make-string k [char])\n\nFunction return new string with k elements, if char is provied\nit's filled with that character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":5,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"iter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(string chr1 chr2 ...)\n\nFunction create new string from it's arguments. Each argument\nNeed to be a character object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-copy string)\n\nReturns a copy of the given string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"clone"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-fill! symbol char)\n\nFunction destructively fill the string with given character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"identity"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(identity n)\n\nNo op function. it just returns its argument."},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-copy x)\n\nCreate new string based of given argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LString"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(list->string _list)\n\nFunction return string from list of characters."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"_list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->list string)\n\nFunction return list of characters created from string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":3,"#":"index"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-set! object index char)\n\nMacro that replace character in string in given index, it create new JavaScript\nstring and replace old value. Object need to be symbol that point to variable\nthat hold the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"object"},{"@":0,"#":[{"@":4,"#":"symbol"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"chars"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":4,"#":"chars"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"index"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"index"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"object"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"chars"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string-length string)\n\nFunction return length of the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ref string k)\n\nFunction return character inside string at given zero-based index."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%string-cmp name a b)\n\nFunction compare two strings and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string=? string1 string2)\n\nFunction check if two string s are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second string is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string<? string1 string2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-cmp"},{"@":0,"#":[{"@":4,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%string-ci-cmp name a b)\n\nFunction compare two strings ignoring case and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":4,"#":"string"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lower"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cmp"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lower"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci=? string1 string2)\n\nFunction check if two string s are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci<? string1 string2)\n\nFunction return true if second string is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(string-ci>=? string1 string2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%string-ci-cmp"},{"@":0,"#":[{"@":4,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string1"},{"@":0,"#":[{"@":3,"#":"string2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"char?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%doc"},{"@":0,"#":[{"@":4,"#":"(char? obj)\n\nFunction check if object is character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"curry"},{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char->integer chr)\n\nFunction return codepoint of Unicode character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"chr.__char__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"codePointAt"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(integer->char chr)\n\nFunction convert number argument to character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"String.fromCodePoint"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":4,"#":"argument to integer->char need to be integer."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":0,"#":[{"@":3,"#":"str"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%define-chr-re (name chr) string re)\n\nMacro define procedure that test character agains regular expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"match"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-whitespace?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-whitespace? chr)\n\nFunction return true if character is whitespace."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"space-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-numeric? chr)\n\nFunction return true if character is number."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"numeral-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-chr-re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-alphabetic? chr)\n\nFunction return true if character is leter of the ASCII alphabet."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"letter-unicode-regex"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%char-cmp name a b)\n\nFunction compare two characters and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"b"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char=? chr1 chr2)\n\nFunction check if two characters are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char<? chr1 chr2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":4,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%char-cmp name a b)\n\nFunction compare two characters and return 0 if they are equal,\n-1 second is smaller and 1 if is larget. The function compare\nthe codepoints of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":0,"#":[{"@":4,"#":"character"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-cmp"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci=? chr1 chr2)\n\nFunction check if two characters are equal."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is not larger then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(char-ci<? chr1 chr2)\n\nFunction return true if second character is not smaller then the first one."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%char-ci-cmp"},{"@":0,"#":[{"@":4,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"chr1"},{"@":0,"#":[{"@":3,"#":"chr2"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":1,"#":"-1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upcase char)\n\nCreate uppercase version of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.toUpperCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-downcase chr)\n\nCreate lowercase version of the character."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upper-case? char)\n\nFunction check if character is upper case."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(char-upper-case? char)\n\nFunction check if character is lower case."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"newline"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(newline [port])\n\nWrite newline character to standard output or given port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":4,"#":"\n"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write obj [port])\n\nWrite object to standard output or give port. For strings it will include\nwrap in quotes."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-char char [port])\n\nWrite single character to given port using write function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"fold-right"},{"@":0,"#":[{"@":3,"#":"reduce"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"fold-left"},{"@":0,"#":[{"@":3,"#":"fold"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"n"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(make-vector n [fill])\n\nCreate new vector with n empty elements. If fill is specified it will set\nall elements of the vector to that value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Array"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector? n)\n\nFunction return true of value is vector and false if not."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-ref vec n)\n\nFunction return nth element of the vector vec."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-set! vec n value)\n\nFunction set nth item of the vector to value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-fill! vec value)\n\nSet every element of the vector to given value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector-length vec)\n\nFunction return length of the vector. If argument is not vector it throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atom-key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"atom-key"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"=>"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"key"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"atoms"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"key"},{"@":0,"#":[{"@":3,"#":"clause"},{"@":0,"#":[{"@":3,"#":"clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(case value\n ((<items>) result1)\n ((<items>) result2)\n [else result3])\n\nMacro for switch case statement. It test if value is any of the item. If\nitem match the value it will return corresponding result expression value.\nIf no value match and there is else it will return that result."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.Formatter.defaults.exceptions.specials"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":4,"#":"case"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(numerator n)\n\nReturn numerator of rational or same number if n is not rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.num"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(denominator n)\n\nReturn denominator of rational or same number if one is not rational."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.denom"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"1"},{"@":0,"#":[{"@":1,"#":1},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(imag-part n)\n\nReturn imaginary part of the complex number n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.__im__"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(real-part n)\n\nReturn real part of the complex number n."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"n.__re__"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(make-polar magnitude angle)\n\nCreate new complex number from polar parameters."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"make-polar: argument can't be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"re"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sin"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cos"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"im"},{"@":0,"#":[{"@":3,"#":"re"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(angle x)\n\nReturns angle of the complex number in polar coordinate system."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"angle: number need to be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Math.atan2"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"magnitude"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(magnitude x)\n\nReturns magnitude of the complex number in polar coordinate system."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"magnitude: number need to be complex"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"sqrt"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":0,"#":[{"@":3,"#":"x.__im__"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":0,"#":[{"@":3,"#":"x.__re__"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"random"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":1,"#":"69069"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"c"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"m"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":1,"#":"2"},{"@":0,"#":[{"@":1,"#":"32"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":1,"#":"19380110"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":0,"#":[{"@":4,"#":"(random)\n(random seed)\n\nFunction generate new random real number using Knuth algorithm."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"new-seed"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"c"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"m"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"seed"},{"@":0,"#":[{"@":3,"#":"m"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eof-object?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(eof-object? arg)\n\nFunction check if value is eof object, returned from input string\nport when there are no more data to read."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":3,"#":"eof"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(output-port? arg)\n\nFunction return true if argument is output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputPort"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(input-port? arg)\n\nFunction return true if argument is input port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.InputPort"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-ready?"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(char-ready?)\n(char-ready? port)\n\nFunction check it characters is ready in input port. This is useful mostly\nfor interactive ports that return false if it would wait for user input.\nIt return false if port is closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"char-ready?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.char_ready"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-input-file filename)\n\nFunction return new Input Port with given filename. In Browser user need to\nprovide global fs variable that is instance of FS interface."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-input-file: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"promisify"},{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_readFile"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputFilePort"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-input-port port)\n\nProcedure close port that was opened with open-input-file. After that\nit no longer accept reading from that port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-output-port port)\n\nProcedure close port that was opened with open-output-file. After that\nit no longer accept write to that port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-input-file filename proc)\n\nProcedure open file for reading, call user defined procedure with given port\nand then close the port. It return value that was returned by user proc\nand it close the port even if user proc throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-output-file filename proc)\n\nProcedure open file for writing, call user defined procedure with port\nand then close the port. It return value that was returned by user proc and it close the port\neven if user proc throw exception."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"p"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-input-from-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(with-input-from-file string thunk)\n\nProcedure open file and make it current-input-port then thunk is executed.\nAfter thunk is executed current-input-port is restored and file port\nis closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"old-stdin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.get"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdin"},{"@":0,"#":[{"@":3,"#":"old-stdin"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-output-to-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":3,"#":"**interaction-environment**"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"old-stdout"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.get"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal-env.set"},{"@":0,"#":[{"@":4,"#":"stdout"},{"@":0,"#":[{"@":3,"#":"old-stdout"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"lips.env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"file-exists?: fs not defined"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs.stat"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"stat"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"stat.isFile"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-file filename)\n\nFunction open file and return port that can be used for writing. If file\nexists it will throw an Error."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-output-file: file exists"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.OutputFilePort"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"w"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"version"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(scheme-report-environment version)\n\nFunction return new Environment object for given Scheme Spec version.\nOnly argument 5 is supported that create environment for R5RS."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"version"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"version"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":1,"#":"5"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-env"},{"@":0,"#":[{"@":4,"#":"R5RS"},{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"/"},{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"abs"},{"@":0,"#":[{"@":3,"#":"acos"},{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"angle"},{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"asin"},{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"assq"},{"@":0,"#":[{"@":3,"#":"assv"},{"@":0,"#":[{"@":3,"#":"atan"},{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"caaaar"},{"@":0,"#":[{"@":3,"#":"caaadr"},{"@":0,"#":[{"@":3,"#":"caaar"},{"@":0,"#":[{"@":3,"#":"caadar"},{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"caar"},{"@":0,"#":[{"@":3,"#":"cadaar"},{"@":0,"#":[{"@":3,"#":"cadadr"},{"@":0,"#":[{"@":3,"#":"cadar"},{"@":0,"#":[{"@":3,"#":"caddar"},{"@":0,"#":[{"@":3,"#":"cadddr"},{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"call-with-current-continuation"},{"@":0,"#":[{"@":3,"#":"call-with-input-file"},{"@":0,"#":[{"@":3,"#":"call-with-output-file"},{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"case"},{"@":0,"#":[{"@":3,"#":"cdaaar"},{"@":0,"#":[{"@":3,"#":"cdaadr"},{"@":0,"#":[{"@":3,"#":"cdaar"},{"@":0,"#":[{"@":3,"#":"cdadar"},{"@":0,"#":[{"@":3,"#":"cdaddr"},{"@":0,"#":[{"@":3,"#":"cdadr"},{"@":0,"#":[{"@":3,"#":"cdar"},{"@":0,"#":[{"@":3,"#":"cddaar"},{"@":0,"#":[{"@":3,"#":"cddadr"},{"@":0,"#":[{"@":3,"#":"cddar"},{"@":0,"#":[{"@":3,"#":"cdddar"},{"@":0,"#":[{"@":3,"#":"cddddr"},{"@":0,"#":[{"@":3,"#":"cdddr"},{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"ceiling"},{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"char-alphabetic?"},{"@":0,"#":[{"@":3,"#":"char-ci<=?"},{"@":0,"#":[{"@":3,"#":"char-ci<?"},{"@":0,"#":[{"@":3,"#":"char-ci=?"},{"@":0,"#":[{"@":3,"#":"char-ci>=?"},{"@":0,"#":[{"@":3,"#":"char-ci>?"},{"@":0,"#":[{"@":3,"#":"char-downcase"},{"@":0,"#":[{"@":3,"#":"char-lower-case?"},{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"char-ready?"},{"@":0,"#":[{"@":3,"#":"char-upcase"},{"@":0,"#":[{"@":3,"#":"char-upper-case?"},{"@":0,"#":[{"@":3,"#":"char-whitespace?"},{"@":0,"#":[{"@":3,"#":"char<=?"},{"@":0,"#":[{"@":3,"#":"char<?"},{"@":0,"#":[{"@":3,"#":"char=?"},{"@":0,"#":[{"@":3,"#":"char>=?"},{"@":0,"#":[{"@":3,"#":"char>?"},{"@":0,"#":[{"@":3,"#":"char?"},{"@":0,"#":[{"@":3,"#":"close-input-port"},{"@":0,"#":[{"@":3,"#":"close-output-port"},{"@":0,"#":[{"@":3,"#":"complex?"},{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"cos"},{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"delay"},{"@":0,"#":[{"@":3,"#":"denominator"},{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":3,"#":"dynamic-wind"},{"@":0,"#":[{"@":3,"#":"eof-object?"},{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"eqv?"},{"@":0,"#":[{"@":3,"#":"eval"},{"@":0,"#":[{"@":3,"#":"even?"},{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"exp"},{"@":0,"#":[{"@":3,"#":"expt"},{"@":0,"#":[{"@":3,"#":"floor"},{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":3,"#":"force"},{"@":0,"#":[{"@":3,"#":"gcd"},{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":0,"#":[{"@":3,"#":"inexact?"},{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"integer->char"},{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"lcm"},{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":3,"#":"let-syntax"},{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"list->string"},{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"list-ref"},{"@":0,"#":[{"@":3,"#":"list-tail"},{"@":0,"#":[{"@":3,"#":"list?"},{"@":0,"#":[{"@":3,"#":"load"},{"@":0,"#":[{"@":3,"#":"log"},{"@":0,"#":[{"@":3,"#":"magnitude"},{"@":0,"#":[{"@":3,"#":"make-polar"},{"@":0,"#":[{"@":3,"#":"make-rectangular"},{"@":0,"#":[{"@":3,"#":"make-string"},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"max"},{"@":0,"#":[{"@":3,"#":"member"},{"@":0,"#":[{"@":3,"#":"memq"},{"@":0,"#":[{"@":3,"#":"memv"},{"@":0,"#":[{"@":3,"#":"min"},{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"negative?"},{"@":0,"#":[{"@":3,"#":"newline"},{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"null-environment"},{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"numerator"},{"@":0,"#":[{"@":3,"#":"odd?"},{"@":0,"#":[{"@":3,"#":"open-input-file"},{"@":0,"#":[{"@":3,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"peek-char"},{"@":0,"#":[{"@":3,"#":"positive?"},{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"rational?"},{"@":0,"#":[{"@":3,"#":"rationalize"},{"@":0,"#":[{"@":3,"#":"read"},{"@":0,"#":[{"@":3,"#":"read-char"},{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"real?"},{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"reverse"},{"@":0,"#":[{"@":3,"#":"round"},{"@":0,"#":[{"@":3,"#":"scheme-report-environment"},{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"set-car!"},{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"sin"},{"@":0,"#":[{"@":3,"#":"sqrt"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"string->list"},{"@":0,"#":[{"@":3,"#":"string->number"},{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"string-ci<=?"},{"@":0,"#":[{"@":3,"#":"string-ci<?"},{"@":0,"#":[{"@":3,"#":"string-ci=?"},{"@":0,"#":[{"@":3,"#":"string-ci>=?"},{"@":0,"#":[{"@":3,"#":"string-ci>?"},{"@":0,"#":[{"@":3,"#":"string-copy"},{"@":0,"#":[{"@":3,"#":"string-fill!"},{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string-ref"},{"@":0,"#":[{"@":3,"#":"string-set!"},{"@":0,"#":[{"@":3,"#":"string<=?"},{"@":0,"#":[{"@":3,"#":"string<?"},{"@":0,"#":[{"@":3,"#":"string=?"},{"@":0,"#":[{"@":3,"#":"string>=?"},{"@":0,"#":[{"@":3,"#":"string>?"},{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"tan"},{"@":0,"#":[{"@":3,"#":"truncate"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"with-input-from-file"},{"@":0,"#":[{"@":3,"#":"with-output-to-file"},{"@":0,"#":[{"@":3,"#":"write"},{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"zero?"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":1,"#":"7"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"not yet implemented"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"scheme-report-environment: version "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number->string"},{"@":0,"#":[{"@":3,"#":"version"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" not supported"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"prefix"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(%make-vector prefix type help)\n\nMega helper macro that create list of functions for single byte vector\nbased on typed array from JavaScript"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"prefix"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"l-type"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"static"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a.~a"},{"@":0,"#":[{"@":3,"#":"type-str"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"static"},{"@":0,"#":[{"@":4,"#":"from"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"str"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":3,"#":"str"},{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"make-~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"%~avector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"#~a"},{"@":0,"#":[{"@":3,"#":"prefix-str"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector->list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"~avector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"list->~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn-name"},{"@":0,"#":[{"@":4,"#":"vector->~avector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":2,"#":0}]}]},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a v1 v2 ...)\n\nCreate ~a from give arguments."},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list->vector"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a v)\n\nreturn length of ~a."},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"v.length"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"fill"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a k fill)\n\nAllocate new ~a of length k, with optional initial values."},{"@":0,"#":[{"@":3,"#":"make-vector"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fill"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a x)\n\nFunction return #t of argument is ~a otherwise it return #f."},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"object?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction test if index is range for ~a."},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"len"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction return value from vector at index k. If index is out of range it throw exception."},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a index out of range"},{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"(~a vector k)\n\nFunction set value of ~a at index k. If index is out of range it throw exception."},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":0,"#":[{"@":3,"#":"help"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"l-type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector-in-range?"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a index out of range"},{"@":0,"#":[{"@":3,"#":"vector-set!"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"list->tvector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lst"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"vector->tvector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"TypedArray.from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type-vector"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"lips.specials.SPLICE"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-repr!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"_quote"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"repr-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"_quote"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u8"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":4,"#":"unsigned 8-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s8"},{"@":0,"#":[{"@":3,"#":"Int8Array"},{"@":0,"#":[{"@":4,"#":"signed 8-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u16"},{"@":0,"#":[{"@":3,"#":"Uint16Array"},{"@":0,"#":[{"@":4,"#":"unsigned 16-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s16"},{"@":0,"#":[{"@":3,"#":"Int16Array"},{"@":0,"#":[{"@":4,"#":"signed 16-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"u32"},{"@":0,"#":[{"@":3,"#":"Uint16Array"},{"@":0,"#":[{"@":4,"#":"unsigned 32-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"s32"},{"@":0,"#":[{"@":3,"#":"Int16Array"},{"@":0,"#":[{"@":4,"#":"signed 32-bit integer vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"f32"},{"@":0,"#":[{"@":3,"#":"Float32Array"},{"@":0,"#":[{"@":4,"#":"32-bit IEEE floating point number vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%make-vector"},{"@":0,"#":[{"@":3,"#":"f64"},{"@":0,"#":[{"@":3,"#":"Float64Array"},{"@":0,"#":[{"@":4,"#":"64-bit IEEE floating point number vector"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(list-match? predicate list)\n\nFunction check if consecutive elements of the list match the predicate function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[[{"@":4,"#":"function"},{"@":4,"#":"macro"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":4,"#":"pair"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":3,"#":"predicate"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(symbol=? s1 s2 ...)\n\nFunction check if each value is symbol and it's the same according to string=? predicate."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-match?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"equal?"},{"@":0,"#":[{"@":3,"#":"a"},{"@":0,"#":[{"@":3,"#":"b"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(values-ref values n)\n\nFunction return n value of values object which is result of value function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":4,"#":"values"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"values-ref"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"valueOf"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"let-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"values"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list"},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(let-values binding body ...)\n\nThe macro work similar to let but variable is list of values and value\nneed to evaluate to result of calling values."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(vector-append v1 v2 ...)\n\nFunction return new vector by combining it's arguments that should be vectors."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(%range-function spec . body)\n\nMacro that creates R7RS vector functions that have range start end."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector->list vector)\n(vector->list vector start)\n(vector->list vector start end)\n\nFunction copy given range of vector to list. If no start is specified it use\nstart of the vector, if no end is specified it convert to the end of the vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"array->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(string->list string)\n(string->list string start)\n(string->list string start end)\n\nFunction copy given range of string to list. If no start is specified it use\nstart of the string, if no end is specified it convert to the end of the string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string.substring"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"split"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unary"},{"@":0,"#":[{"@":3,"#":"lips.LCharacter"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(vector->string vector)\n(vector->string vector start)\n(vector->string vector start end)\n\nFunction return new string created from vector of characters in given range.\nIf no start is given it create string from 0, if no end is given it return\nstring to the end."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->string"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":""},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%range-function"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-fill!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(vector-fill! vector fill)\n(vector-fill! vector fill start)\n(vector-fill! vector fill start end)\n\nFill vector with a given value in given range. If start is not given is start\nat 0. If end is not given it fill till the end if the vector."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"vector->fill!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":3,"#":"fill"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"recur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"n"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"let*-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bind"},{"@":0,"#":[{"@":3,"#":"values"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"bind"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"rest"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":4,"#":"valueOf"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(let*-values binding body ...)\n\nThe macro work similar to let* but variable is list of values and value\nneed to evaluate to result of calling values."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient&remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"y"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"y"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"r"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":3,"#":"q"},{"@":0,"#":[{"@":3,"#":"r"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor-quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values-ref"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"floor-remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"modulo"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate/"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient&remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate-quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quotient"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"truncate-remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"remainder"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"y"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"case-lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"case-lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"params"},{"@":0,"#":[{"@":3,"#":"body0"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"letrec-syntax"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":3,"#":":::"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"no matching clause"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":3,"#":"rest"}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":3,"#":"tail"}]}]},{"@":3,"#":"body"}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"p"},{"@":0,"#":[{"@":3,"#":":::"},{"@":3,"#":"tail"}]}]},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":3,"#":"rest"}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cl"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"params"},{"@":0,"#":[{"@":3,"#":"body0"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(case-lambda expr ...)\n\nMacro create new function with different version of the function depend on\nnumber of arguments. Each expression is similar to single lambda.\n\ne.g.:\n\n (define sum\n (case-lambda\n ((x) x)\n ((x y) (+ x y))\n ((x y z) (+ x y z))))\n\n (sum 1)\n (sum 1 2)\n (sum 1 2 3)\n\nMore arguments will give error."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean=?"},{"@":3,"#":"args"}]},{"@":0,"#":[{"@":4,"#":"(boolean=? b1 b2 ...)\n\nFunction check if all arguments are boolean and if they are the same."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"2"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"boolean=?: too few arguments"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reduce"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"acc"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"boolean?"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"acc"},{"@":0,"#":[{"@":3,"#":"item"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(port? x)\n\nFunction return true of argument is nput or output port port object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"square"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(square z)\n\nReturns the square of z. This is equivalent to (* z z)."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"*"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"when"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"when"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(when test body ...)\n\nMacro execute body when test expression is true."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"unless"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unless"},{"@":0,"#":[{"@":3,"#":"test"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"test"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"result1"},{"@":0,"#":[{"@":3,"#":"result2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(unless test body ...)\n\nMacro execute body when test expression is false."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"inexact"},{"@":0,"#":[{"@":3,"#":"exact->inexact"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"exact"},{"@":0,"#":[{"@":3,"#":"inexact->exact"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact-integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(exact-integer? n)\n\nFunction returns #t if z is both exact and an integer; otherwise\nreturns #f."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"integer?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact?"},{"@":0,"#":[{"@":3,"#":"n"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(vector-map fn vector1 vector2 ...)\n\nFunction return new vector from applying function fn to each element\nof the vectors, similar to map for lists."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"vector?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"vector-map: function require at least 1 vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"min"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"len"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"args"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"push"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(string-map fn string1 stringr2 ...)\n\nFunction return new string from applying function fn to each element\nof the strings, similar to map for lists."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"="},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"length"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"every"},{"@":0,"#":[{"@":3,"#":"string?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":4,"#":"string-map: function require at least 1 string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-map"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"string->vector"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"dynamic-wind"},{"@":0,"#":[{"@":3,"#":"before"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":0,"#":[{"@":3,"#":"after"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(dynamic-wind before thunk after)\n\nFunction accept 3 procedures/lambdas and execute thunk with before and always\nafter even if error accur"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"before"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"error"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"after"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"with-exception-handler"},{"@":0,"#":[{"@":3,"#":"handler"},{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(with-exception-handler handler thunk)\n\nProcedure call and return value of thunk function, if exception happen\nit call handler procedure."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"thunk"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"catch"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"handler"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"raise"},{"@":0,"#":[{"@":3,"#":"throw"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"dummy"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":3,"#":"args"},{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":3,"#":"warn"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"warn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":3,"#":"..."},{"@":3,"#":"warn"}]}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"warn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"var0"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"list"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-values (a b ...) expr)\n\nFunction evaluate expression expr and if it evaluates to result of values\nthen it will defined each value as variable like with define."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"include"},{"@":3,"#":"files"}]},{"@":0,"#":[{"@":4,"#":"(include file ...)\n\nMacro that load at least one file content and insert them into one,\nbody expression."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"include: at least one file path required"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs.readFile"},{"@":0,"#":[{"@":3,"#":"file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"err"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"err"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.parse"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"readFile"},{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"for-each"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"text"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fetch"},{"@":0,"#":[{"@":3,"#":"file"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"text"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.parse"},{"@":0,"#":[{"@":3,"#":"text"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"concat"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"files"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"result.length"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":4,"#":"step"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"join"},{"@":0,"#":[{"@":4,"#":" "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector->list"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"raise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"format"},{"@":0,"#":[{"@":4,"#":"~a ~a"},{"@":0,"#":[{"@":3,"#":"message"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":4,"#":"step"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":4,"#":"Unfulfilled cond-expand"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":3,"#":"req2"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":3,"#":"req"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"req"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond-expand"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"more-clauses"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"features"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"r7rs"},{"@":0,"#":[{"@":3,"#":"srfi-0"},{"@":0,"#":[{"@":3,"#":"srfi-2"},{"@":0,"#":[{"@":3,"#":"srfi-4"},{"@":0,"#":[{"@":3,"#":"srfi-6"},{"@":0,"#":[{"@":3,"#":"srfi-10"},{"@":0,"#":[{"@":3,"#":"srfi-22"},{"@":0,"#":[{"@":3,"#":"srfi-23"},{"@":0,"#":[{"@":3,"#":"srfi-46"},{"@":0,"#":[{"@":3,"#":"srfi-176"},{"@":0,"#":[{"@":3,"#":"lips"},{"@":0,"#":[{"@":3,"#":"complex"},{"@":0,"#":[{"@":3,"#":"full-unicode"},{"@":0,"#":[{"@":3,"#":"ieee-float"},{"@":0,"#":[{"@":3,"#":"ratios"},{"@":0,"#":[{"@":3,"#":"exact-complex"},{"@":0,"#":[{"@":3,"#":"full-numeric-tower"},{"@":2,"#":0}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":0,"#":[[{"@":1,"#":"48"},{"@":1,"#":"1632"},{"@":1,"#":"1776"},{"@":1,"#":"1984"},{"@":1,"#":"2406"},{"@":1,"#":"2534"},{"@":1,"#":"2662"},{"@":1,"#":"2790"},{"@":1,"#":"2918"},{"@":1,"#":"3046"},{"@":1,"#":"3174"},{"@":1,"#":"3302"},{"@":1,"#":"3430"},{"@":1,"#":"3558"},{"@":1,"#":"3664"},{"@":1,"#":"3792"},{"@":1,"#":"3872"},{"@":1,"#":"4160"},{"@":1,"#":"4240"},{"@":1,"#":"6112"},{"@":1,"#":"6160"},{"@":1,"#":"6470"},{"@":1,"#":"6608"},{"@":1,"#":"6784"},{"@":1,"#":"6800"},{"@":1,"#":"6992"},{"@":1,"#":"7088"},{"@":1,"#":"7232"},{"@":1,"#":"7248"},{"@":1,"#":"42528"},{"@":1,"#":"43216"},{"@":1,"#":"43264"},{"@":1,"#":"43472"},{"@":1,"#":"43504"},{"@":1,"#":"43600"},{"@":1,"#":"44016"},{"@":1,"#":"65296"},{"@":1,"#":"66720"},{"@":1,"#":"68912"},{"@":1,"#":"69734"},{"@":1,"#":"69872"},{"@":1,"#":"69942"},{"@":1,"#":"70096"},{"@":1,"#":"70384"},{"@":1,"#":"70736"},{"@":1,"#":"70864"},{"@":1,"#":"71248"},{"@":1,"#":"71360"},{"@":1,"#":"71472"},{"@":1,"#":"71904"},{"@":1,"#":"72016"},{"@":1,"#":"72784"},{"@":1,"#":"73040"},{"@":1,"#":"73120"},{"@":1,"#":"92768"},{"@":1,"#":"93008"},{"@":1,"#":"120782"},{"@":1,"#":"120792"},{"@":1,"#":"120802"},{"@":1,"#":"120812"},{"@":1,"#":"120822"},{"@":1,"#":"123200"},{"@":1,"#":"123632"},{"@":1,"#":"125264"},{"@":1,"#":"130032"}],{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"digit-value"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(digit-value chr)\n\nReturn digit number if character is numeral (as per char-numeric?)\nor #f otherwise."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"digit-value"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char-numeric?"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"ord"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"char->integer"},{"@":0,"#":[{"@":3,"#":"chr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"do"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-length"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"found"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero?"},{"@":0,"#":[{"@":3,"#":"i"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"found"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"result"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"zero"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector-ref"},{"@":0,"#":[{"@":3,"#":"*zero-number-chars*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"ord"},{"@":0,"#":[{"@":3,"#":"zero"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">="},{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<="},{"@":0,"#":[{"@":3,"#":"diff"},{"@":0,"#":[{"@":1,"#":"9"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"result"},{"@":0,"#":[{"@":3,"#":"diff"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"found"},{"@":0,"#":[true,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[false,{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"make-bytevector"},{"@":0,"#":[{"@":3,"#":"make-u8vector"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector?"},{"@":0,"#":[{"@":3,"#":"u8vector?"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"u8vector-length"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-u8-ref"},{"@":0,"#":[{"@":3,"#":"u8vector-ref"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"bytevector-u8-set!"},{"@":0,"#":[{"@":3,"#":"u8vector-set!"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-append v1 ...)\n\nCreate new bytevector u8vector that is created from joining each argument."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-append"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"v1"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"apply"},{"@":0,"#":[{"@":3,"#":"vector-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"v1"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-copy"},{"@":0,"#":[{"@":3,"#":"v"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-copy v)\n(bytevector-copy v start)\n(bytevector-copy v start end)\n\nFunction and return new vector from start to end. If no start and end is provided\nwhole vector is copied and returned."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Uint8Array"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":3,"#":"from"},{"@":3,"#":"rest"}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(bytevector-copy! to at from)\n(bytevector-copy! to at from start)\n(bytevector-copy! to at from start end)\n\nCopies the bytes of bytevector from between start and end to bytevector to,\nstarting at at."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"bytevector-copy!"},{"@":0,"#":[{"@":3,"#":"from"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":1,"#":"0"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"bytevector-copy! `at` need to be positive"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":">"},{"@":0,"#":[{"@":3,"#":"at"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"to"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"bytevector-copy! `at` need to be less then byte vector length"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"from"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":3,"#":"at"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"while"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"to"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"from"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"<"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-u8-set!"},{"@":0,"#":[{"@":3,"#":"to"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-u8-ref"},{"@":0,"#":[{"@":3,"#":"from"},{"@":0,"#":[{"@":3,"#":"j"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"i"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"+"},{"@":0,"#":[{"@":3,"#":"j"},{"@":0,"#":[{"@":1,"#":"1"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"string->utf8"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"TextEncoder"},{"@":0,"#":[{"@":4,"#":"utf-8"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(string->utf8 string)\n(string->utf8 string start)\n(string->utf8 string start end)\n\nFunction converts string into u8 bytevector using utf8 encoding.\nThe start and end is the range of the input string for the conversion."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"string->utf8"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder.encode"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"encoder.encode"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"utf8->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"TextDecoder"},{"@":0,"#":[{"@":4,"#":"utf-8"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v"},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":4,"#":"(utf8->string u8vector)\n(utf8->string u8vector start)\n(utf8->string u8vector start end)\n\nFunction converts u8 bytevector into string using utf8 encoding.\nThe start and end is the range of the input byte vector for the conversion."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"utf8->string"},{"@":0,"#":[{"@":3,"#":"v"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder.decode"},{"@":0,"#":[{"@":3,"#":"v"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Array.from"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"length"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"len"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"decoder.decode"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"v.slice"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-input-string string)\n\nFunction create new string port as input that can be used to\nread S-exressions from this port using `read` function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-input-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputStringPort"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"interaction-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-string"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-string)\n\nFunction create new output port that can used to write string into\nand after finish get the whole string using `get-output-string`."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.OutputStringPort"},{"@":0,"#":[{"@":3,"#":"repr"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-output-bytevector"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-output-bytevector)\n\nCreate new output port that can be used to write binary data.\nAfter done with the data the output buffer can be obtained by calling\n`get-output-bytevector` function."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.OutputByteVectorPort"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-output-bytevector"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-output-string port)\n\nFunction get full string from string port. If nothing was wrote\nto given port it will return empty string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputByteVectorPort"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"get-output-bytevector: expecting output-bytevector-port get "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get-output-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(get-output-string port)\n\nFunction get full string from string port. If nothing was wrote\nto given port it will return empty string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":3,"#":"lips.OutputStringPort"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"get-output-string: expecting output-string-port get "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.valueOf"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-input-bytevector"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-input-bytevector bytevector)\n\nCreate new input binary port with given bytevector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-input-bytevector"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputByteVectorPort"},{"@":0,"#":[{"@":3,"#":"bytevector"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open-binary-input-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(open-binary-input-file filename)\n\nFunction return new Input Binary Port with given filename. In Browser\nuser need to provide global fs variable that is instance of FS interface."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"buffer->u8vector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%read-binary-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.InputBinaryFilePort"},{"@":0,"#":[{"@":3,"#":"u8vector"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(binary-port? port)\n\nFunction test if argument is binary port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"port.__type__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"binary"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"textual-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(textual-port? port)\n\nFunction test if argument is string port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"port.__type__"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Symbol.for"},{"@":0,"#":[{"@":4,"#":"text"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":3,"#":"rest"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"peek-u8"},{"@":0,"#":[{"@":4,"#":"(peek-u8)\n(peek-u8 port)\n\nReturn next byte from input-binary port. If there are no more bytes\nit return eof object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.peek_u8"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"read-u8"},{"@":0,"#":[{"@":4,"#":"(read-u8)\n(read-u8 port)\n\nRead next byte from input-binary port. If there are no more bytes\nit return eof object."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_u8"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-input-lambda"},{"@":0,"#":[{"@":3,"#":"u8-ready?"},{"@":0,"#":[{"@":4,"#":"(u8-ready?)\n(u8-ready? port)\n\nReturns #t if a byte is ready on the binary input port and returns #f otherwise.\nIf u8-ready? returns #t then the next read-u8 operation on the given port is\nguaranteed not to hang. If the port is at end of file then u8-ready? returns #t."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.u8_ready"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-bytevector k)\n(read-bytevector k port)\n\nRead next n bytes from input-binary port. If there are no more bytes\nit returns eof object. If there are less then n bytes in port it\nreturn the only bytes that are available"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"read-bytevector: invalid port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_u8_vector"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"type"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name-str"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"docstring"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"type"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name-str"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"write-u8"},{"@":0,"#":[{"@":4,"#":"number"},{"@":0,"#":[{"@":4,"#":"(write-u8 byte)\n(write-u8 byte port)\n\nWrite byte into binary output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.write_u8"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"%define-binary-output-lambda"},{"@":0,"#":[{"@":3,"#":"write-bytevector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":0,"#":[{"@":4,"#":"(write-bytevector bytevector)\n(write-bytevector bytevector port)\n\nWrite byte vector into binary output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"data"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.write_u8_vector"},{"@":0,"#":[{"@":3,"#":"data"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"open-binary-output-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(open-binary-output-file filename)\n\nFunction open file and return port that can be used for writing. If file\nexists it will throw an Error."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"open-output-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"open"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"open-binary-output-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"file-exists?"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"open-binary-output-file: file exists"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.OutputBinaryFilePort"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"open"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"w"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-bytevector! bytevector)\n(read-bytevector! bytevector port)\n(read-bytevector! bytevector port start)\n(read-bytevector! bytevector port start end)\n\nFunction read next bytes from binary input port and write them into byte vector.\nif not start is specified it start to write into 0 position of the vector until\nthe end or end the vector if no end is specified."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":0,"#":[{"@":4,"#":"uint8array"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"bytevector-length"},{"@":0,"#":[{"@":3,"#":"vector"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"binary-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"read-bytevector!: invalid port. Binary port required."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-bytevector!"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"out"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-bytevector"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":3,"#":"start"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"vector.set"},{"@":0,"#":[{"@":3,"#":"out"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"delete-file"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(delete-file filename)\n\nFunction delete the file of given name."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"delete-file"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%fs-promisify-proc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"unlink"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"delete-file"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unlink"},{"@":0,"#":[{"@":3,"#":"filename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"call-with-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":3,"#":"proc"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(call-with-port port proc)\n\nProc is executed with given port and after it returns, the port is closed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"try"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"proc"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finally"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"procedure?"},{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"close-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(close-port port)\n\nClose input or output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"close-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[[{"@":4,"#":"input-port"},{"@":4,"#":"output-port"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.close"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eof-object"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(eof-object)\n\nProcedure returns eof object that indicate end of the port"},{"@":0,"#":[{"@":3,"#":"lips.eof"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port-open?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(output-port-open? port)\n\nFunction check if argument is output-port and if you can write to it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"output-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.is_open"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port-open?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(input-port-open? port)\n\nFunction check if argument is input-port and if you can read from it."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"input-port?"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.is_open"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"flush-output-port"},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(flush-output-port port)\n\nFunctio do nothing, flush is not needed in LIPS in both NodeJS and Browser.\nThe function is added, so it don't throw exception when using R7RS code."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[false,{"@":0,"#":[false,{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-string string)\n(write-string string port)\n(write-string string port start)\n(write-string string port start end)\n\nWrites the characters of string from start to end in left-toright order\nto the textual output port."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":1,"#":"0"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-length"},{"@":0,"#":[{"@":3,"#":"string"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-string"},{"@":0,"#":[{"@":3,"#":"end"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"substring"},{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"start"},{"@":0,"#":[{"@":3,"#":"end"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(write-char string)\n(write-char string port)\n\nWrites the character char (not an external representation of the character)\nto the given textual output port and returns an unspecified value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"char"},{"@":0,"#":[{"@":4,"#":"character"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-output-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"write-char"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"output-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"display"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string"},{"@":0,"#":[{"@":3,"#":"char"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"port"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":3,"#":"rest"}]}]},{"@":0,"#":[{"@":4,"#":"(read-string k)\n(read-string k port)\n\nReads the next k characters, or as many as are available\nbefore the end of file, from the textual input port into a\nnewly allocated string in left-to-right order and returns the\nstring. If no characters are available before the end of file,\nan end-of-file object is returned."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":0,"#":[{"@":4,"#":"number"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-input-port"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"rest"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"read-string"},{"@":0,"#":[{"@":3,"#":"port"},{"@":0,"#":[{"@":4,"#":"input-port"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"port.read_string"},{"@":0,"#":[{"@":3,"#":"k"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"list-copy"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(list-copy obj)\n\nCopy the object passed as argument but only if it's list. The car elements\nof the list are not copied, they are passed as is."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"list-copy"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[[{"@":4,"#":"pair"},{"@":4,"#":"nil"}],{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj.clone"},{"@":0,"#":[false,{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-record-type"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":3,"#":"fields"}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-record-type name constructor pred . fields)\n\nMacro for defining records. Example of usage:\n\n(define-record-type <pare>\n (kons x y)\n pare?\n (x kar set-kar!)\n (y kdr set-kdr!))\n\n(define p (kons 1 2))\n(print (kar p))\n;; 1\n(set-kdr! p 3)\n(print (kdr p))\n;; 3"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"class"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"self."},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string->symbol"},{"@":0,"#":[{"@":3,"#":"prop"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toType"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":">"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"constructor"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"instanceof"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"obj"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cddr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"field"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"object is not record of type "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"set"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"set"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"get"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"record"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"pred"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"object is not record of type "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"obj-name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"prop-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"value-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"fields"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(nan? x)\n\nFunction check if argument x is Not a Number (NaN) value."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x.isNaN"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"nan?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(infinite? x)\n\nFunction check if value is infinite."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.NEGATIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"Number.POSITIVE_INFINITY"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"number?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":3,"#":"NaN"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%number-type"},{"@":0,"#":[{"@":4,"#":"complex"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"or"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"real-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"imag-part"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"finite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":"(finite? x)\n\nFunction check if value is finite."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"infinite?"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-class"},{"@":0,"#":[{"@":3,"#":"%Library"},{"@":0,"#":[{"@":3,"#":"Object"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"constructor"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"namespace "},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":4,"#":" already exists in library "},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-obj!"},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":3,"#":"self.__namespace__"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"environment?"},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"namespace "},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":4,"#":" sdon't exists"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"env"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toString"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"self"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"#<Library("},{"@":0,"#":[{"@":3,"#":"self.__name__"},{"@":0,"#":[{"@":4,"#":")>"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":3,"#":"library"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"library"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"names"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"import"},{"@":3,"#":"specs"}]},{"@":0,"#":[{"@":4,"#":"(import (library namespace))\n(import (only (library namespace) name1 name2))\n\nMacro for importing names from library."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"import: invalid syntax"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"only"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caaddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"throw"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Error"},{"@":0,"#":[{"@":4,"#":"import: invalid syntax"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"else"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent.get"},{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%import-name"},{"@":0,"#":[{"@":3,"#":"lib-name"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"env"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib.env"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new-library"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(new-library name)\n\nCreate new empty library object with empty namespace."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__parent__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"get"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"throwError":false},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"%Library"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"x"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"lips.Environment"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"library-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"-"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"toLowerCase"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lib.append"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"x"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"lib"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%export"},{"@":0,"#":[{"@":3,"#":"module"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"map"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol=?"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"rename"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"caddr"},{"@":0,"#":[{"@":3,"#":"expr"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"specs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-library"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":3,"#":"body"}]}]},{"@":0,"#":[{"@":4,"#":"(define-library (library (name namespace) . body)\n\nMacro for defining modules inside you can use define to create functions.\nAnd use export name to add that name to defined environment."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"parent"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-environment"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"__parent__"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"module-var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"gensym"},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"name"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"car"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"namespace"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cadr"},{"@":0,"#":[{"@":3,"#":"spec"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quasiquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new-library"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-macro"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"export"},{"@":3,"#":"body"}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"%export"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"namespace-var"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote-splicing"},{"@":0,"#":[{"@":3,"#":"body"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"parent"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"name"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"unquote"},{"@":0,"#":[{"@":3,"#":"module-var"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"current-directory"},{"@":0,"#":[{"@":3,"#":"set-current-directory!"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"window"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cwd"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":3,"#":"location.origin"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"-->"},{"@":0,"#":[{"@":3,"#":"location.pathname"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"replace"},{"@":0,"#":[{},{"@":0,"#":[{"@":4,"#":"/"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"(current-directory)\n\nReturn corrent working directory, default it's corrent URL."},{"@":0,"#":[{"@":3,"#":"cwd"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(set-current-directory! string)\n\nFunction change current working directory to provided string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"set-current-directory!"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"cwd"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"process"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"values"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":4,"#":"(current-directory)\n\nReturn corrent working directory, default it's path from where\nthe script was executed."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process.cwd"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"/"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]},{"@":0,"#":[{"@":4,"#":"(set-current-directory! string)\n\nFunction change current working directory to provided string."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"typecheck"},{"@":0,"#":[{"@":4,"#":"set-current-directory!"},{"@":0,"#":[{"@":3,"#":"value"},{"@":0,"#":[{"@":4,"#":"string"},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"process.chdir"},{"@":0,"#":[{"@":3,"#":"value"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":0,"#":[true,{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]},{"@":2,"#":0}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"begin"},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expression"},{"@":2,"#":0}]},{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":3,"#":"expression"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and-let*"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"expr"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"body"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]}]}]}]},{"@":0,"#":[{"@":4,"#":"(and-let* ((name expression) expression ...) body)\n\nMacro that combine let and and. First expression need to be in form of let.\nSymbol expression the rest can be boolean expression or name expreession.\nThis is implementation of SRFI-2."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"set-special!"},{"@":0,"#":[{"@":4,"#":"#,"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"sharp-comma"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"define"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"define-reader-ctor"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(define-reader-ctor symbol fn)\n\nDefine the value for #, syntax. SRFI-10\nExample:\n\n(define-reader-ctor '+ +)\n(print #,(+ 1 2))"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set-cdr!"},{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"set!"},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cons"},{"@":0,"#":[{"@":3,"#":"symbol"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"define-syntax"},{"@":0,"#":[{"@":3,"#":"sharp-comma"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-rules"},{"@":0,"#":[{"@":2,"#":0},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"_"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"node"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"assoc"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"**reader-ctor-list**"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"pair?"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cdr"},{"@":0,"#":[{"@":3,"#":"node"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"syntax-error"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"Invalid symbol "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"symbol->string"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"fn"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":4,"#":" in expression "},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"repr"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fn"},{"@":0,"#":[{"@":3,"#":"arg"},{"@":0,"#":[{"@":3,"#":"..."},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":4,"#":"(sharp-comma expr)\n#,(ctor ...)\n\nThis is syntax extension for SRFI-10. To define the function to be used with\nThis syntax you need to call `define-reader-ctor` function and define\nsymbol function mapping."},{"@":2,"#":0}]}]}]}]},{"@":0,"#":[{"@":3,"#":"let*"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"fs"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"require"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"and"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"indexed-db?"},{"@":2,"#":0}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"new"},{"@":0,"#":[{"@":3,"#":"Promise"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":3,"#":"reject"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.configure"},{"@":0,"#":[{"options":{},"fs":{"@":4,"#":"IndexedDB"}},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lambda"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"resolve"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.BFSRequire"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"reject"},{"@":0,"#":[{"@":3,"#":"e"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"console.warn"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"string-append"},{"@":0,"#":[{"@":4,"#":"BrowserFS not initialized "},{"@":0,"#":[{"@":4,"#":"IndexedDB is not available"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":2,"#":0},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"cond"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"eq?"},{"@":0,"#":[{"@":3,"#":"self"},{"@":0,"#":[{"@":3,"#":"global"},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":3,"#":"self.Buffer"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"self.BrowserFS"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"."},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"BrowserFS.BFSRequire"},{"@":0,"#":[{"@":4,"#":"buffer"},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"let"},{"@":0,"#":[{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"lips.env.get"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"quote"},{"@":0,"#":[{"@":3,"#":"**internal-env**"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":2,"#":0}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal.set"},{"@":0,"#":[{"@":4,"#":"Buffer"},{"@":0,"#":[{"@":3,"#":"Buffer"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"if"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"not"},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"null?"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]},{"@":2,"#":0}]}]},{"@":0,"#":[{"@":0,"#":[{"@":3,"#":"internal.set"},{"@":0,"#":[{"@":4,"#":"fs"},{"@":0,"#":[{"@":3,"#":"fs"},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]},{"@":2,"#":0}]}]}]}]},{"@":2,"#":0}]}]}]}] \ No newline at end of file diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock index 111d2954..d5c3c77a 100644 --- a/docs/Gemfile.lock +++ b/docs/Gemfile.lock @@ -26,7 +26,7 @@ GEM liquid (~> 4.0) mercenary (~> 0.4.0) pathutil (~> 0.9) - rouge (~> 3.0) + rogue (~> 3.0) safe_yaml (~> 1.0) terminal-table (~> 1.8) jekyll-feed (0.15.1) @@ -58,7 +58,7 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.5) - rouge (3.26.0) + rogue (3.26.0) safe_yaml (1.0.5) sassc (2.4.0) ffi (~> 1.9) diff --git a/examples/preact.scm b/examples/preact.scm index 1e87310f..e3e4912c 100644 --- a/examples/preact.scm +++ b/examples/preact.scm @@ -5,7 +5,7 @@ (define h (.. preact.h)) -(define (ls.get namspace) +(define (ls.get namespace) (--> localStorage (getItem namespace))) (define (ls.set namespace data) @@ -28,7 +28,7 @@ (define-class Button Component - (constructor (lambda (self))) ;; constructor is required - TODO: alow to skip + (constructor (lambda (self))) ;; constructor is required - TODO: allow to skip (render (lambda (self props state) (with-tags (:button (:onclick (lambda (e) (alert "foo"))) diff --git a/examples/reader-macros.js b/examples/reader-macros.js index 6f3fda94..b2ee91b7 100644 --- a/examples/reader-macros.js +++ b/examples/reader-macros.js @@ -22,9 +22,9 @@ return this.get('list->array')(evaluate(wrap, args)); })); - // new Alist ot object syntax you use is like this: - // {}((foo . 10)) it will also evalute all pairs expressions like: - // {}(((concat "foo" "-" "bar") . (+ 2 1))) it will create obect {"foo-bar": 3} + // new Alist of object syntax you use is like this: + // {}((foo . 10)) it will also evaluate all pairs expressions like: + // {}(((concat "foo" "-" "bar") . (+ 2 1))) it will create object {"foo-bar": 3} specials['{}'] = Symbol('make-object'); env.set('make-object', new Macro('make-object', function(code, { dynamic_scope, error }) { const args = { env: this, error }; diff --git a/examples/worker.html b/examples/worker.html index 25a1b0a0..ce9e7ce4 100644 --- a/examples/worker.html +++ b/examples/worker.html @@ -24,7 +24,7 @@ })(); (function manual_init() { - // below is the code that can be used to initalize LIPS in worker without extra code + // below is the code that can be used to initialize LIPS in worker without extra code // almost the same code is in the library function fworker(fn) { // ref: https://stackoverflow.com/a/10372280/387194 diff --git a/lib/R5RS.scm b/lib/R5RS.scm index 9defc653..2cfb19f4 100755 --- a/lib/R5RS.scm +++ b/lib/R5RS.scm @@ -75,7 +75,7 @@ ;; ----------------------------------------------------------------------------- (set-repr! Array (lambda (arr q) - ;; Array.from is used to convert emtpy to undefined + ;; Array.from is used to convert empty to undefined ;; but we can't use the value because Array.from calls ;; valueOf on its arguments (let ((result (--> (Array.from arr) @@ -603,16 +603,16 @@ (lips.rationalize number tolerance)) ;; ----------------------------------------------------------------------------- -(define (%mem/search acces op obj list) +(define (%mem/search access op obj list) "(%member obj list function) Helper method to get first list where car equal to obj - using provied functions as comparator." + using provided function as comparator." (if (null? list) false - (if (op (acces list) obj) + (if (op (access list) obj) list - (%mem/search acces op obj (cdr list))))) + (%mem/search access op obj (cdr list))))) ;; ----------------------------------------------------------------------------- (define (memq obj list) @@ -639,8 +639,8 @@ (%mem/search car equal? obj list)) ;; ----------------------------------------------------------------------------- -(define (%assoc/acessor name) - "(%assoc/acessor name) +(define (%assoc/accessor name) + "(%assoc/accessor name) Returns carr with typecheck using give name." (lambda (x) @@ -654,7 +654,7 @@ Generic function that used in assoc functions with defined comparator function." (typecheck "assoc" alist (vector "nil" "pair")) - (let ((ret (%mem/search (%assoc/acessor "assoc") op obj alist))) + (let ((ret (%mem/search (%assoc/accessor "assoc") op obj alist))) (if ret (car ret) ret))) @@ -919,7 +919,7 @@ (define (integer->char n) "(integer->char chr) - Function that converts number argument to chararacter." + Function that converts number argument to character." (typecheck "integer->char" n "number") (if (integer? n) (string-ref (String.fromCodePoint n) 0) @@ -927,7 +927,7 @@ ;; ----------------------------------------------------------------------------- (define-macro (%define-chr-re spec str re) - "(%define-chr-re (name chr) sring re) + "(%define-chr-re (name chr) string re) Macro defines the procedure that tests character against regular expression." `(define ,spec @@ -964,7 +964,7 @@ "(%char-cmp name a b) Function that compares two characters and return 0 if they are equal, - -1 second is smaller and 1 if is larget. The function compare + -1 second is smaller and 1 if is larger. The function compare the codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) @@ -1014,7 +1014,7 @@ "(%char-cmp name a b) Function that compares two characters and return 0 if they are equal, - -1 second is smaller and 1 if is larget. The function compare + -1 second is smaller and 1 if is larger. The function compare the codepoints of the character." (typecheck name chr1 "character" 1) (typecheck name chr2 "character" 2) @@ -1217,7 +1217,7 @@ [else result3]) Macro for switch case statement. It test if value is any of the item. If - item match the value it will return coresponding result expression value. + item match the value it will return corresponding result expression value. If no value match and there is else it will return that result.") ;; ----------------------------------------------------------------------------- @@ -1227,7 +1227,7 @@ (define (numerator n) "(numerator n) - Return numberator of rational or same number if n is not rational." + Return numerator of rational or same number if n is not rational." (typecheck "numerator" n "number") (cond ((integer? n) n) ((rational? n) n.__num__) @@ -1478,7 +1478,7 @@ "(scheme-report-environment version) Returns new Environment object for given Scheme Spec version. - Only argument 5 is supported that create environemnt for R5RS." + Only argument 5 is supported that create environment for R5RS." (typecheck "scheme-report-environment" version "number") (case version ((5) (%make-env "R5RS" * + - / < <= = > >= abs acos and angle append apply asin assoc assq assv diff --git a/lib/R7RS.scm b/lib/R7RS.scm index 2fb91304..49c60504 100755 --- a/lib/R7RS.scm +++ b/lib/R7RS.scm @@ -32,7 +32,7 @@ (define (symbol=? . args) "(symbol=? s1 s2 ...) - Checks if each value is symbol and it's the same acording to string=? predicate." + Checks if each value is symbol and it's the same according to string=? predicate." (list-match? (lambda (a b) (and (symbol? a) (symbol? b) (equal? a b))) args)) @@ -352,7 +352,7 @@ (lambda args #f)))) ((define-values (var) expr) (define var expr)) - ((define-values (var0 var1 ... varn) expr) + ((define-values (var0 var1 ... warn) expr) (begin (define var0 (call-with-values (lambda () expr) @@ -361,11 +361,11 @@ (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... - (define varn + (define warn (let ((v (cadr var0))) (set! var0 (car var0)) v)))) - ((define-values (var0 var1 ... . varn) expr) + ((define-values (var0 var1 ... . warn) expr) (begin (define var0 (call-with-values (lambda () expr) @@ -374,7 +374,7 @@ (let ((v (cadr var0))) (set-cdr! var0 (cddr var0)) v)) ... - (define varn + (define warn (let ((v (cdr var0))) (set! var0 (car var0)) v)))) @@ -915,7 +915,7 @@ (define (flush-output-port port) "(flush-output-port port) - Functio do nothing, flush is not needed in LIPS in both NodeJS and Browser. + Function do nothing, flush is not needed in LIPS in both NodeJS and Browser. The function is added, so it don't throw exception when using R7RS code." (if #f #f)) @@ -1245,7 +1245,7 @@ (define (error-object? obj) "(error-object? obj) - Checks if object is of Error object throwed by error function." + Checks if object is of Error object thrown by error function." (instanceof lips.Error obj)) ;; ----------------------------------------------------------------------------- @@ -1268,17 +1268,17 @@ (define (get-environment-variables) "(get-environment-variables) - Returns all process environment variables as an alist. This funtion throws exception + Returns all process environment variables as an alist. This function throws exception when called in browser." (if (eq? self window) - (throw "get-environment-variables: Node.js only funtion") + (throw "get-environment-variables: Node.js only function") (object->alist process.env))) ;; ----------------------------------------------------------------------------- (define (get-environment-variable name) "(get-environment-variable name) - Returns given environment variable. This funtion throws exception + Returns given environment variable. This function throws exception when called in browser." (. process.env name)) @@ -1300,7 +1300,7 @@ (define (current-jiffy) "(current-jiffy) - Retturn corrent jiffy. In LIPS is jiffy since start of the process. + Return current jiffy. In LIPS is jiffy since start of the process. You can divide this value by (jiffies-per-second) to get seconds since start of the process. And you can add %%start-jiffy to get jiffy since January 1, 1970." diff --git a/lib/bootstrap.scm b/lib/bootstrap.scm index cf91aa8e..9a11df06 100755 --- a/lib/bootstrap.scm +++ b/lib/bootstrap.scm @@ -596,7 +596,7 @@ (define (interaction-environment) "(interaction-environment) - Returns the interaction environement equal to lips.env. This can be overwritten + Returns the interaction environment equal to lips.env. This can be overwritten when creating new interpreter with lips.Interpreter." **interaction-environment**) @@ -656,7 +656,7 @@ (define (set-repr! type fn) "(add-repr! type fn) - Function that adds the string represention to the type, which should be a constructor function. + Function that adds the string representation to the type, which should be a constructor function. Function fn should have args (obj q) and it should return a string. obj is the value that need to be converted to a string. If the object is nested and you need to use `repr` recursively, @@ -671,7 +671,7 @@ (define (unset-repr! type) "(unset-repr! type) - Removes the string represention of the type, which should be constructor function, + Removes the string representation of the type, which should be constructor function, added by add-repr! function." (typecheck "unset-repr!" type "function") (ignore (--> lips.repr (delete type)))) @@ -696,7 +696,7 @@ (define (bound? x . rest) "(bound? x [env]) - Function that check if the variable is defined in the given environement, or interaction-environment + Function that check if the variable is defined in the given environment, or interaction-environment if not specified." (let ((env (if (null? rest) (interaction-environment) (car rest)))) (try (begin @@ -720,7 +720,7 @@ (define (qsort e predicate) "(qsort list predicate) - Sorts the list using the quick sort alorithm according to predicate." + Sorts the list using the quick sort algorithm according to predicate." (if (or (null? e) (<= (length e) 1)) e (let loop ((left nil) (right nil) @@ -748,7 +748,7 @@ Function that calls fn on each item of the list, if every value returns true it will return true otherwise it return false. - Analagous to Python all(map(fn, list))." + Analogous to Python all(map(fn, list))." (if (null? list) true (and (fn (car list)) (every fn (cdr list))))) @@ -782,7 +782,7 @@ (define (await value) "(await value) - Unquotes a quoted promise so it can be automagicaly evaluated (resolved + Unquotes a quoted promise so it can be automagically evaluated (resolved to its value)." (if (instanceof lips.QuotedPromise value) (value.valueOf) @@ -1278,11 +1278,11 @@ (define-macro (%not-implemented name) "(%not-implemented name) - Returns new function that throws an exception with a message that this function is not implmeneted." + Returns new function that throws an exception with a message that this function is not implemented." (let ((str-name (symbol->string name))) `(lambda () ,(string-append "(" str-name ")\n\nThis function is not yet implemented.") - (throw (new Error ,(string-append str-name " has not beed implemented")))))) + (throw (new Error ,(string-append str-name " has not been implemented")))))) ;; ----------------------------------------------------------------------------- (define-macro (%make-env name . names) @@ -1418,7 +1418,7 @@ Reads all text from a Node.js HTTP response object. If binary argument is true it will return Buffer object that can be converted to u8vector. - ***Warrning:*** it may overflow the Javascript call stack when converting the + ***Warning:*** it may overflow the Javascript call stack when converting the whole buffer to u8vector, because LIPS doesn't have TCO." (let ((result (vector)) (append (if binary @@ -1482,7 +1482,7 @@ (define (complement fn) "(complement fn) - Higer order function that returns the Boolean complement of the given function. If the function fn + Higher order function that returns the Boolean complement of the given function. If the function fn for a given arguments return true the result function will return false, if it would return false, the result function will return true." (typecheck "complement" fn "function") @@ -1532,7 +1532,7 @@ Returns a list from the given function and init value. The function should return a pair where first is the item added to the list and second is next value - passed to the funtion. If the function returns false it ends the loop." + passed to the function. If the function returns false it ends the loop." (typecheck "unfold" fn "function") (let iter ((pair (fn init)) (result '())) (if (not pair) diff --git a/lib/byte-vectors.scm b/lib/byte-vectors.scm index a978271b..68acb99f 100644 --- a/lib/byte-vectors.scm +++ b/lib/byte-vectors.scm @@ -1,7 +1,7 @@ ;; Implementation of byte vector functions - SRFI-4 and SRFI-160 ;; ;; original code was based on https://small.r7rs.org/wiki/NumericVectorsCowan/17/ -;; latest verion is defined in +;; latest version is defined in ;; https://srfi.schemers.org/srfi-160/srfi-160.html ;; ;; it uses JavaScript typed arrays @@ -86,7 +86,7 @@ (define (,vector-ref vector k) ,(format "(~a vector k) - Returns value frome vector at index k. If index is out of range it throw exception." + Returns value from vector at index k. If index is out of range it throw exception." vector-ref help) (typecheck ,(symbol->string vector-ref) vector ,l-type) diff --git a/lib/init.scm b/lib/init.scm index 16f811a2..2309f556 100644 --- a/lib/init.scm +++ b/lib/init.scm @@ -12,7 +12,7 @@ (resolve (BrowserFS.BFSRequire "fs")) (reject e))))))) ((not (null? self.BrowserFS)) - (console.warn (string-append "BrowserFS is not initilalized and " + (console.warn (string-append "BrowserFS is not initialized and " "IndexedDB is not available")) nil))) (Buffer (cond ((eq? self global) diff --git a/lib/js/bookmark.js b/lib/js/bookmark.js index e0913438..14df848e 100755 --- a/lib/js/bookmark.js +++ b/lib/js/bookmark.js @@ -28,7 +28,7 @@ javascript:(function(next) { window.addEventListener('securitypolicyviolation', function handler(event) { if (event.blockedURI === 'https://cdn.jsdelivr.net/npm/jquery') { clearTimeout(timer); - alert('[WARN]: This bookmark will not run on this page becase of ' + + alert('[WARN]: This bookmark will not run on this page because of ' + 'Content Security Policy'); } window.removeEventListener('securitypolicyviolation', handler); diff --git a/lib/js/codemirror.js b/lib/js/codemirror.js index 5b0aec14..c9894803 100644 --- a/lib/js/codemirror.js +++ b/lib/js/codemirror.js @@ -191,7 +191,7 @@ CodeMirror.defineMode("lips", function () { } else if (stream.match(/^[-+0-9.]/, false)) { hasRadix = false; numTest = isDecimalNumber; - // re-consume the intial # if all matches failed + // re-consume the initial # if all matches failed } else if (!hasExactness) { stream.eat('#'); } diff --git a/lib/js/prism.js b/lib/js/prism.js index 1e32cafe..45e3ef79 100755 --- a/lib/js/prism.js +++ b/lib/js/prism.js @@ -1,5 +1,5 @@ /** - * This is file that extend scheme PrismJS sytnax to work better with LIPS + * This is file that extend scheme PrismJS syntax to work better with LIPS * This file is part of LIPS interpreter * Copyright (C) Jakub T. Jankiewicz <https://jcubic.pl> * @@ -8,7 +8,7 @@ */ /* global Prism */ -// extend scheme syntax in PrismJS to inlcude regular expressions +// extend scheme syntax in PrismJS to include regular expressions // (it's modification of JavaScript regex, only look behind was modified) Prism.languages.insertBefore('scheme', 'string', { 'regex': { diff --git a/lib/js/terminal.js b/lib/js/terminal.js index 72b4d147..cdf5d878 100755 --- a/lib/js/terminal.js +++ b/lib/js/terminal.js @@ -1,5 +1,5 @@ /** - * This is example of usuage of LIPS interprter with jQuery Terminal + * This is example of usage of LIPS interprter with jQuery Terminal * * Features: tab completion * parenthesis matching @@ -172,9 +172,9 @@ var terminal = (function($) { mobileIngoreAutoSpace: [',', '.', ')'], completionEscape: false, wordAutocomplete: false, - doubleTab: function(string, maches, echo_command) { + doubleTab: function(string, matches, echo_command) { echo_command(); - this.echo(maches.map(command => { + this.echo(matches.map(command => { return lips.tokenize(command).pop(); }), { formatters: false diff --git a/spec/lips.spec.js b/spec/lips.spec.js index 90f594af..db18c831 100644 --- a/spec/lips.spec.js +++ b/spec/lips.spec.js @@ -121,7 +121,7 @@ describe('scope', function() { expect(result).toEqual([undefined, LNumber(30)]); }); }); - it('should evalute lambda', function() { + it('should evaluate lambda', function() { var code = `(define x 10) ((let ((x 20)) (lambda () x)))`; return exec(code).then((result) => { @@ -145,7 +145,7 @@ describe('scope', function() { expect(result).toEqual([undefined, LNumber(200)]); }); }); - it('should evalute simple lambda', function() { + it('should evaluate simple lambda', function() { var code = `(define y 20) (define (foo x) (* x y)) ((lambda (y) (foo 10)) 2)`; @@ -153,7 +153,7 @@ describe('scope', function() { expect(result).toEqual([undefined, undefined, LNumber(20)]); }); }); - it('should evalute let over lambda', function() { + it('should evaluate let over lambda', function() { var code = `(define y 10) ((let ((y 2)) (lambda () y)))`; return exec(code, true).then(result => { diff --git a/src/lips.js b/src/lips.js index 460ca60e..edc444ee 100644 --- a/src/lips.js +++ b/src/lips.js @@ -450,7 +450,7 @@ function parse_float(arg) { if (is_int(value) && parse.number.match(/e\+?[0-9]/i)) { return LNumber(value); } - // calculate big int and big fration by hand - it don't fit into JS float + // calculate big int and big fraction by hand - it don't fit into JS float var { mantisa, exponent } = parse_big_int(parse.number); if (mantisa !== undefined && exponent !== undefined) { var factor = LNumber(10).pow(LNumber(Math.abs(exponent))); @@ -1121,7 +1121,7 @@ class Lexer { match_rule(rule, { prev_char, char, next_char } = {}) { var [ re, prev_re, next_re, state ] = rule; if (rule.length !== 5) { - throw new Error(`Lexer: Invald rule of length ${rule.length}`); + throw new Error(`Lexer: Invalid rule of length ${rule.length}`); } if (!char.match(re)) { return false; @@ -1151,7 +1151,7 @@ class Lexer { ++this._line; const newline = this._newline; if (this._state === null) { - // keep beging of newline to calculate col + // keep beginning of the newline to calculate col // we don't want to check inside the token (e.g. strings) this._newline = i + 1; } @@ -1271,7 +1271,7 @@ Lexer._rules = [ [/\\/, null, null, Lexer.string, Lexer.string_escape], [/./, /\\/, null, Lexer.string_escape, Lexer.string], - // hash special symbols, lexer don't need to distingiush those + // hash special symbols, lexer don't need to distinguish those // we only care if it's not pick up by vectors literals [/#/, null, /[bdxoeitf]/i, null, Lexer.symbol], @@ -1532,7 +1532,7 @@ class Parser { } return object; } - ballanced() { + balanced() { return this._state.parentheses === 0; } ballancing_error(expr) { @@ -1587,11 +1587,11 @@ class Parser { // MACRO: if macro is used, then it is evaluated in place and the // result is returned by parser and it is quoted. const special = specials.get(token); - const bultin = is_builtin(token); + const builtin = is_builtin(token); this.skip(); let expr; const object = await this._read_object(); - if (!bultin) { + if (!builtin) { var extension = this.__env__.get(special.symbol); if (typeof extension === 'function') { if (is_literal(token)) { @@ -1620,7 +1620,7 @@ class Parser { ); } // Built-in parser extensions just expand into lists like 'x ==> (quote x) - if (bultin) { + if (builtin) { return expr; } // Evaluate parser extension at parse time @@ -1634,7 +1634,7 @@ class Parser { } return result; } else { - throw new Error('Parse Error: invlid parser extension: ' + + throw new Error('Parse Error: invalid parser extension: ' + special.symbol); } } @@ -1692,7 +1692,7 @@ async function* parse(arg, env) { const parser = new Parser(arg, { env }); while (true) { const expr = await parser.read_object(); - if (!parser.ballanced()) { + if (!parser.balanced()) { parser.ballancing_error(expr); } if (expr === eof) { @@ -1791,7 +1791,7 @@ function matcher(name, arg) { } // ---------------------------------------------------------------------- // :: Documentation decorator to LIPS functions if lines starts with : -// :: they are ignored (not trimed) otherwise it trims so +// :: they are ignored (not trimmed) otherwise it trims so // :: so you can have indent in source code // ---------------------------------------------------------------------- function doc(name, fn, doc, dump) { @@ -2026,9 +2026,9 @@ Formatter.prototype._options = function _options(options) { if (typeof options === 'undefined') { return Object.assign({}, defaults); } - var exeptions = options && options.exceptions || {}; - var specials = exeptions.specials || []; - var shift = exeptions.shift || { 1: [] }; + var exceptions = options && options.exceptions || {}; + var specials = exceptions.specials || []; + var shift = exceptions.shift || { 1: [] }; return { ...defaults, ...options, @@ -2099,18 +2099,18 @@ Formatter.prototype._indent = function _indent(tokens, options) { return settings.offset + sexp[0].col + 1; } else { // search for token before S-Expression for case like #(10 or &(:x - var exeption = -1; + var exception = -1; if (before_sexpr) { var shift = Formatter.exception_shift(before_sexpr.token, settings); if (shift !== -1) { - exeption = shift; + exception = shift; } } - if (exeption === -1) { - exeption = Formatter.exception_shift(sexp[1].token, settings); + if (exception === -1) { + exception = Formatter.exception_shift(sexp[1].token, settings); } - if (exeption !== -1) { - return settings.offset + sexp[0].col + exeption; + if (exception !== -1) { + return settings.offset + sexp[0].col + exception; } else if (sexp[0].line < sexp[1].line) { return settings.offset + sexp[0].col + 1; } else if (sexp.length > 3 && sexp[1].line === sexp[3].line) { @@ -3502,7 +3502,7 @@ function extract_patterns(pattern, code, symbols, ellipsis_symbol, scope = {}) { }; const { expansion, define } = scope; // pattern_names parameter is used to distinguish - // multiple matches of ((x ...) ...) agains ((1 2 3) (1 2 3)) + // multiple matches of ((x ...) ...) against ((1 2 3) (1 2 3)) // in loop we add x to the list so we know that this is not // duplicated ellipsis symbol function log(x) { @@ -3524,7 +3524,7 @@ function extract_patterns(pattern, code, symbols, ellipsis_symbol, scope = {}) { if (pattern instanceof LSymbol && symbols.includes(pattern.literal())) { // TODO: literal() may be SLOW const ref = expansion.ref(code); - // shadowing the indentifier works only with lambda and let + // shadowing the identifier works only with lambda and let if (LSymbol.is(code, pattern)) { if (typeof ref === 'undefined') { return true; @@ -3718,7 +3718,7 @@ function extract_patterns(pattern, code, symbols, ellipsis_symbol, scope = {}) { pattern: pattern.toString(), code: code.toString() }); - // case (x y) ===> (var0 var1 ... varn) where var1 match nil + // case (x y) ===> (var0 var1 ... warn) where var1 match nil if (pattern.cdr instanceof Pair && pattern.car instanceof LSymbol && pattern.cdr.cdr instanceof Pair && @@ -4313,7 +4313,7 @@ function unbind(obj) { return obj; } // ---------------------------------------------------------------------- -// :: Function binds with contex that can be optionally unbind +// :: Function binds with context that can be optionally unbind // :: get original function with unbind // ---------------------------------------------------------------------- function bind(fn, context) { @@ -4630,7 +4630,7 @@ function fold(name, fold) { } // ------------------------------------------------------------------------- function limit_math_op(n, fn) { - // + 1 so it inlcude function in guard_math_call + // + 1 so it include function in guard_math_call return limit(n + 1, curry(guard_math_call, fn)); } // ------------------------------------------------------------------------- @@ -4692,7 +4692,7 @@ function LCharacter(char) { char = LCharacter.__names__[char]; } else { // this should never happen - // parser don't alow not defined named characters + // parser don't allow not defined named characters throw new Error('Internal: Unknown named character'); } } else { @@ -4849,7 +4849,7 @@ function LNumber(n, force = false) { if (!LNumber.isNumber(n) && !parsable) { throw new Error(`You can't create LNumber from ${type(n)}`); } - // prevent infite loop https://github.com/indutny/bn.js/issues/186 + // prevent infinite loop https://github.com/indutny/bn.js/issues/186 if (n === null) { n = 0; } @@ -5677,7 +5677,7 @@ LFloat.prototype._op = function(op, n) { return LFloat(fn(this.__value__, n), true); }; // ------------------------------------------------------------------------- -// same aproximation as in guile scheme +// same approximation as in guile scheme LFloat.prototype.toRational = function(n = null) { if (n === null) { return toRational(this.__value__.valueOf()); @@ -6028,7 +6028,7 @@ LBigInteger.prototype._op = function(op, n) { } return LRational({ num: this, denom: n }); } - // use native calucaltion becuase it's real bigint value + // use native calculation because it's real bigint value return LBigInteger(ret, true); }; // ------------------------------------------------------------------------- @@ -6048,7 +6048,7 @@ LBigInteger.prototype.sqrt = function() { // ------------------------------------------------------------------------- LNumber.NaN = LNumber(NaN); // ------------------------------------------------------------------------- -// :: Port abstration - read should be a function that return next line +// :: Port abstraction - read should be a function that return next line // ------------------------------------------------------------------------- function InputPort(read) { if (typeof this !== 'undefined' && !(this instanceof InputPort) || @@ -6713,7 +6713,7 @@ Value.prototype.valueOf = function() { return this.value; }; // ------------------------------------------------------------------------- -// :: Differnt object than value used as object for (values) +// :: Different object than value used as object for (values) // ------------------------------------------------------------------------- function Values(values) { if (values.length) { @@ -6855,7 +6855,7 @@ Environment.prototype.parents = function() { return result; }; // ------------------------------------------------------------------------- -// :: Quote funtion used to pause evaluation from Macro +// :: Quote function used to pause evaluation from Macro // ------------------------------------------------------------------------- function quote(value) { if (is_promise(value)) { @@ -7094,7 +7094,7 @@ var global_env = new Environment({ }); m = str.match(/~([\S])/); if (m) { - throw new Error(`format: Unrecognized escape seqence ${m[1]}`); + throw new Error(`format: Unrecognized escape sequence ${m[1]}`); } return str; }, `(format string n1 n2 ...) @@ -7228,9 +7228,9 @@ var global_env = new Environment({ } if (code.car instanceof Pair && LSymbol.is(code.car.car, '.')) { var second = code.car.cdr.car; - var thrid = code.car.cdr.cdr.car; + var third = code.car.cdr.cdr.car; var object = evaluate(second, { env: this, dynamic_scope, error }); - var key = evaluate(thrid, { env: this, dynamic_scope, error }); + var key = evaluate(third, { env: this, dynamic_scope, error }); return set(object, key, value); } if (!(code.car instanceof LSymbol)) { @@ -7261,7 +7261,7 @@ var global_env = new Environment({ }), `(set! name value) Macro that can be used to set the value of the variable or slot (mutate it). - set! searches the scope chain until it finds first non emtpy slot and sets it.`), + set! searches the scope chain until it finds first non empty slot and sets it.`), // ------------------------------------------------------------------ 'unset!': doc(new Macro('set!', function(code) { if (!(code.car instanceof LSymbol)) { @@ -7510,7 +7510,7 @@ var global_env = new Environment({ Macro that creates a new environment, then evaluates and assigns values to names and then evaluates the body in context of that environment. - Values are evaluated sequentialy and the next value can access the + Values are evaluated sequentially and the next value can access the previous values/names.`), // --------------------------------------------------------------------- 'letrec*': doc( @@ -7536,7 +7536,7 @@ var global_env = new Environment({ Macro that creates a new environment, then evaluates and assigns values to names, and then evaluates the body in context of that environment. Values are evaluated - sequentialy but you can't access previous values/names when the next are + sequentially but you can't access previous values/names when the next are evaluated. You can only get them in the body of the let expression. (If you want to define multiple variables and use them in each other's definitions, use \`let*\`.)`), @@ -7584,7 +7584,7 @@ var global_env = new Environment({ }, `(ignore . body) Macro that will evaluate the expression and swallow any promises that may - be created. It wil discard any value that may be returned by the last body + be created. It will discard any value that may be returned by the last body expression. The code should have side effects and/or when it's promise it should resolve to undefined.`), // ------------------------------------------------------------------ @@ -7602,7 +7602,7 @@ var global_env = new Environment({ Call-with-current-continuation. - NOT SUPPORED BY LIPS RIGHT NOW`), + NOT SUPPORTED BY LIPS RIGHT NOW`), // ------------------------------------------------------------------ define: doc(Macro.defmacro('define', function(code, eval_args) { var env = this; @@ -7708,7 +7708,7 @@ var global_env = new Environment({ return Values(args); }, `(values a1 a2 ...) - If called with more then one elment it will create a special + If called with more then one element it will create a special Values object that can be used in the call-with-values function.`), // ------------------------------------------------------------------ 'call-with-values': doc('call-with-values', function(producer, consumer) { @@ -7733,7 +7733,7 @@ var global_env = new Environment({ return this; }, `(current-environment) - Function that returns the current environement (they're first-class objects!)`), + Function that returns the current environment (they're first-class objects!)`), // ------------------------------------------------------------------ 'parent.frame': doc('parent.frame', function() { return user_env; @@ -7761,7 +7761,7 @@ var global_env = new Environment({ }, `(eval expr) (eval expr environment) - Function that evalutes LIPS Scheme code. If the second argument is provided + Function that evaluates LIPS Scheme code. If the second argument is provided it will be the environment that the code is evaluated in.`), // ------------------------------------------------------------------ lambda: new Macro('lambda', function(code, { dynamic_scope, error } = {}) { @@ -8442,7 +8442,7 @@ var global_env = new Environment({ }, `(append! arg1 ...) Destructive version of append, it can modify the lists in place. It returns - a new list where each argument is appened to the end. It may modify + a new list where each argument is appended to the end. It may modify lists added as arguments.`), // ------------------------------------------------------------------ reverse: doc('reverse', function reverse(arg) { @@ -8753,7 +8753,7 @@ var global_env = new Environment({ return obj instanceof Array; }, `(array? expression) - Predicate that tests if value is an arrray.`), + Predicate that tests if value is an array.`), // ------------------------------------------------------------------ 'object?': doc('object?', function(obj) { return obj !== nil && obj !== null && @@ -8914,7 +8914,7 @@ var global_env = new Environment({ (try expr (finally code)) Macro that executes expr and catches any exceptions thrown. If catch is provided - it's executed when an error is thown. If finally is provided it's always executed + it's executed when an error is thrown. If finally is provided it's always executed at the end.`), // ------------------------------------------------------------------ 'raise': doc('raise', function(obj) { @@ -8997,7 +8997,7 @@ var global_env = new Environment({ value of the list. If you provide more then one list as argument it will take each value from each list and call \`fn\` function with that many argument as number of list arguments. The return - values of the fn calls are acumulated in a result list and + values of the fn calls are accumulated in a result list and returned by map.`), // ------------------------------------------------------------------ 'list?': doc('list?', function(obj) { @@ -9034,7 +9034,7 @@ var global_env = new Environment({ Higher-order function that calls fn on each element of the list. It stops and returns true when fn returns true for a value. If none of the values give true, some will return false. - Analagous to Python any(map(fn, list)).`), + Analogous to Python any(map(fn, list)).`), // ------------------------------------------------------------------ fold: doc('fold', fold('fold', function(fold, fn, init, ...lists) { typecheck('fold', fn, 'function'); @@ -9144,7 +9144,7 @@ var global_env = new Environment({ `(curry fn . args) Higher-order function that creates a curried version of the function. - The result function will have parially applied arguments and it + The result function will have partially applied arguments and it will keep returning one-argument functions until all arguments are provided, then it calls the original function with the accumulated arguments. @@ -9417,7 +9417,7 @@ var global_env = new Environment({ })(); }), `(and . expressions) - Macro that evalutes each expression in sequence and if any value returns false + Macro that evaluates each expression in sequence and if any value returns false it will stop and return false. If each value returns true it will return the last value. If it's called without arguments it will return true.`), // bit operations @@ -10028,7 +10028,7 @@ function evaluate(code, { env, dynamic_scope, error = noop } = {}) { var __promise__ = env.get(Symbol.for('__promise__'), { throwError: false }); if (__promise__ === true && is_promise(result)) { // fix #139 evaluate the code inside the promise that is not data. - // When promise is not quoted it happen automatically, when returing + // When promise is not quoted it happen automatically, when returning // promise from evaluate. result = result.then(result => { if (result instanceof Pair && !value[__data__]) { @@ -10214,7 +10214,7 @@ function Worker(url) { } if (data.method === 'eval') { if (!init) { - send_error('Worker RPC: LIPS not initilized, call init first'); + send_error('Worker RPC: LIPS not initialized, call init first'); return; } init.then(function() { @@ -10495,7 +10495,7 @@ function execError(e) { // ------------------------------------------------------------------------- function init() { var lips_mimes = ['text/x-lips', 'text/x-scheme']; - var bootstraped; + var bootstrapped; function load(script) { return new Promise(function(resolve) { var src = script.getAttribute('src'); @@ -10525,7 +10525,7 @@ function init() { var type = script.getAttribute('type'); if (lips_mimes.includes(type)) { var bootstrap_attr = script.getAttribute('bootstrap'); - if (!bootstraped && typeof bootstrap_attr === 'string') { + if (!bootstrapped && typeof bootstrap_attr === 'string') { return bootstrap(bootstrap_attr).then(function() { return load(script, function(e) { console.error(e); @@ -10552,7 +10552,7 @@ function init() { var bootstrap_attr = script.getAttribute('bootstrap'); if (typeof bootstrap_attr === 'string') { return bootstrap(bootstrap_attr).then(function() { - bootstraped = true; + bootstrapped = true; return loop(); }); } @@ -10593,7 +10593,7 @@ LIPS Interpreter {{VER}} (${_build}) <https://lips.js.org> Copyright (c) 2018-${_year} Jakub T. Jankiewicz Type (env) to see environment with functions macros and variables. You can also -use (help name) to display help for specic function or macro, (apropos name) +use (help name) to display help for specific function or macro, (apropos name) to display list of matched names in environment and (dir object) to list properties of an object. `.replace(/^.*\n/, ''); diff --git a/templates/README.md b/templates/README.md index 66c1e541..c1422a52 100644 --- a/templates/README.md +++ b/templates/README.md @@ -79,7 +79,7 @@ https://github.com/jcubic/lips/blob/master/lib/js/bookmark.js ``` Create any link in your bookmarks, edit it and copy paste the content of that file. -Affter you click on the link it will create the REPL at the bottom of the page. +After you click on the link it will create the REPL at the bottom of the page. (NOTE: It may not work on every page because of content security policy; e.g. google.com or gihub.com) @@ -95,7 +95,7 @@ The simplest way is to include the lips code in the script tag: <script type="text/x-scheme" bootstrap> (let ((what "world") (greet "hello")) - (display (string-append "hello" " " what))) + (display (string-append greet " " what))) </script> ``` @@ -203,7 +203,7 @@ Executables also return a S-Expression according to SRFI-176 use `lips --version ## Limitations Because LIPS is tree walking interpreter sometimes it may be slow. Especially if you want to -process long arrays and use callback function. If the array is quite large each pice of code +process long arrays and use callback function. If the array is quite large each piece of code inside the callback may slow down the processing. For example see: script [reference.scm](https://github.com/jcubic/lips/blob/{{BRANCH}}/scripts/reference.scm) @@ -222,12 +222,12 @@ something like this: (arr.sort fn)) ``` -Another example of slow performace is using LIPS with React, the more code you put into components +Another example of slow performance is using LIPS with React, the more code you put into components the slower the app will become. Examples: * [Preact app that update SVG](https://codepen.io/jcubic/pen/PojYxBP) - it requires to use debounce. -* [React with Hooks](https://codepen.io/jcubic/pen/PoKQmpq?editors=1000) - on click the UI freezes for ~300ms, you can see warnigs in dev tools. +* [React with Hooks](https://codepen.io/jcubic/pen/PoKQmpq?editors=1000) - on click the UI freezes for ~300ms, you can see warnings in dev tools. The issue with performance is tracked in [#197](https://github.com/jcubic/lips/issues/197). diff --git a/tests/helpers/helpers.scm b/tests/helpers/helpers.scm index b30920c0..ea09d565 100644 --- a/tests/helpers/helpers.scm +++ b/tests/helpers/helpers.scm @@ -2,7 +2,7 @@ "(t.is a b) Helper comparator for ava. It use equal? so it match two lists and strings. - It use undecumented API that allow to delete StackTrace when assersion fail." + It use undecumented API that allow to delete StackTrace when assertion fail." (let ((attempt (gensym)) (a_name (gensym)) (b_name (gensym))) @@ -35,7 +35,7 @@ (define (%test-specs t specs) "(%test-specs t list) - Funtion test list of specs (\"name\" function result . args)" + Function test list of specs (\"name\" function result . args)" (let iter ((specs specs)) (if (not (null? specs)) (let* ((spec (car specs)) diff --git a/tests/numbers.scm b/tests/numbers.scm index 1c52cf71..8b64c240 100644 --- a/tests/numbers.scm +++ b/tests/numbers.scm @@ -815,7 +815,7 @@ (test "numbers: eq?" (lambda (t) - ;; eq? on numbers is unspecifed - in lisp if two numbers are the same + ;; eq? on numbers is unspecified - in lisp if two numbers are the same ;; but not the same object they are equal (t.is (eq? 10.0i 10i) #f) diff --git a/tests/parser.scm b/tests/parser.scm index d0c8b66b..3872c777 100644 --- a/tests/parser.scm +++ b/tests/parser.scm @@ -151,7 +151,7 @@ 1)")) (t.is (eval (. code 0)) "hello-world"))) -(test "parser: processig strings" +(test "parser: processing strings" (lambda (t) (define list "\\" "\"" "\\\\" "\\\"") (t.is true true))) diff --git a/tests/quotation.scm b/tests/quotation.scm index 9ad68bcb..3d14d1a2 100644 --- a/tests/quotation.scm +++ b/tests/quotation.scm @@ -9,7 +9,7 @@ Iteration macro that evaluate the expression body in scope of the variables. On Eeach loop it increase the variables according to next expression and run - test to check if the loop should continue. If test is signle call the macro + test to check if the loop should continue. If test is single call the macro will not return anything. If the test is pair of expression and value the macro will return that value after finish." (let ((return? (eq? (length test) 2)) (loop (gensym))) diff --git a/tests/syntax.scm b/tests/syntax.scm index bc3c600b..0b4bb817 100644 --- a/tests/syntax.scm +++ b/tests/syntax.scm @@ -260,7 +260,7 @@ (t.is (foo (1 2) (3 4)) '((1 . 2) (3 . 4))) (t.is (foo (1 2) (3 4) (5 6)) '((1 . 2) (3 . 4) (5 . 6))))) -(test "syntax: zip trasformation" +(test "syntax: zip transformation" (lambda (t) (define-syntax foo @@ -907,7 +907,7 @@ (t.is (foo (1 2 3) (4 5 6)) '(((1 2 3) (1 2 3)) ((4 5 6) (4 5 6)))))) -(test "syntax: R7RS multiple elipsis extensions" +(test "syntax: R7RS multiple ellipsis extensions" (lambda (t) ;; source https://practical-scheme.net/gauche/man/gauche-refe/Hygienic-macros.html diff --git a/tests/test.js b/tests/test.js index 6437c06c..d9d8b2fd 100644 --- a/tests/test.js +++ b/tests/test.js @@ -1,5 +1,5 @@ /* - * Boostrap tests written in Scheme using AVA testing framework + * Bootstrap tests written in Scheme using AVA testing framework * * This file is part of the LIPS - Scheme based Powerful lips in JavaScript * diff --git a/todo.lips b/todo.lips index 7cf580e3..a6de93c8 100644 --- a/todo.lips +++ b/todo.lips @@ -45,7 +45,7 @@ (define (uuid) - "Generatates unique ID (comments are because of scheme highligting in emacs (| |) is commnent)" + "Generatates unique ID (comments are because of scheme highlighting in emacs (| |) is comment)" (let ((i 0) (rnd) (uuid "")) (while (< i 32) (set! rnd (| (* (--> Math (random)) 16) 0)) ;;|) @@ -189,7 +189,7 @@ (--> $el (data "abort" false)) (render)) (if (not val) - (detroy event) + (destroy event) (begin (on-todo (lambda (todo) (set-cdr! (assoc 'title todo) val))