From 643ced98ab2cd9a39f356b6b8d0f0a9201759d72 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Wed, 4 May 2022 17:00:00 +0200 Subject: [PATCH] Render items with react --- .gitignore | 2 + src/js/bindings/react/react.nim | 2 + src/js/bindings/react/react_dom.nim | 187 + src/js/bindings/react/react_globals.nim | 15 + src/js/bindings/react/react_hooks.nim | 33 + src/js/bindings/react/react_styles.nim | 188 + src/js/bindings/react/react_types.nim | 58 + src/js/example/index.html | 33 + src/js/example/nim.cfg | 1 + src/js/example/package.json | 10 + src/js/example/sandbox.nim | 48 + src/js/example/yarn.lock | 37 + src/org/index.html | 26 + src/org/org_block_heading.js | 5539 +++++++++++++++++++++++ src/org/org_block_heading.nim | 73 +- src/parser/parser_internals.nim | 26 + 16 files changed, 6238 insertions(+), 40 deletions(-) create mode 100644 src/js/bindings/react/react.nim create mode 100644 src/js/bindings/react/react_dom.nim create mode 100644 src/js/bindings/react/react_globals.nim create mode 100644 src/js/bindings/react/react_hooks.nim create mode 100644 src/js/bindings/react/react_styles.nim create mode 100644 src/js/bindings/react/react_types.nim create mode 100644 src/js/example/index.html create mode 100644 src/js/example/nim.cfg create mode 100644 src/js/example/package.json create mode 100644 src/js/example/sandbox.nim create mode 100644 src/js/example/yarn.lock create mode 100644 src/org/index.html create mode 100644 src/org/org_block_heading.js diff --git a/.gitignore b/.gitignore index fed2c7e..e5fcbf9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ result /dst/ /tests/nimcache/ /tests/testresults/ +node_modules +sandbox.js diff --git a/src/js/bindings/react/react.nim b/src/js/bindings/react/react.nim new file mode 100644 index 0000000..92f6216 --- /dev/null +++ b/src/js/bindings/react/react.nim @@ -0,0 +1,2 @@ +import react16/react_hooks +import react16/react_dom, react16/react_types, react16/react_styles diff --git a/src/js/bindings/react/react_dom.nim b/src/js/bindings/react/react_dom.nim new file mode 100644 index 0000000..b1d9f25 --- /dev/null +++ b/src/js/bindings/react/react_dom.nim @@ -0,0 +1,187 @@ +import macros, dom, jsffi +import react_types +from react_globals import React + +{.experimental: "callOperator".} + +when not defined(js): + {.error: "React.nim is only available for the JS target".} + +type NodeOrString = ReactNode or seq[ReactNode] or cstring or string + +macro idString(x: untyped): auto = newStrLitNode($x) + +template tocstring(x: typed): auto = + when x is string: cstring(x) + else: x + +{.push importcpp.} +proc createElement*(react: ReactGlobal, tag: cstring, props: Attrs): ReactNode +proc createElement*(react: ReactGlobal, tag: cstring, props: Attrs, + n1: auto): ReactNode +{.pop.} + +template makeDomElement(x: untyped, name: string = "") = + const tag {.gensym.} = if name == "": cstring(idString(x)) else: name + const NIL: Attrs = nil + + proc x*(a: Attrs): ReactNode = + React.createElement(tag, a) + proc x*(a: Attrs, n1: NodeOrString): ReactNode = + let m1 = n1.tocstring + React.createElement(tag, a, m1) + proc x*(a: Attrs, n1, n2: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + React.createElement(tag, a, m1, m2) + proc x*(a: Attrs, n1, n2, n3: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + m3 = n3.tocstring + React.createElement(tag, a, m1, m2, m3) + proc x*(a: Attrs, n1, n2, n3, n4: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + m3 = n3.tocstring + m4 = n4.tocstring + React.createElement(tag, a, m1, m2, m3, m4) + + proc x*(n1: NodeOrString): ReactNode = + let m1 = n1.tocstring + React.createElement(tag, NIL, m1) + proc x*(n1, n2: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + React.createElement(tag, NIL, m1, m2) + proc x*(n1, n2, n3: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + m3 = n3.tocstring + React.createElement(tag, NIL, m1, m2, m3) + proc x*(n1, n2, n3, n4: NodeOrString): ReactNode = + let + m1 = n1.tocstring + m2 = n2.tocstring + m3 = n3.tocstring + m4 = n4.tocstring + React.createElement(tag, NIL, m1, m2, m3, m4) + +makeDomElement(a) +makeDomElement(abbr) +makeDomElement(address) +makeDomElement(area) +makeDomElement(article) +makeDomElement(aside) +makeDomElement(audio) +makeDomElement(b) +makeDomElement(base) +makeDomElement(bdi) +makeDomElement(bdo) +makeDomElement(big) +makeDomElement(blockquote) +makeDomElement(body) +makeDomElement(br) +makeDomElement(button) +makeDomElement(canvas) +makeDomElement(caption) +makeDomElement(cite) +makeDomElement(code) +makeDomElement(col) +makeDomElement(colgroup) +makeDomElement(data) +makeDomElement(datalist) +makeDomElement(dd) +makeDomElement(del) +makeDomElement(details) +makeDomElement(dfn) +makeDomElement(dialog) +makeDomElement(`div`, "div") +makeDomElement(dl) +makeDomElement(dt) +makeDomElement(em) +makeDomElement(embed) +makeDomElement(fieldset) +makeDomElement(figcaption) +makeDomElement(figure) +makeDomElement(footer) +makeDomElement(form) +makeDomElement(h1) +makeDomElement(h2) +makeDomElement(h3) +makeDomElement(h4) +makeDomElement(h5) +makeDomElement(h6) +makeDomElement(head) +makeDomElement(header) +makeDomElement(hgroup) +makeDomElement(hr) +makeDomElement(html) +makeDomElement(i) +makeDomElement(iframe) +makeDomElement(img) +makeDomElement(input) +makeDomElement(ins) +makeDomElement(kbd) +makeDomElement(keygen) +makeDomElement(label) +makeDomElement(legend) +makeDomElement(li) +makeDomElement(link) +makeDomElement(main) +makeDomElement(map) +makeDomElement(mark) +makeDomElement(menu) +makeDomElement(menuitem) +makeDomElement(meta) +makeDomElement(meter) +makeDomElement(nav) +makeDomElement(noscript) +makeDomElement(`object`) +makeDomElement(ol) +makeDomElement(optgroup) +makeDomElement(option) +makeDomElement(output) +makeDomElement(p) +makeDomElement(param) +makeDomElement(picture) +makeDomElement(pre) +makeDomElement(progress) +makeDomElement(q) +makeDomElement(rp) +makeDomElement(rt) +makeDomElement(ruby) +makeDomElement(s) +makeDomElement(samp) +makeDomElement(script) +makeDomElement(section) +makeDomElement(select) +makeDomElement(small) +makeDomElement(source) +makeDomElement(span) +makeDomElement(strong) +makeDomElement(style) +makeDomElement(sub) +makeDomElement(summary) +makeDomElement(sup) +makeDomElement(svg) +makeDomElement(table) +makeDomElement(tbody) +makeDomElement(td) +makeDomElement(textarea) +makeDomElement(tfoot) +makeDomElement(th) +makeDomElement(thead) +makeDomElement(time) +makeDomElement(title) +makeDomElement(tr) +makeDomElement(track) +makeDomElement(u) +makeDomElement(ul) +makeDomElement(`var`) +makeDomElement(video) +makeDomElement(wbr) diff --git a/src/js/bindings/react/react_globals.nim b/src/js/bindings/react/react_globals.nim new file mode 100644 index 0000000..fedcea2 --- /dev/null +++ b/src/js/bindings/react/react_globals.nim @@ -0,0 +1,15 @@ +import react_types + +when not defined(js): + {.error: "React.nim is only available for the JS target".} + +var + React*{.importc, nodecl.}: ReactGlobal + ReactDOM*{.importc, nodecl.}: ReactDOMGlobal + +type + Component*[P, S] = ref object of RootObj + props*: P + state*: S + setState*{.importcpp.}: proc(s: S) + StatelessComponent*[P] = Component[P, void] diff --git a/src/js/bindings/react/react_hooks.nim b/src/js/bindings/react/react_hooks.nim new file mode 100644 index 0000000..d1241d2 --- /dev/null +++ b/src/js/bindings/react/react_hooks.nim @@ -0,0 +1,33 @@ +import jsffi +import sugar + +type + Context* = JsObject + Reference* = ref object of JsObject + current*: auto + UseState*[S] = ref object of JsObject + getter*: S + setter*: S -> S + +proc myUseState*[S](initialState: S): UseState[S] {.importjs: "myUseState(#)".} +# proc useState*(react: ReactGlobal, initialState: State): seq[string] {.importjs: "#.useState(#)".} +# proc useState*(react: ReactGlobal, initialState: State): tuple[state: string, setterFn: proc(newState: JsObject)] {.importjs: "#.useState(#)".} + +# proc useEffect*(react: ReactGlobal, didUpdate: proc(), triggerDependencies: seq[auto]) {.importjs: "#.useEffect(#)".} +# proc useContext*(react: ReactGlobal, context: JsObject): Context +# proc useReducer*(react: ReactGlobal, reducer: proc(): auto, initialArg: auto, init: proc()) + +# proc useCallback*(react: ReactGlobal, callback: proc(), triggerDependencies: auto) +# proc useMemo*(react: ReactGlobal, createFn: proc(), recomputeDependencies: auto) +# proc useRef*(react: ReactGlobal, react2: ReactGlobal): Reference + +# proc useImperativeHandle*(react: ReactGlobal, reference: Reference, createHandle: proc(), +# dependencies: sea[auto]) + +# proc useLayoutEffect*(react: ReactGlobal, didUpdate: proc(), triggerDependencies: seq[auto]) +# proc useDebugValue*(react: ReactGlobal, initialState: auto): auto + +# concurrent mode hooks (experimental) - see https://reactjs.org/docs/concurrent-mode-reference.html +# proc useTransition*(react: ReactGlobal, suspenseConfig: JsObject): auto + +# proc useDeferredValue*(react: ReactGlobal, value: auto, suspenseConfig: JsObject): auto diff --git a/src/js/bindings/react/react_styles.nim b/src/js/bindings/react/react_styles.nim new file mode 100644 index 0000000..8404a18 --- /dev/null +++ b/src/js/bindings/react/react_styles.nim @@ -0,0 +1,188 @@ +type + Style* = ref object of RootObj + alignContent*, # Sets or returns the alignment between the lines inside a flexible container when the items do not use all available space 3 + alignItems*, # Sets or returns the alignment for items inside a flexible container 3 + alignSelf*, # Sets or returns the alignment for selected items inside a flexible container 3 + animation*, # A shorthand property for all the animation properties below, except the animationPlayState property 3 + animationDelay*, # Sets or returns when the animation will start 3 + animationDirection*, # Sets or returns whether or not the animation should play in reverse on alternate cycles 3 + animationDuration*, # Sets or returns how many seconds or milliseconds an animation takes to complete one cycle 3 + animationFillMode*, # Sets or returns what values are applied by the animation outside the time it is executing 3 + animationIterationCount*, # Sets or returns the number of times an animation should be played 3 + animationName*, # Sets or returns a name for the @keyframes animation 3 + animationTimingFunction*, # Sets or returns the speed curve of the animation 3 + animationPlayState*, # Sets or returns whether the animation is running or paused 3 + background*, # Sets or returns all the background properties in one declaration 1 + backgroundAttachment*, # Sets or returns whether a background-image is fixed or scrolls with the page 1 + backgroundColor*, # Sets or returns the background-color of an element 1 + backgroundImage*, # Sets or returns the background-image for an element 1 + backgroundPosition*, # Sets or returns the starting position of a background-image 1 + backgroundRepeat*, # Sets or returns how to repeat (tile) a background-image 1 + backgroundClip*, # Sets or returns the painting area of the background 3 + backgroundOrigin*, # Sets or returns the positioning area of the background images 3 + backgroundSize*, # Sets or returns the size of the background image 3 + backfaceVisibility*, # Sets or returns whether or not an element should be visible when not facing the screen 3 + border*, # Sets or returns borderWidth, borderStyle, and borderColor in one declaration 1 + borderBottom*, # Sets or returns all the borderBottom properties in one declaration 1 + borderBottomColor*, # Sets or returns the color of the bottom border 1 + borderBottomLeftRadius*, # Sets or returns the shape of the border of the bottom-left corner 3 + borderBottomRightRadius*, # Sets or returns the shape of the border of the bottom-right corner 3 + borderBottomStyle*, # Sets or returns the style of the bottom border 1 + borderBottomWidth*, # Sets or returns the width of the bottom border 1 + borderCollapse*, # Sets or returns whether the table border should be collapsed into a single border, or not 2 + borderColor*, # Sets or returns the color of an element's border (can have up to four values) 1 + borderImage*, # A shorthand property for setting or returning all the borderImage properties 3 + borderImageOutset*, # Sets or returns the amount by which the border image area extends beyond the border box 3 + borderImageRepeat*, # Sets or returns whether the image-border should be repeated, rounded or stretched 3 + borderImageSlice*, # Sets or returns the inward offsets of the image-border 3 + borderImageSource*, # Sets or returns the image to be used as a border 3 + borderImageWidth*, # Sets or returns the widths of the image-border 3 + borderLeft*, # Sets or returns all the borderLeft properties in one declaration 1 + borderLeftColor*, # Sets or returns the color of the left border 1 + borderLeftStyle*, # Sets or returns the style of the left border 1 + borderLeftWidth*, # Sets or returns the width of the left border 1 + borderRadius*, # A shorthand property for setting or returning all the four borderRadius properties 3 + borderRight*, # Sets or returns all the borderRight properties in one declaration 1 + borderRightColor*, # Sets or returns the color of the right border 1 + borderRightStyle*, # Sets or returns the style of the right border 1 + borderRightWidth*, # Sets or returns the width of the right border 1 + borderSpacing*, # Sets or returns the space between cells in a table 2 + borderStyle*, # Sets or returns the style of an element's border (can have up to four values) 1 + borderTop*, # Sets or returns all the borderTop properties in one declaration 1 + borderTopColor*, # Sets or returns the color of the top border 1 + borderTopLeftRadius*, # Sets or returns the shape of the border of the top-left corner 3 + borderTopRightRadius*, # Sets or returns the shape of the border of the top-right corner 3 + borderTopStyle*, # Sets or returns the style of the top border 1 + borderTopWidth*, # Sets or returns the width of the top border 1 + borderWidth*, # Sets or returns the width of an element's border (can have up to four values) 1 + bottom*, # Sets or returns the bottom position of a positioned element 2 + boxDecorationBreak*, # Sets or returns the behaviour of the background and border of an element at page-break, or, for in-line elements, at line-break. 3 + boxShadow*, # Attaches one or more drop-shadows to the box 3 + boxSizing*, # Allows you to define certain elements to fit an area in a certain way 3 + captionSide*, # Sets or returns the position of the table caption 2 + clear*, # Sets or returns the position of the element relative to floating objects 1 + clip*, # Sets or returns which part of a positioned element is visible 2 + color*, # Sets or returns the color of the text 1 + columnCount*, # Sets or returns the number of columns an element should be divided into 3 + columnFill*, # Sets or returns how to fill columns 3 + columnGap*, # Sets or returns the gap between the columns 3 + columnRule*, # A shorthand property for setting or returning all the columnRule properties 3 + columnRuleColor*, # Sets or returns the color of the rule between columns 3 + columnRuleStyle*, # Sets or returns the style of the rule between columns 3 + columnRuleWidth*, # Sets or returns the width of the rule between columns 3 + columns*, # A shorthand property for setting or returning columnWidth and columnCount 3 + columnSpan*, # Sets or returns how many columns an element should span across 3 + columnWidth*, # Sets or returns the width of the columns 3 + content*, # Used with the :before and :after pseudo-elements, to insert generated content 2 + counterIncrement*, # Increments one or more counters 2 + counterReset*, # Creates or resets one or more counters 2 + cursor*, # Sets or returns the type of cursor to display for the mouse pointer 2 + direction*, # Sets or returns the text direction 2 + display*, # Sets or returns an element's display type 1 + emptyCells*, # Setsor returns whether to show the border and background of empty cells, or not 2 + filter*, # Setsor returns image filters (visual effects, like blur and saturation) 3 + flex*, # Setsor returns the length of the item, relative to the rest 3 + flexBasis*, # Setsor returns the initial length of a flexible item 3 + flexDirection*, # Setsor returns the direction of the flexible items 3 + flexFlow*, # A shorthand property for the flexDirection and the flexWrap properties 3 + flexGrow*, # Setsor returns how much the item will grow relative to the rest 3 + flexShrink*, # Setsor returns how the item will shrink relative to the rest 3 + flexWrap*, # Setsor returns whether the flexible items should wrap or not 3 + cssFloat*, # Setsor returns the horizontal alignment of an element 1 + font*, # Setsor returns fontStyle, fontVariant, fontWeight, fontSize, lineHeight, and fontFamily in one declaration 1 + fontFamily*, # Setsor returns the font family for text 1 + fontSize*, # Setsor returns the font size of the text 1 + fontStyle*, # Setsor returns whether the style of the font is normal, italic or oblique 1 + fontVariant*, # Setsor returns whether the font should be displayed in small capital letters 1 + fontWeight*, # Setsor returns the boldness of the font 1 + fontSizeAdjust*, # Preserves the readability of text when font fallback occurs 3 + fontStretch*, # Selects a normal, condensed, or expanded face from a font family 3 + hangingPunctuation*, # Specifies whether a punctuation character may be placed outside the line box 3 + height*, # Setsor returns the height of an element 1 + hyphens*, # Setshow to split words to improve the layout of paragraphs 3 + icon*, # Provides the author the ability to style an element with an iconic equivalent 3 + imageOrientation*, # Specifies a rotation in the right or clockwise direction that a user agent applies to an image 3 + isolation*, # Defines whether an element must create a new stacking content 3 + justifyContent*, # Setsor returns the alignment between the items inside a flexible container when the items do not use all available space. 3 + left*, # Setsor returns the left position of a positioned element 2 + letterSpacing*, # Setsor returns the space between characters in a text 1 + lineHeight*, # Setsor returns the distance between lines in a text 1 + listStyle*, # Setsor returns listStyleImage, listStylePosition, and listStyleType in one declaration 1 + listStyleImage*, # Setsor returns an image as the list-item marker 1 + listStylePosition*, # Setsor returns the position of the list-item marker 1 + listStyleType*: cstring # Setsor returns the list-item marker type 1 + margin*, # Setsor returns the margins of an element (can have up to four values) 1 + marginBottom*, # Setsor returns the bottom margin of an element 1 + marginLeft*, # Setsor returns the left margin of an element 1 + marginRight*, # Setsor returns the right margin of an element 1 + marginTop*, # Setsor returns the top margin of an element 1 + maxHeight*, # Setsor returns the maximum height of an element 2 + maxWidth*, # Setsor returns the maximum width of an element 2 + minHeight*, # Setsor returns the minimum height of an element 2 + minWidth*: cint # Setsor returns the minimum width of an element 2 + + # navDown*, # Setsor returns where to navigate when using the arrow-down navigation key 3 + # navIndex*, # Setsor returns the tabbing order for an element 3 + # navLeft*, # Setsor returns where to navigate when using the arrow-left navigation key 3 + # navRight*, # Setsor returns where to navigate when using the arrow-right navigation key 3 + # navUp*, # Setsor returns where to navigate when using the arrow-up navigation key 3 + # objectFit*, # Specifies how the contents of a replaced element should be fitted to the box established by its used height and width 3 + # objectPosition*, # Specifies the alignment of the replaced element inside its box 3 + # opacity*, # Setsor returns the opacity level for an element 3 + # order*, # Setsor returns the order of the flexible item, relative to the rest 3 + # orphans*, # Setsor returns the minimum number of lines for an element that must be left at the bottom of a page when a page break occurs inside an element 2 + # outline*, # Setsor returns all the outline properties in one declaration 2 + # outlineColor*, # Setsor returns the color of the outline around a element 2 + # outlineOffset*, # Setsan outline, and draws it beyond the border edge 3 + # outlineStyle*, # Setsor returns the style of the outline around an element 2 + # outlineWidth*, # Setsor returns the width of the outline around an element 2 + # overflow*, # Setsor returns what to do with content that renders outside the element box 2 + # overflowX*, # Specifies what to do with the left/right edges of the content, if it overflows the element's content area 3 + # overflowY*, # Specifies what to do with the top/bottom edges of the content, if it overflows the element's content area 3 + # padding*, # Setsor returns the padding of an element (can have up to four values) 1 + # paddingBottom*, # Setsor returns the bottom padding of an element 1 + # paddingLeft*, # Setsor returns the left padding of an element 1 + # paddingRight*, # Setsor returns the right padding of an element 1 + # paddingTop*, # Setsor returns the top padding of an element 1 + # pageBreakAfter*, # Setsor returns the page-break behavior after an element 2 + # pageBreakBefore*, # Setsor returns the page-break behavior before an element 2 + # pageBreakInside*, # Setsor returns the page-break behavior inside an element 2 + # perspective*, # Setsor returns the perspective on how 3D elements are viewed 3 + # perspectiveOrigin*, # Setsor returns the bottom position of 3D elements 3 + # position*, # Setsor returns the type of positioning method used for an element (static, relative, absolute or fixed) 2 + # quotes*, # Setsor returns the type of quotation marks for embedded quotations 2 + # resize*, # Setsor returns whether or not an element is resizable by the user 3 + # right*, # Setsor returns the right position of a positioned element 2 + # tableLayout*, # Setsor returns the way to lay out table cells, rows, and columns 2 + # tabSize*, # Setsor returns the length of the tab-character 3 + # textAlign*, # Setsor returns the horizontal alignment of text 1 + # textAlignLast*, # Setsor returns how the last line of a block or a line right before a forced line break is aligned when text-align is "justify" 3 + # textDecoration*, # Setsor returns the decoration of a text 1 + # textDecorationColor*, # Setsor returns the color of the text-decoration 3 + # textDecorationLine*, # Setsor returns the type of line in a text-decoration 3 + # textDecorationStyle*, # Setsor returns the style of the line in a text decoration 3 + # textIndent*, # Setsor returns the indentation of the first line of text 1 + # textJustify*, # Setsor returns the justification method used when text-align is "justify" 3 + # textOverflow*, # Setsor returns what should happen when text overflows the containing element 3 + # textShadow*, # Setsor returns the shadow effect of a text 3 + # textTransform*, # Setsor returns the capitalization of a text 1 + # top*, # Setsor returns the top position of a positioned element 2 + # transform*, # Applies a 2D or 3D transformation to an element 3 + # transformOrigin*, # Setsor returns the position of transformed elements 3 + # transformStyle*, # Setsor returns how nested elements are rendered in 3D space 3 + # transition*, # A shorthand property for setting or returning the four transition properties 3 + # transitionProperty*, # Setsor returns the CSS property that the transition effect is for 3 + # transitionDuration*, # Setsor returns how many seconds or milliseconds a transition effect takes to complete 3 + # transitionTimingFunction*, # Setsor returns the speed curve of the transition effect 3 + # transitionDelay*, # Setsor returns when the transition effect will start 3 + # unicodeBidi*, # Setsor returns whether the text should be overridden to support multiple languages in the same document 2 + # userSelect*, # Setsor returns whether the text of an element can be selected or not 2 + # verticalAlign*, # Setsor returns the vertical alignment of the content in an element 1 + # visibility*, # Setsor returns whether an element should be visible 2 + # whiteSpace*, # Setsor returns how to handle tabs, line breaks and whitespace in a text 1 + # width*, # Setsor returns the width of an element 1 + # wordBreak*, # Setsor returns line breaking rules for non-CJK scripts 3 + # wordSpacing*, # Setsor returns the spacing between words in a text 1 + # wordWrap*, # Allows long, unbreakable words to be broken and wrap to the next line 3 + # widows*, # Setsor returns the minimum number of lines for an element that must be visible at the top of a page 2 + # zIndex*: cstring # Setsor returns the stack order of a positioned element 2 diff --git a/src/js/bindings/react/react_types.nim b/src/js/bindings/react/react_types.nim new file mode 100644 index 0000000..82ccc56 --- /dev/null +++ b/src/js/bindings/react/react_types.nim @@ -0,0 +1,58 @@ +import jsffi, react_styles + +type + Context*{.importc.} = JsObject + Consumer*{.importc.} = JsObject + Producer*{.importc.} = JsObject + ReactGlobal* {.importc.} = ref object of RootObj + version*: cstring + ReactDOMGlobal* {.importc.} = ref object of RootObj + version*: cstring + ReactDescriptor* [P, S] {.importcpp.} = ref object of RootObj + render*: proc(): ReactNode + componentWillMount*: proc(): void + componentWillUnmount*: proc(): void + componentDidMount*: proc(): void + componentWillReceiveProps*: proc(nextProps: P): void + shouldComponentUpdate*: proc(nextProps: P, nextState: S): bool + componentWillUpdate*: proc(nextProps: P, nextState: S): bool + componentDidUpdate*: proc(prevProps: P, prevState: S): bool + getInitialState*: proc(): S + ReactComponent* {.importc.} = ref object of RootObj + ReactNode* {.importc.} = ref object of RootObj + EventTarget* = ref object + value*: cstring + Event* = ref object + target*: EventTarget + `type`*: cstring + Attrs* = ref object of RootObj + onClick*, onChange*: proc(e: Event) + key*, `ref`*, dangerouslySetInnerHTML*: cstring + + accept*, acceptCharset*, accessKey*, action*, alt*, capture*, + cellPadding*, cellSpacing*, challenge*, charSet*, cite*, classID*, + className*, content*, contextMenu*, coords*, crossOrigin*, + data*, dateTime*, default*, dir*, download*, encType*, form*, + formAction*, formEncType*, formMethod*, formTarget*, frameBorder*, + headers*, href*, hrefLang*, htmlFor*, httpEquiv*, icon*, id*, inputMode*, + integrity*, keyParams*, keyType*, kind*, label*, lang*, list*, + manifest*, media*, mediaGroup*, `method`*, name*, nonce*, pattern*, + placeholder*, poster*, profile*, radioGroup*, rel*, role*, sandbox*, + scope*, scrolling*, seamless*, shape*, sizes*, span*, src*, srcDoc*, + srcLang*, srcSet*, summary*, tabIndex*, target*, title*, `type`*, + useMap*, value*, wmode*, wrap*: cstring + + allowFullScreen*, allowTransparency*, async*, autoComplete*, autoFocus*, + autoPlay*, checked*, contentEditable*, controls*, `defer`*, disabled*, + draggable*, formNoValidate*, hidden*, loop*, multiple*, muted*, + noValidate*, open*, preload*, readOnly*, required*, reversed*, + scoped*, selected*, spellCheck*: bool + + colSpan*, cols*, height*, high*, low*, marginHeight*, marginWidth*, max*, + maxLength*, min*, minLength*, optimum*, rowSpan*, rows*, size*, start*, + step*, width*: cint + + style*: react_styles.Style + # Style* = ref object + # color*, backgroundColor*: cstring + # marginTop*, marginBottom*, marginLeft*, marginRight*: int \ No newline at end of file diff --git a/src/js/example/index.html b/src/js/example/index.html new file mode 100644 index 0000000..f900937 --- /dev/null +++ b/src/js/example/index.html @@ -0,0 +1,33 @@ + + + + + + Nim on JS + + +
+ + + + + + + + + + + + + + diff --git a/src/js/example/nim.cfg b/src/js/example/nim.cfg new file mode 100644 index 0000000..72b8423 --- /dev/null +++ b/src/js/example/nim.cfg @@ -0,0 +1 @@ +path=".." diff --git a/src/js/example/package.json b/src/js/example/package.json new file mode 100644 index 0000000..413961c --- /dev/null +++ b/src/js/example/package.json @@ -0,0 +1,10 @@ +{ + "name": "org", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "react": "^18.1.0", + "react-dom": "^18.1.0" + } +} diff --git a/src/js/example/sandbox.nim b/src/js/example/sandbox.nim new file mode 100644 index 0000000..21b3a7d --- /dev/null +++ b/src/js/example/sandbox.nim @@ -0,0 +1,48 @@ +import jsconsole, jsffi, strutils, sequtils, sugar +import sugar +import ../bindings/react/react_dom, + ../bindings/react/react_types, + ../bindings/react/react_styles, + ../bindings/react/react_hooks +import sequtils +import options +import strformat +import ../../org/org_block_heading +import ../../org/org_builder +import ../../org/org_types + +proc renderItems( + onClick: proc(e: react_types.Event): void, + count: Option[int], +): ReactNode = + `div`( + Attrs{ + onClick: onclick + }, + &"Add button {count.get(0)}" + ) + +proc makeTopLevel(): ReactNode {.exportc.} = + let text = myUseState[cstring]("") + + let val = text.getter + let orgItems: seq[string] = makeOrg($val) + .foldOrg() + + + console.log(orgItems) + + `div`( + Attrs{style: Style{marginTop: 50}}, + @[ + textarea( + Attrs{ + onchange: proc(e: react_types.Event): void = discard text.setter(e.target.value) + }, + ), + `div`( + Attrs{}, + $orgItems + ) + ] + ) diff --git a/src/js/example/yarn.lock b/src/js/example/yarn.lock new file mode 100644 index 0000000..bd43b13 --- /dev/null +++ b/src/js/example/yarn.lock @@ -0,0 +1,37 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +loose-envify@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +react-dom@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f" + integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.22.0" + +react@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + dependencies: + loose-envify "^1.1.0" + +scheduler@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" + integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== + dependencies: + loose-envify "^1.1.0" diff --git a/src/org/index.html b/src/org/index.html new file mode 100644 index 0000000..7482075 --- /dev/null +++ b/src/org/index.html @@ -0,0 +1,26 @@ + + + + + + Untitled + + + + + + + + + + + + + + diff --git a/src/org/org_block_heading.js b/src/org/org_block_heading.js new file mode 100644 index 0000000..842a9f2 --- /dev/null +++ b/src/org/org_block_heading.js @@ -0,0 +1,5539 @@ +/* Generated by the Nim Compiler v1.6.2 */ +var framePtr = null; +var excHandler = 0; +var lastJSError = null; +var NTI788529239 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI788529466 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1275068421 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1275069021 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI788529624 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI788529769 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI788529845 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI788529497 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1442840915 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1442840914 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI788529496 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949569 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949571 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1526726812 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1526726798 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1526726797 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1526726795 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1509949556 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1509949555 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949452 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1560281382 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1560281167 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1610612744 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1560281166 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949465 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949477 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1509949450 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1509949449 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1509949463 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1526726804 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1526726794 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI1509949501 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1275069127 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1560281092 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1291845683 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1291845682 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1526726659 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI1526726663 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1526726662 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1526726660 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1509949514 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI922748585 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1224736772 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI939524381 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1291845635 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI33555129 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555124 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI1275068835 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1275068772 = {size: 0,kind: 25,base: null,node: null,finalizer: null}; +var NTI1275068771 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1442840580 = {size: 0,kind: 2,base: null,node: null,finalizer: null}; +var NTI1442840582 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI1442840592 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1442840583 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1442840594 = {size: 0, kind: 24, base: null, node: null, finalizer: null}; +var NTI1442840590 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1442840579 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1442840593 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1442840584 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI1442840585 = {size: 0, kind: 14, base: null, node: null, finalizer: null}; +var NTI1442840596 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1442840586 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null}; +var NTI1442840603 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI1275068420 = {size: 0, kind: 19, base: null, node: null, finalizer: null}; +var NTI33554438 = {size: 0,kind: 2,base: null,node: null,finalizer: null}; +var NTI1459617871 = {size: 0, kind: 19, base: null, node: null, finalizer: null}; +var NTI33555114 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555125 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33554456 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI721430215 = {size: 0,kind: 31,base: null,node: null,finalizer: null}; +var NTI721430694 = {size: 0, kind: 18, base: null, node: null, finalizer: null}; +var NTI33555121 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555128 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555130 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555083 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555165 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33554439 = {size: 0,kind: 28,base: null,node: null,finalizer: null}; +var NTI33554440 = {size: 0,kind: 29,base: null,node: null,finalizer: null}; +var NTI33555164 = {size: 0, kind: 22, base: null, node: null, finalizer: null}; +var NTI33555112 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555113 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555120 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NTI33555122 = {size: 0, kind: 17, base: null, node: null, finalizer: null}; +var NNI33555122 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555122.node = NNI33555122; +var NNI33555120 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555120.node = NNI33555120; +var NNI33555113 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555113.node = NNI33555113; +NTI33555164.base = NTI33555112; +NTI33555165.base = NTI33555112; +var NNI33555112 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555164, name: "parent", sons: null}, +{kind: 1, offset: "name", len: 0, typ: NTI33554440, name: "name", sons: null}, +{kind: 1, offset: "message", len: 0, typ: NTI33554439, name: "msg", sons: null}, +{kind: 1, offset: "trace", len: 0, typ: NTI33554439, name: "trace", sons: null}, +{kind: 1, offset: "up", len: 0, typ: NTI33555165, name: "up", sons: null}]}; +NTI33555112.node = NNI33555112; +var NNI33555083 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555083.node = NNI33555083; +NTI33555112.base = NTI33555083; +NTI33555113.base = NTI33555112; +NTI33555120.base = NTI33555113; +NTI33555122.base = NTI33555120; +var NNI33555130 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555130.node = NNI33555130; +NTI33555130.base = NTI33555113; +var NNI33555128 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555128.node = NNI33555128; +NTI33555128.base = NTI33555113; +var NNI33555121 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555121.node = NNI33555121; +NTI33555121.base = NTI33555120; +var NNI721430694 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI721430215, name: "a", sons: null}, +{kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]}; +NTI721430694.node = NNI721430694; +var NNI33555125 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555125.node = NNI33555125; +var NNI33555114 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555114.node = NNI33555114; +NTI33555114.base = NTI33555112; +NTI33555125.base = NTI33555114; +NTI1459617871.base = NTI33554438; +NTI1275068420.base = NTI33554438; +var NNI1442840585 = {kind: 2, offset: 0, typ: null, name: null, len: 3, sons: {"0": {kind: 1, offset: 0, typ: NTI1442840585, name: "choiceMismatchErr", len: 0, sons: null}, +"1": {kind: 1, offset: 1, typ: NTI1442840585, name: "charMismatchErr", len: 0, sons: null}, +"2": {kind: 1, offset: 2, typ: NTI1442840585, name: "endOfStringErr", len: 0, sons: null}}}; +NTI1442840585.node = NNI1442840585; +var NNI1442840590 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "stream", len: 0, typ: NTI33554439, name: "stream", sons: null}, +{kind: 1, offset: "position", len: 0, typ: NTI33554456, name: "position", sons: null}, +{kind: 1, offset: "lastPosition", len: 0, typ: NTI33554456, name: "lastPosition", sons: null}]}; +NTI1442840590.node = NNI1442840590; +NTI1442840579.base = NTI1442840590; +var NNI1442840582 = {kind: 2, offset: 0, typ: null, name: null, len: 2, sons: {"0": {kind: 1, offset: 0, typ: NTI1442840582, name: "parserTokenChar", len: 0, sons: null}, +"1": {kind: 1, offset: 1, typ: NTI1442840582, name: "parserTokenString", len: 0, sons: null}}}; +NTI1442840582.node = NNI1442840582; +var NNI1442840592 = {kind: 3, offset: "kind", len: 2, typ: NTI1442840582, name: "kind", sons: [[setConstr(0), {kind: 1, offset: "charValue", len: 0, typ: NTI1442840580, name: "charValue", sons: null}], +[setConstr(1), {kind: 1, offset: "stringValue", len: 0, typ: NTI33554439, name: "stringValue", sons: null}]]}; +NTI1442840592.node = NNI1442840592; +NTI1442840583.base = NTI1442840592; +NTI1442840594.base = NTI1442840583; +var NNI1442840593 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "state", len: 0, typ: NTI1442840579, name: "state", sons: null}, +{kind: 1, offset: "tokens", len: 0, typ: NTI1442840594, name: "tokens", sons: null}]}; +NTI1442840593.node = NNI1442840593; +NTI1442840584.base = NTI1442840593; +var NNI1442840596 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "kind", len: 0, typ: NTI1442840585, name: "kind", sons: null}, +{kind: 1, offset: "unexpected", len: 0, typ: NTI33554439, name: "unexpected", sons: null}, +{kind: 1, offset: "expected", len: 0, typ: NTI33554439, name: "expected", sons: null}, +{kind: 1, offset: "index", len: 0, typ: NTI33554456, name: "index", sons: null}, +{kind: 1, offset: "parser", len: 0, typ: NTI1442840584, name: "parser", sons: null}]}; +NTI1442840596.node = NNI1442840596; +NTI1442840586.base = NTI1442840596; +var NNI1442840603 = {kind: 3, offset: "o", len: 2, typ: NTI33554466, name: "o", sons: [[setConstr(0), {kind: 1, offset: "e", len: 0, typ: NTI1442840586, name: "e", sons: null}], +[setConstr(1), {kind: 1, offset: "v", len: 0, typ: NTI1442840584, name: "v", sons: null}]]}; +NTI1442840603.node = NNI1442840603; +NTI1275068771.base = NTI1275068772; +NTI1275068835.base = NTI1442840603; +var NNI33555124 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555124.node = NNI33555124; +NTI33555124.base = NTI33555113; +var NNI33555129 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI33555129.node = NNI33555129; +NTI33555129.base = NTI33555113; +var NNI1291845635 = {kind: 2, offset: 0, typ: null, name: null, len: 2, sons: {"0": {kind: 1, offset: 0, typ: NTI1291845635, name: "okNothing", len: 0, sons: null}, +"1": {kind: 1, offset: 1, typ: NTI1291845635, name: "okJust", len: 0, sons: null}}}; +NTI1291845635.node = NNI1291845635; +var NNI939524381 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI33554456, name: "a", sons: null}, +{kind: 1, offset: "b", len: 0, typ: NTI33554456, name: "b", sons: null}]}; +NTI939524381.node = NNI939524381; +var NNI1224736772 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI1224736772.node = NNI1224736772; +NTI1224736772.base = NTI33555113; +var NNI922748585 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}; +NTI922748585.node = NNI922748585; +NTI922748585.base = NTI33555114; +NTI1526726663.base = NTI1526726660; +var NNI1526726659 = {kind: 2, offset: 0, typ: null, name: null, len: 9, sons: {"0": {kind: 1, offset: 0, typ: NTI1526726659, name: "orgRawText", len: 0, sons: null}, +"1": {kind: 1, offset: 1, typ: NTI1526726659, name: "orgText", len: 0, sons: null}, +"2": {kind: 1, offset: 2, typ: NTI1526726659, name: "orgBoldText", len: 0, sons: null}, +"3": {kind: 1, offset: 3, typ: NTI1526726659, name: "orgItalicText", len: 0, sons: null}, +"4": {kind: 1, offset: 4, typ: NTI1526726659, name: "orgUnderlineText", len: 0, sons: null}, +"5": {kind: 1, offset: 5, typ: NTI1526726659, name: "orgVerbatimText", len: 0, sons: null}, +"6": {kind: 1, offset: 6, typ: NTI1526726659, name: "orgCodeText", len: 0, sons: null}, +"7": {kind: 1, offset: 7, typ: NTI1526726659, name: "orgStrikeThroughText", len: 0, sons: null}, +"8": {kind: 1, offset: 8, typ: NTI1526726659, name: "orgLink", len: 0, sons: null}}}; +NTI1526726659.node = NNI1526726659; +var NNI1291845683 = {kind: 3, offset: "kind", len: 2, typ: NTI1291845635, name: "kind", sons: [[setConstr(1), {kind: 1, offset: "value", len: 0, typ: NTI33554439, name: "value", sons: null}], +[setConstr(2), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}]]}; +NTI1291845683.node = NNI1291845683; +NTI1291845682.base = NTI1291845683; +var NNI1526726662 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "children", len: 0, typ: NTI1526726663, name: "children", sons: null}, +{kind: 1, offset: "content", len: 0, typ: NTI33554439, name: "content", sons: null}, +{kind: 3, offset: "kind", len: 9, typ: NTI1526726659, name: "kind", sons: [[setConstr(0), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(1), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(2), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(3), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(4), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(5), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(6), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(7), {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []}], +[setConstr(8), {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "linkUrl", len: 0, typ: NTI33554439, name: "linkUrl", sons: null}, +{kind: 1, offset: "linkDescription", len: 0, typ: NTI1291845682, name: "linkDescription", sons: null}]}]]}]}; +NTI1526726662.node = NNI1526726662; +NTI1526726660.base = NTI1526726662; +NTI1509949514.base = NTI1526726660; +var NNI1560281092 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1275069127, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI1509949501, name: "Field1", sons: null}]}; +NTI1560281092.node = NNI1560281092; +var NNI1526726794 = {kind: 2, offset: 0, typ: null, name: null, len: 1, sons: {"0": {kind: 1, offset: 0, typ: NTI1526726794, name: "orgHeading", len: 0, sons: null}}}; +NTI1526726794.node = NNI1526726794; +var NNI1526726804 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "val", len: 0, typ: NTI33554439, name: "val", sons: null}, +{kind: 1, offset: "has", len: 0, typ: NTI33554466, name: "has", sons: null}]}; +NTI1526726804.node = NNI1526726804; +NTI1509949450.base = NTI1526726660; +var NNI1509949449 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1442840584, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI1509949450, name: "Field1", sons: null}]}; +NTI1509949449.node = NNI1509949449; +var NNI1509949463 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1509949449, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI33554439, name: "Field1", sons: null}]}; +NTI1509949463.node = NNI1509949463; +NTI1509949477.base = NTI1526726660; +var NNI1509949465 = {kind: 3, offset: "o", len: 2, typ: NTI33554466, name: "o", sons: [[setConstr(0), {kind: 1, offset: "e", len: 0, typ: NTI1509949463, name: "e", sons: null}], +[setConstr(1), {kind: 1, offset: "v", len: 0, typ: NTI1509949449, name: "v", sons: null}]]}; +NTI1509949465.node = NNI1509949465; +var NNI1560281166 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1610612744, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI1560281167, name: "Field1", sons: null}]}; +NTI1560281166.node = NNI1560281166; +NTI1560281382.base = NTI1526726660; +NTI1509949452.base = NTI1526726660; +NTI1526726798.base = NTI1526726660; +NTI1526726812.base = NTI1526726660; +var NNI1526726797 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "children", len: 0, typ: NTI1526726798, name: "children", sons: null}, +{kind: 3, offset: "kind", len: 1, typ: NTI1526726794, name: "kind", sons: [[setConstr(0), {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "level", len: 0, typ: NTI33554456, name: "level", sons: null}, +{kind: 1, offset: "todo", len: 0, typ: NTI1526726804, name: "todo", sons: null}, +{kind: 1, offset: "headlineContent", len: 0, typ: NTI1526726812, name: "headlineContent", sons: null}, +{kind: 1, offset: "headlineChildrenText", len: 0, typ: NTI33554439, name: "headlineChildrenText", sons: null}]}]]}]}; +NTI1526726797.node = NNI1526726797; +NTI1526726795.base = NTI1526726797; +NTI1509949556.base = NTI1526726795; +var NNI1509949555 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1442840584, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI1509949556, name: "Field1", sons: null}]}; +NTI1509949555.node = NNI1509949555; +var NNI1509949569 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1509949555, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI33554439, name: "Field1", sons: null}]}; +NTI1509949569.node = NNI1509949569; +var NNI1509949571 = {kind: 3, offset: "o", len: 2, typ: NTI33554466, name: "o", sons: [[setConstr(0), {kind: 1, offset: "e", len: 0, typ: NTI1509949569, name: "e", sons: null}], +[setConstr(1), {kind: 1, offset: "v", len: 0, typ: NTI1509949555, name: "v", sons: null}]]}; +NTI1509949571.node = NNI1509949571; +NTI1442840914.base = NTI1442840915; +var NNI788529496 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1442840914, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI788529497, name: "Field1", sons: null}, +{kind: 1, offset: "Field2", len: 0, typ: NTI33554466, name: "Field2", sons: null}]}; +NTI788529496.node = NNI788529496; +NTI788529845.base = NTI1526726795; +NTI788529769.base = NTI1526726795; +NTI788529624.base = NTI1442840583; +NTI1275069021.base = NTI1275068421; +var NNI788529466 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI1275069021, name: "Field0", sons: null}, +{kind: 1, offset: "Field1", len: 0, typ: NTI788529239, name: "Field1", sons: null}, +{kind: 1, offset: "Field2", len: 0, typ: NTI33554466, name: "Field2", sons: null}]}; +NTI788529466.node = NNI788529466; + +function makeNimstrLit(c_33556802) { + var result = []; + for (var i = 0; i < c_33556802.length; ++i) { + result[i] = c_33556802.charCodeAt(i); + } + return result; + + + +} + +function toJSStr(s_33556808) { + var Temporary5; + var Temporary7; + + var result_33556809 = null; + + var res_33556843 = newSeq_33556826((s_33556808).length); + var i_33556844 = 0; + var j_33556845 = 0; + Label1: do { + Label2: while (true) { + if (!(i_33556844 < (s_33556808).length)) break Label2; + var c_33556846 = s_33556808[i_33556844]; + if ((c_33556846 < 128)) { + res_33556843[j_33556845] = String.fromCharCode(c_33556846); + i_33556844 += 1; + } + else { + var helper_33556858 = newSeq_33556826(0); + Label3: do { + Label4: while (true) { + if (!true) break Label4; + var code_33556859 = c_33556846.toString(16); + if ((((code_33556859) == null ? 0 : (code_33556859).length) == 1)) { + helper_33556858.push("%0");; + } + else { + helper_33556858.push("%");; + } + + helper_33556858.push(code_33556859);; + i_33556844 += 1; + if (((s_33556808).length <= i_33556844)) Temporary5 = true; else { Temporary5 = (s_33556808[i_33556844] < 128); } if (Temporary5) { + break Label3; + } + + c_33556846 = s_33556808[i_33556844]; + } + } while (false); +++excHandler; + Temporary7 = framePtr; + try { + res_33556843[j_33556845] = decodeURIComponent(helper_33556858.join("")); +--excHandler; +} catch (EXCEPTION) { + var prevJSError = lastJSError; + lastJSError = EXCEPTION; + --excHandler; + framePtr = Temporary7; + res_33556843[j_33556845] = helper_33556858.join(""); + lastJSError = prevJSError; + } finally { + framePtr = Temporary7; + } + } + + j_33556845 += 1; + } + } while (false); + if (res_33556843.length < j_33556845) { for (var i = res_33556843.length ; i < j_33556845 ; ++i) res_33556843.push(null); } + else { res_33556843.length = j_33556845; }; + result_33556809 = res_33556843.join(""); + + return result_33556809; + +} + +function raiseException(e_33556668, ename_33556669) { + e_33556668.name = ename_33556669; + if ((excHandler == 0)) { + unhandledException(e_33556668); + } + + throw e_33556668; + + +} + +function addInt(a_33556941, b_33556942) { + var result = a_33556941 + b_33556942; + checkOverflowInt(result); + return result; + + + +} + +function subInt(a_33556945, b_33556946) { + var result = a_33556945 - b_33556946; + checkOverflowInt(result); + return result; + + + +} + +function mnewString(len_33556894) { + return new Array(len_33556894); + + + +} + +function setConstr() { + var result = {}; + for (var i = 0; i < arguments.length; ++i) { + var x = arguments[i]; + if (typeof(x) == "object") { + for (var j = x[0]; j <= x[1]; ++j) { + result[j] = true; + } + } else { + result[x] = true; + } + } + return result; + + + +} +var ConstSet1 = setConstr(60, 62, 94); + +function chckRange(i_33557190, a_33557191, b_33557192) { + var Temporary1; + + var result_33557193 = 0; + + BeforeRet: do { + if (!(a_33557191 <= i_33557190)) Temporary1 = false; else { Temporary1 = (i_33557190 <= b_33557192); } if (Temporary1) { + result_33557193 = i_33557190; + break BeforeRet; + } + else { + raiseRangeError(); + } + + } while (false); + + return result_33557193; + +} +var ConstSet2 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21); + +function nimCopy(dest_33557141, src_33557142, ti_33557143) { + var result_33557152 = null; + + switch (ti_33557143.kind) { + case 21: + case 22: + case 23: + case 5: + if (!(isFatPointer_33557132(ti_33557143))) { + result_33557152 = src_33557142; + } + else { + result_33557152 = [src_33557142[0], src_33557142[1]]; + } + + break; + case 19: + if (dest_33557141 === null || dest_33557141 === undefined) { + dest_33557141 = {}; + } + else { + for (var key in dest_33557141) { delete dest_33557141[key]; } + } + for (var key in src_33557142) { dest_33557141[key] = src_33557142[key]; } + result_33557152 = dest_33557141; + + break; + case 18: + case 17: + if (!((ti_33557143.base == null))) { + result_33557152 = nimCopy(dest_33557141, src_33557142, ti_33557143.base); + } + else { + if ((ti_33557143.kind == 17)) { + result_33557152 = (dest_33557141 === null || dest_33557141 === undefined) ? {m_type: ti_33557143} : dest_33557141; + } + else { + result_33557152 = (dest_33557141 === null || dest_33557141 === undefined) ? {} : dest_33557141; + } + } + nimCopyAux(result_33557152, src_33557142, ti_33557143.node); + break; + case 24: + case 4: + case 27: + case 16: + if (src_33557142 === null) { + result_33557152 = null; + } + else { + if (dest_33557141 === null || dest_33557141 === undefined || dest_33557141.length != src_33557142.length) { + dest_33557141 = new Array(src_33557142.length); + } + result_33557152 = dest_33557141; + for (var i = 0; i < src_33557142.length; ++i) { + result_33557152[i] = nimCopy(result_33557152[i], src_33557142[i], ti_33557143.base); + } + } + + break; + case 28: + if (src_33557142 !== null) { + result_33557152 = src_33557142.slice(0); + } + + break; + default: + result_33557152 = src_33557142; + break; + } + + return result_33557152; + +} + +function chckIndx(i_33557185, a_33557186, b_33557187) { + var Temporary1; + + var result_33557188 = 0; + + BeforeRet: do { + if (!(a_33557186 <= i_33557185)) Temporary1 = false; else { Temporary1 = (i_33557185 <= b_33557187); } if (Temporary1) { + result_33557188 = i_33557185; + break BeforeRet; + } + else { + raiseIndexError(i_33557185, a_33557186, b_33557187); + } + + } while (false); + + return result_33557188; + +} +var ConstSet3 = setConstr(60, 62, 94); +var ConstSet4 = setConstr(45, 43, 32); +var ConstSet5 = setConstr([48, 57]); +var ConstSet6 = setConstr([48, 57]); +var ConstSet7 = setConstr([48, 57]); + +function divInt(a_33556953, b_33556954) { + if (b_33556954 == 0) raiseDivByZero(); + if (b_33556954 == -1 && a_33556953 == 2147483647) raiseOverflow(); + return Math.trunc(a_33556953 / b_33556954); + + + +} + +function mulInt(a_33556949, b_33556950) { + var result = a_33556949 * b_33556950; + checkOverflowInt(result); + return result; + + + +} +var ConstSet8 = setConstr([65, 90], [97, 122]); + +function SetEq(a_33556900, b_33556901) { + for (var elem in a_33556900) { if (!b_33556901[elem]) return false; } + for (var elem in b_33556901) { if (!a_33556900[elem]) return false; } + return true; + + + +} +var ConstSet9 = setConstr([0, 255]); +var ConstSet10 = setConstr([48, 57]); +var ConstSet11 = setConstr([48, 57], [65, 70], [97, 102]); +var ConstSet12 = setConstr([65, 90], [97, 122]); +var ConstSet13 = setConstr(13, 10); +var ConstSet14 = setConstr(32, 9, 11, 13, 10, 12); + +function addChar(x_33557256, c_33557257) { + x_33557256.push(c_33557257); + + +} +var ConstSet15 = setConstr([0, 255]); +var ConstSet16 = setConstr(1); + +function raiseFieldError2(f_33556779, discVal_33556780) { + raiseException({message: (f_33556779 || []).concat(discVal_33556780 || [],makeNimstrLit("\'") || []), parent: null, m_type: NTI33555129, name: null, trace: [], up: null}, "FieldDefect"); + + +} + +function nimBoolToStr(x_33556515) { + var result_33556516 = []; + + if (x_33556515) { + result_33556516 = nimCopy(null, makeNimstrLit("true"), NTI33554439); + } + else { + result_33556516 = nimCopy(null, makeNimstrLit("false"), NTI33554439); + } + + + return result_33556516; + +} + +function reprDiscriminant(e_33557410, typ_33557411) { + var Temporary1; + + var result_33557412 = []; + + switch (typ_33557411.kind) { + case 14: + Temporary1 = reprEnum(e_33557410, typ_33557411); + break; + case 1: + Temporary1 = nimBoolToStr(!((e_33557410 == 0))); + break; + default: + Temporary1 = HEX24_335544323(e_33557410); + break; + } + result_33557412 = nimCopy(null, Temporary1, NTI33554439); + + return result_33557412; + +} +var ConstSet17 = setConstr(13, 10); + +function nimMax(a_33556999, b_33557000) { + var Temporary1; + + var result_33557001 = 0; + + BeforeRet: do { + if ((b_33557000 <= a_33556999)) { + Temporary1 = a_33556999; + } + else { + Temporary1 = b_33557000; + } + + result_33557001 = Temporary1; + break BeforeRet; + } while (false); + + return result_33557001; + +} + +function nimMin(a_33556995, b_33556996) { + var Temporary1; + + var result_33556997 = 0; + + BeforeRet: do { + if ((a_33556995 <= b_33556996)) { + Temporary1 = a_33556995; + } + else { + Temporary1 = b_33556996; + } + + result_33556997 = Temporary1; + break BeforeRet; + } while (false); + + return result_33556997; + +} + +function nimCharToStr(x_33556518) { + var result_33556519 = []; + + result_33556519 = nimCopy(null, mnewString(1), NTI33554439); + result_33556519[0] = x_33556518; + + return result_33556519; + +} +var ConstSet18 = setConstr(0); +var ConstSet19 = setConstr(1); +var ConstSet20 = setConstr(true); +var ConstSet21 = setConstr(false); +var ConstSet22 = setConstr(13, 10); +var ConstSet23 = setConstr(32, 9, 11, 13, 10, 12); +var ConstSet24 = setConstr(true); +var ConstSet25 = setConstr(false); +var ConstSet26 = setConstr(true); +var ConstSet27 = setConstr(false); +var ConstSet28 = setConstr(true); +var ConstSet29 = setConstr(false); +var ConstSet30 = setConstr(13, 10); +var ConstSet31 = setConstr(false); +var ConstSet32 = setConstr(true); +var ConstSet33 = setConstr([2, 2]); + +function eqStrings(a_33556932, b_33556933) { + if (a_33556932 == b_33556933) return true; + if (a_33556932 === null && b_33556933.length == 0) return true; + if (b_33556933 === null && a_33556932.length == 0) return true; + if ((!a_33556932) || (!b_33556933)) return false; + var alen = a_33556932.length; + if (alen != b_33556933.length) return false; + for (var i = 0; i < alen; ++i) + if (a_33556932[i] != b_33556933[i]) return false; + return true; + + + +} +var ConstSet34 = setConstr(1); +var ConstSet35 = setConstr(32, 9, 11, 13, 10, 12); +var ConstSet36 = setConstr(1); +var ConstSet37 = setConstr(0); +var ConstSet38 = setConstr(0); +var ConstSet39 = setConstr(true); +var ConstSet40 = setConstr(8); +var ConstSet41 = setConstr(1); +var ConstSet42 = setConstr(1); +var ConstSet43 = setConstr(8); +var ConstSet44 = setConstr(true); +var ConstSet45 = setConstr(false); +var ConstSet46 = setConstr(true); +var ConstSet47 = setConstr(false); +var ConstSet48 = setConstr(true); +var ConstSet49 = setConstr(true); +var ConstSet50 = setConstr(0); +var ConstSet51 = setConstr(true); +var ConstSet52 = setConstr(false); +var ConstSet53 = setConstr(true); +var ConstSet54 = setConstr(true); +var ConstSet55 = setConstr(true); +var ConstSet56 = setConstr(1); +var ConstSet57 = setConstr(1); +var ConstSet58 = setConstr(1); +var ConstSet59 = setConstr(true); +var ConstSet60 = setConstr(true); +var ConstSet61 = setConstr(false); +var ConstSet62 = setConstr(false); + +function rawEcho() { + var buf = ""; + for (var i = 0; i < arguments.length; ++i) { + buf += toJSStr(arguments[i]); + } + console.log(buf); + + + +} +var ConstSet63 = setConstr(true); +var ConstSet64 = setConstr(0); +var ConstSet65 = setConstr(0); +var ConstSet66 = setConstr(0); +var ConstSet67 = setConstr(0); +var ConstSet68 = setConstr(true); +var ConstSet69 = setConstr(false); +if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + if (!isFinite(v)) return v; + return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); + }; +} + +var objectID_973078690 = [0]; + +function add_33556420(x_33556421, x_33556421_Idx, y_33556422) { + if (x_33556421[x_33556421_Idx] === null) { x_33556421[x_33556421_Idx] = []; } + var off = x_33556421[x_33556421_Idx].length; + x_33556421[x_33556421_Idx].length += y_33556422.length; + for (var i = 0; i < y_33556422.length; ++i) { + x_33556421[x_33556421_Idx][off+i] = y_33556422.charCodeAt(i); + } + + + +} + +function newSeq_33556826(len_33556828) { + var result_33556829 = []; + + result_33556829 = new Array(len_33556828); for (var i = 0 ; i < len_33556828 ; ++i) { result_33556829[i] = null; } + return result_33556829; + +} + +function unhandledException(e_33556664) { + var buf_33556665 = [[]]; + if (!(((e_33556664.message).length == 0))) { + buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("Error: unhandled exception: "));; + buf_33556665[0].push.apply(buf_33556665[0], e_33556664.message);; + } + else { + buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("Error: unhandled exception"));; + } + + buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit(" ["));; + add_33556420(buf_33556665, 0, e_33556664.name); + buf_33556665[0].push.apply(buf_33556665[0], makeNimstrLit("]\x0A"));; + var cbuf_33556666 = toJSStr(buf_33556665[0]); + framePtr = null; + if (typeof(Error) !== "undefined") { + throw new Error(cbuf_33556666); + } + else { + throw cbuf_33556666; + } + + + +} + +function raiseOverflow() { + raiseException({message: makeNimstrLit("over- or underflow"), parent: null, m_type: NTI33555122, name: null, trace: [], up: null}, "OverflowDefect"); + + +} + +function checkOverflowInt(a_33556939) { + if (a_33556939 > 2147483647 || a_33556939 < -2147483648) raiseOverflow(); + + + +} + +function raiseRangeError() { + raiseException({message: makeNimstrLit("value out of range"), parent: null, m_type: NTI33555130, name: null, trace: [], up: null}, "RangeDefect"); + + +} + +function addChars_251658415(result_251658417, result_251658417_Idx, x_251658418, start_251658419, n_251658420) { + var old_251658421 = (result_251658417[result_251658417_Idx]).length; + (result_251658417[result_251658417_Idx].length = chckRange(addInt(old_251658421, n_251658420), 0, 2147483647)); + Label1: do { + var iHEX60gensym4_251658435 = 0; + var i_1275068527 = 0; + Label2: do { + Label3: while (true) { + if (!(i_1275068527 < n_251658420)) break Label3; + iHEX60gensym4_251658435 = i_1275068527; + result_251658417[result_251658417_Idx][chckIndx(addInt(old_251658421, iHEX60gensym4_251658435), 0, (result_251658417[result_251658417_Idx]).length - 1)] = x_251658418.charCodeAt(chckIndx(addInt(start_251658419, iHEX60gensym4_251658435), 0, (x_251658418).length - 1)); + i_1275068527 = addInt(i_1275068527, 1); + } + } while (false); + } while (false); + + +} + +function addChars_251658411(result_251658413, result_251658413_Idx, x_251658414) { + addChars_251658415(result_251658413, result_251658413_Idx, x_251658414, 0, ((x_251658414) == null ? 0 : (x_251658414).length)); + + +} + +function addInt_251658436(result_251658437, result_251658437_Idx, x_251658438) { + addChars_251658411(result_251658437, result_251658437_Idx, ((x_251658438) + "")); + + +} + +function addInt_251658457(result_251658458, result_251658458_Idx, x_251658459) { + addInt_251658436(result_251658458, result_251658458_Idx, x_251658459); + + +} + +function HEX24_335544323(x_335544324) { + var result_335544325 = [[]]; + + addInt_251658457(result_335544325, 0, x_335544324); + + return result_335544325[0]; + +} + +function isFatPointer_33557132(ti_33557133) { + var result_33557134 = false; + + BeforeRet: do { + result_33557134 = !((ConstSet2[ti_33557133.base.kind] != undefined)); + break BeforeRet; + } while (false); + + return result_33557134; + +} + +function nimCopyAux(dest_33557145, src_33557146, n_33557147) { + switch (n_33557147.kind) { + case 0: + break; + case 1: + dest_33557145[n_33557147.offset] = nimCopy(dest_33557145[n_33557147.offset], src_33557146[n_33557147.offset], n_33557147.typ); + + break; + case 2: + for (var i = 0; i < n_33557147.sons.length; i++) { + nimCopyAux(dest_33557145, src_33557146, n_33557147.sons[i]); + } + + break; + case 3: + dest_33557145[n_33557147.offset] = nimCopy(dest_33557145[n_33557147.offset], src_33557146[n_33557147.offset], n_33557147.typ); + for (var i = 0; i < n_33557147.sons.length; ++i) { + nimCopyAux(dest_33557145, src_33557146, n_33557147.sons[i][1]); + } + + break; + } + + +} + +function raiseIndexError(i_33556755, a_33556756, b_33556757) { + var Temporary1; + + if ((b_33556757 < a_33556756)) { + Temporary1 = makeNimstrLit("index out of bounds, the container is empty"); + } + else { + Temporary1 = (makeNimstrLit("index ") || []).concat(HEX24_335544323(i_33556755) || [],makeNimstrLit(" not in ") || [],HEX24_335544323(a_33556756) || [],makeNimstrLit(" .. ") || [],HEX24_335544323(b_33556757) || []); + } + + raiseException({message: nimCopy(null, Temporary1, NTI33554439), parent: null, m_type: NTI33555128, name: null, trace: [], up: null}, "IndexDefect"); + + +} + +function raiseDivByZero() { + raiseException({message: makeNimstrLit("division by zero"), parent: null, m_type: NTI33555121, name: null, trace: [], up: null}, "DivByZeroDefect"); + + +} + +function parseSaturatedNatural_486539580(s_486539581, b_486539582, b_486539582_Idx, start_486539583) { + var Temporary1; + var Temporary4; + + var result_486539584 = 0; + + var i_486539585 = start_486539583; + if (((i_486539585 < (s_486539581).length) && (s_486539581[chckIndx(i_486539585, 0, (s_486539581).length - 1)] == 43))) { + i_486539585 = addInt(i_486539585, 1); + } + + if (!(i_486539585 < (s_486539581).length)) Temporary1 = false; else { Temporary1 = (ConstSet6[s_486539581[chckIndx(i_486539585, 0, (s_486539581).length - 1)]] != undefined); } if (Temporary1) { + b_486539582[b_486539582_Idx] = 0; + Label2: do { + Label3: while (true) { + if (!(i_486539585 < (s_486539581).length)) Temporary4 = false; else { Temporary4 = (ConstSet7[s_486539581[chckIndx(i_486539585, 0, (s_486539581).length - 1)]] != undefined); } if (!Temporary4) break Label3; + var c_486539604 = subInt(s_486539581[chckIndx(i_486539585, 0, (s_486539581).length - 1)], 48); + if ((b_486539582[b_486539582_Idx] <= divInt(subInt(2147483647, c_486539604), 10))) { + b_486539582[b_486539582_Idx] = addInt(mulInt(b_486539582[b_486539582_Idx], 10), c_486539604); + } + else { + b_486539582[b_486539582_Idx] = 2147483647; + } + + i_486539585 = addInt(i_486539585, 1); + Label5: do { + Label6: while (true) { + if (!((i_486539585 < (s_486539581).length) && (s_486539581[chckIndx(i_486539585, 0, (s_486539581).length - 1)] == 95))) break Label6; + i_486539585 = addInt(i_486539585, 1); + } + } while (false); + } + } while (false); + result_486539584 = subInt(i_486539585, start_486539583); + } + + + return result_486539584; + +} + +function HEX5BHEX5D_721423528(s_721423531, x_721423532) { + var result_721423533 = []; + + var a_721423535 = x_721423532.a; + var L_721423537 = addInt(subInt(subInt((s_721423531).length, x_721423532.b), a_721423535), 1); + result_721423533 = nimCopy(null, mnewString(chckRange(L_721423537, 0, 2147483647)), NTI33554439); + Label1: do { + var i_721423542 = 0; + var i_1442841208 = 0; + Label2: do { + Label3: while (true) { + if (!(i_1442841208 < L_721423537)) break Label3; + i_721423542 = i_1442841208; + result_721423533[chckIndx(i_721423542, 0, (result_721423533).length - 1)] = s_721423531[chckIndx(addInt(i_721423542, a_721423535), 0, (s_721423531).length - 1)]; + i_1442841208 = addInt(i_1442841208, 1); + } + } while (false); + } while (false); + + return result_721423533; + +} + +function HEX2EHEX2E_721423501(a_721423504, b_721423505) { + var result_721423508 = ({a: 0, b: 0}); + + result_721423508 = nimCopy(result_721423508, {a: a_721423504, b: b_721423505}, NTI721430694); + + return result_721423508; + +} + +function parseStandardFormatSpecifier_1107296314(s_1107296315, start_1107296316, ignoreUnknownSuffix_1107296317) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1107296318 = ({fill: 0, align: 0, sign: 0, alternateForm: false, padWithZero: false, minimumWidth: 0, precision: 0, typ: 0, endPosition: 0}); + + result_1107296318.fill = 32; + result_1107296318.align = 0; + result_1107296318.sign = 45; + var i_1107296320 = start_1107296316; + if (((addInt(i_1107296320, 1) < (s_1107296315).length) && (ConstSet1[s_1107296315[chckIndx(addInt(i_1107296320, 1), 0, (s_1107296315).length - 1)]] != undefined))) { + result_1107296318.fill = s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]; + result_1107296318.align = s_1107296315[chckIndx(addInt(i_1107296320, 1), 0, (s_1107296315).length - 1)]; + i_1107296320 = addInt(i_1107296320, 2); + } + else { + if (((i_1107296320 < (s_1107296315).length) && (ConstSet3[s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]] != undefined))) { + result_1107296318.align = s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]; + i_1107296320 = addInt(i_1107296320, 1); + } + } + if (((i_1107296320 < (s_1107296315).length) && (ConstSet4[s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]] != undefined))) { + result_1107296318.sign = s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]; + i_1107296320 = addInt(i_1107296320, 1); + } + + if (((i_1107296320 < (s_1107296315).length) && (s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)] == 35))) { + result_1107296318.alternateForm = true; + i_1107296320 = addInt(i_1107296320, 1); + } + + if (!((addInt(i_1107296320, 1) < (s_1107296315).length) && (s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)] == 48))) Temporary1 = false; else { Temporary1 = (ConstSet5[s_1107296315[chckIndx(addInt(i_1107296320, 1), 0, (s_1107296315).length - 1)]] != undefined); } if (Temporary1) { + result_1107296318.padWithZero = true; + i_1107296320 = addInt(i_1107296320, 1); + } + + var parsedLength_1107296357 = parseSaturatedNatural_486539580(s_1107296315, result_1107296318, "minimumWidth", i_1107296320); + i_1107296320 = addInt(i_1107296320, parsedLength_1107296357); + if (((i_1107296320 < (s_1107296315).length) && (s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)] == 46))) { + i_1107296320 = addInt(i_1107296320, 1); + var parsedLengthB_1107296366 = parseSaturatedNatural_486539580(s_1107296315, result_1107296318, "precision", i_1107296320); + i_1107296320 = addInt(i_1107296320, parsedLengthB_1107296366); + } + else { + result_1107296318.precision = -1; + } + + if (!(i_1107296320 < (s_1107296315).length)) Temporary2 = false; else { Temporary2 = (ConstSet8[s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]] != undefined); } if (Temporary2) { + result_1107296318.typ = s_1107296315[chckIndx(i_1107296320, 0, (s_1107296315).length - 1)]; + i_1107296320 = addInt(i_1107296320, 1); + } + + result_1107296318.endPosition = i_1107296320; + if (!!((i_1107296320 == (s_1107296315).length))) Temporary3 = false; else { Temporary3 = !(ignoreUnknownSuffix_1107296317); } if (Temporary3) { + raiseException({message: (makeNimstrLit("invalid format string, cannot parse: ") || []).concat(HEX5BHEX5D_721423528(s_1107296315, HEX2EHEX2E_721423501(i_1107296320, 1)) || []), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError"); + } + + + return result_1107296318; + +} + +function nucruneLen(s_721420298) { + var result_721420299 = 0; + + result_721420299 = 0; + var i_721420300 = 0; + Label1: do { + Label2: while (true) { + if (!(i_721420300 < (s_721420298).length)) break Label2; + if ((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] <= 127)) { + i_721420300 = addInt(i_721420300, 1); + } + else { + if (((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] >>> 5) == 6)) { + i_721420300 = addInt(i_721420300, 2); + } + else { + if (((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] >>> 4) == 14)) { + i_721420300 = addInt(i_721420300, 3); + } + else { + if (((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] >>> 3) == 30)) { + i_721420300 = addInt(i_721420300, 4); + } + else { + if (((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] >>> 2) == 62)) { + i_721420300 = addInt(i_721420300, 5); + } + else { + if (((s_721420298[chckIndx(i_721420300, 0, (s_721420298).length - 1)] >>> 1) == 126)) { + i_721420300 = addInt(i_721420300, 6); + } + else { + i_721420300 = addInt(i_721420300, 1); + } + }}}}} + result_721420299 = addInt(result_721420299, 1); + } + } while (false); + + return result_721420299; + +} + +function runeLenAt_721420353(s_721420354, i_721420355) { + var result_721420356 = 0; + + if ((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] <= 127)) { + result_721420356 = 1; + } + else { + if (((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] >>> 5) == 6)) { + result_721420356 = 2; + } + else { + if (((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] >>> 4) == 14)) { + result_721420356 = 3; + } + else { + if (((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] >>> 3) == 30)) { + result_721420356 = 4; + } + else { + if (((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] >>> 2) == 62)) { + result_721420356 = 5; + } + else { + if (((s_721420354[chckIndx(i_721420355, 0, (s_721420354).length - 1)] >>> 1) == 126)) { + result_721420356 = 6; + } + else { + result_721420356 = 1; + } + }}}}} + + return result_721420356; + +} + +function runeOffset_721420925(s_721420926, pos_721420927, start_721420928) { + var result_721420929 = 0; + + BeforeRet: do { + var i_721420930 = 0; + var o_721420931 = start_721420928; + Label1: do { + Label2: while (true) { + if (!(i_721420930 < pos_721420927)) break Label2; + o_721420931 = addInt(o_721420931, chckRange(runeLenAt_721420353(s_721420926, o_721420931), 0, 2147483647)); + if (((s_721420926).length <= o_721420931)) { + result_721420929 = -1; + break BeforeRet; + } + + i_721420930 = addInt(i_721420930, 1); + } + } while (false); + result_721420929 = o_721420931; + break BeforeRet; + } while (false); + + return result_721420929; + +} + +function validateUtf8_721420565(s_721420566) { + var Temporary3; + var Temporary4; + var Temporary5; + var Temporary6; + var Temporary7; + var Temporary8; + + var result_721420567 = 0; + + BeforeRet: do { + var i_721420568 = 0; + var L_721420569 = (s_721420566).length; + Label1: do { + Label2: while (true) { + if (!(i_721420568 < L_721420569)) break Label2; + if ((s_721420566[chckIndx(i_721420568, 0, (s_721420566).length - 1)] <= 127)) { + i_721420568 = addInt(i_721420568, 1); + } + else { + if (((s_721420566[chckIndx(i_721420568, 0, (s_721420566).length - 1)] >>> 5) == 6)) { + if ((s_721420566[chckIndx(i_721420568, 0, (s_721420566).length - 1)] < 194)) { + result_721420567 = i_721420568; + break BeforeRet; + } + + if (!(addInt(i_721420568, 1) < L_721420569)) Temporary3 = false; else { Temporary3 = ((s_721420566[chckIndx(addInt(i_721420568, 1), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (Temporary3) { + i_721420568 = addInt(i_721420568, 2); + } + else { + result_721420567 = i_721420568; + break BeforeRet; + } + + } + else { + if (((s_721420566[chckIndx(i_721420568, 0, (s_721420566).length - 1)] >>> 4) == 14)) { + if (!(addInt(i_721420568, 2) < L_721420569)) Temporary5 = false; else { Temporary5 = ((s_721420566[chckIndx(addInt(i_721420568, 1), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (!Temporary5) Temporary4 = false; else { Temporary4 = ((s_721420566[chckIndx(addInt(i_721420568, 2), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (Temporary4) { + i_721420568 = addInt(i_721420568, 3); + } + else { + result_721420567 = i_721420568; + break BeforeRet; + } + + } + else { + if (((s_721420566[chckIndx(i_721420568, 0, (s_721420566).length - 1)] >>> 3) == 30)) { + if (!(addInt(i_721420568, 3) < L_721420569)) Temporary8 = false; else { Temporary8 = ((s_721420566[chckIndx(addInt(i_721420568, 1), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (!Temporary8) Temporary7 = false; else { Temporary7 = ((s_721420566[chckIndx(addInt(i_721420568, 2), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (!Temporary7) Temporary6 = false; else { Temporary6 = ((s_721420566[chckIndx(addInt(i_721420568, 3), 0, (s_721420566).length - 1)] >>> 6) == 2); } if (Temporary6) { + i_721420568 = addInt(i_721420568, 4); + } + else { + result_721420567 = i_721420568; + break BeforeRet; + } + + } + else { + result_721420567 = i_721420568; + break BeforeRet; + } + }}} + } + } while (false); + result_721420567 = -1; + break BeforeRet; + } while (false); + + return result_721420567; + +} + +function nsuRepeatChar(c_469763067, count_469763068) { + var result_469763069 = []; + + result_469763069 = nimCopy(null, mnewString(count_469763068), NTI33554439); + Label1: do { + var i_469763074 = 0; + var colontmp__1275068535 = 0; + colontmp__1275068535 = subInt(count_469763068, 1); + var res_1275068536 = 0; + Label2: do { + Label3: while (true) { + if (!(res_1275068536 <= colontmp__1275068535)) break Label3; + i_469763074 = res_1275068536; + result_469763069[chckIndx(i_469763074, 0, (result_469763069).length - 1)] = c_469763067; + res_1275068536 = addInt(res_1275068536, 1); + } + } while (false); + } while (false); + + return result_469763069; + +} + +function alignString_1107296276(s_1107296277, minimumWidth_1107296278, align_1107296279, fill_1107296280) { + var Temporary1; + + var result_1107296281 = []; + + if ((minimumWidth_1107296278 == 0)) { + result_1107296281 = nimCopy(null, s_1107296277, NTI33554439); + } + else { + if ((validateUtf8_721420565(s_1107296277) == -1)) { + Temporary1 = nucruneLen(s_1107296277); + } + else { + Temporary1 = (s_1107296277).length; + } + + var sRuneLen_1107296282 = Temporary1; + var toFill_1107296283 = subInt(minimumWidth_1107296278, sRuneLen_1107296282); + if ((toFill_1107296283 <= 0)) { + result_1107296281 = nimCopy(null, s_1107296277, NTI33554439); + } + else { + if (((align_1107296279 == 60) || (align_1107296279 == 0))) { + result_1107296281 = nimCopy(null, (s_1107296277 || []).concat(nsuRepeatChar(fill_1107296280, chckRange(toFill_1107296283, 0, 2147483647)) || []), NTI33554439); + } + else { + if ((align_1107296279 == 94)) { + var half_1107296284 = divInt(toFill_1107296283, 2); + result_1107296281 = nimCopy(null, (nsuRepeatChar(fill_1107296280, chckRange(half_1107296284, 0, 2147483647)) || []).concat(s_1107296277 || [],nsuRepeatChar(fill_1107296280, chckRange(subInt(toFill_1107296283, half_1107296284), 0, 2147483647)) || []), NTI33554439); + } + else { + result_1107296281 = nimCopy(null, (nsuRepeatChar(fill_1107296280, chckRange(toFill_1107296283, 0, 2147483647)) || []).concat(s_1107296277 || []), NTI33554439); + } + }} + } + + + return result_1107296281; + +} + +function formatValue_1107296418(result_1107296419, result_1107296419_Idx, value_1107296420, specifier_1107296421) { + var spec_1107296422 = parseStandardFormatSpecifier_1107296314(specifier_1107296421, 0, false); + var value_1107296423 = nimCopy(null, value_1107296420, NTI33554439); + switch (spec_1107296422.typ) { + case 115: + case 0: + break; + default: + raiseException({message: (makeNimstrLit("invalid type in format string for string, expected \'s\', but got ") || []).concat([spec_1107296422.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError"); + break; + } + if (!((spec_1107296422.precision == -1))) { + if ((spec_1107296422.precision < nucruneLen(value_1107296423))) { + (value_1107296423.length = chckRange(runeOffset_721420925(value_1107296423, chckRange(spec_1107296422.precision, 0, 2147483647), 0), 0, 2147483647)); + } + + } + + result_1107296419[result_1107296419_Idx].push.apply(result_1107296419[result_1107296419_Idx], alignString_1107296276(value_1107296423, spec_1107296422.minimumWidth, spec_1107296422.align, spec_1107296422.fill));; + + +} + +function addEscapedChar_33557861(s_33557862, s_33557862_Idx, c_33557863) { + switch (c_33557863) { + case 7: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\a"));; + break; + case 8: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\b"));; + break; + case 9: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\t"));; + break; + case 10: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\n"));; + break; + case 11: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\v"));; + break; + case 12: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\f"));; + break; + case 13: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\r"));; + break; + case 27: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\e"));; + break; + case 92: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\\\"));; + break; + case 39: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\\'"));; + break; + case 34: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\\""));; + break; + case 32: + case 33: + case 35: + case 36: + case 37: + case 38: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 58: + case 59: + case 60: + case 61: + case 62: + case 63: + case 64: + case 65: + case 66: + case 67: + case 68: + case 69: + case 70: + case 71: + case 72: + case 73: + case 74: + case 75: + case 76: + case 77: + case 78: + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 93: + case 94: + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: + case 101: + case 102: + case 103: + case 104: + case 105: + case 106: + case 107: + case 108: + case 109: + case 110: + case 111: + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + case 123: + case 124: + case 125: + case 126: + addChar(s_33557862[s_33557862_Idx], c_33557863);; + break; + default: + s_33557862[s_33557862_Idx].push.apply(s_33557862[s_33557862_Idx], makeNimstrLit("\\x"));; + var n_33557873 = c_33557863; + addChar(s_33557862[s_33557862_Idx], makeNimstrLit("0123456789ABCDEF")[chckIndx(((n_33557873 & 240) >> 4), 0, (makeNimstrLit("0123456789ABCDEF")).length - 1)]);; + addChar(s_33557862[s_33557862_Idx], makeNimstrLit("0123456789ABCDEF")[chckIndx((n_33557873 & 15), 0, (makeNimstrLit("0123456789ABCDEF")).length - 1)]);; + break; + } + + +} + +function addQuoted_1459618121(s_1459618123, s_1459618123_Idx, x_1459618124) { + s_1459618123[s_1459618123_Idx].push.apply(s_1459618123[s_1459618123_Idx], makeNimstrLit("\'"));; + addEscapedChar_33557861(s_1459618123, s_1459618123_Idx, x_1459618124); + s_1459618123[s_1459618123_Idx].push.apply(s_1459618123[s_1459618123_Idx], makeNimstrLit("\'"));; + + +} + +function collectionToString_1459618089(x_1459618091, prefix_1459618092, separator_1459618093, suffix_1459618094) { + var result_1459618095 = [[]]; + + result_1459618095[0] = nimCopy(null, prefix_1459618092, NTI33554439); + var firstElement_1459618096 = true; + Label1: do { + var value_1459618117 = 0; + var i_1275068541 = 0; + Label2: do { + Label3: while (true) { + if (!(i_1275068541 <= 255)) break Label3; + if ((x_1459618091[i_1275068541] != undefined)) { + value_1459618117 = i_1275068541; + if (firstElement_1459618096) { + firstElement_1459618096 = false; + } + else { + result_1459618095[0].push.apply(result_1459618095[0], separator_1459618093);; + } + + addQuoted_1459618121(result_1459618095, 0, value_1459618117); + } + + i_1275068541 += 1; + } + } while (false); + } while (false); + result_1459618095[0].push.apply(result_1459618095[0], suffix_1459618094);; + + return result_1459618095[0]; + +} + +function HEX24_1459618085(x_1459618087) { + var result_1459618088 = []; + + result_1459618088 = nimCopy(null, collectionToString_1459618089(x_1459618087, makeNimstrLit("{"), makeNimstrLit(", "), makeNimstrLit("}")), NTI33554439); + + return result_1459618088; + +} + +function prettyExpectedSet_1459617900(x_1459617901) { + var Temporary2; + + var result_1459617902 = []; + + Label1: do { + var expr_1459617924 = nimCopy(null, x_1459617901, NTI1459617871); + var pos_1459618057 = 0; + var _ = pos_1459618057; + if (SetEq(expr_1459617924, ConstSet9)) { + Temporary2 = makeNimstrLit("AllChars {\'\x00\'..\'\xFF\'}"); + } + else { + if (SetEq(expr_1459617924, ConstSet10)) { + Temporary2 = makeNimstrLit("Digits {\'0\'..\'9\'}"); + } + else { + if (SetEq(expr_1459617924, ConstSet11)) { + Temporary2 = makeNimstrLit("HexDigits {\'0\'..\'9\', \'A\'..\'F\', \'a\'..\'f\'}"); + } + else { + if (SetEq(expr_1459617924, ConstSet12)) { + Temporary2 = makeNimstrLit("Letters {\'A\'..\'Z\', \'a\'..\'z\'}"); + } + else { + if (SetEq(expr_1459617924, ConstSet13)) { + Temporary2 = makeNimstrLit("Newlines {\'\x0D\', \'\x0A\'}"); + } + else { + if (SetEq(expr_1459617924, ConstSet14)) { + Temporary2 = makeNimstrLit("Whitespace {\' \', \'\x09\', \'\x0B\', \'\x0D\', \'\x0A\', \'\x0C\'}"); + } + else { + Temporary2 = HEX24_1459618085(x_1459617901); + } + }}}}} + } while (false); + result_1459617902 = nimCopy(null, Temporary2, NTI33554439); + + return result_1459617902; + +} + +function HEX26_1275068448(x_1275068450, y_1275068451) { + var result_1275068452 = []; + + result_1275068452 = new Array(chckRange(addInt((x_1275068450).length, 1), 0, 2147483647)); for (var i = 0 ; i < chckRange(addInt((x_1275068450).length, 1), 0, 2147483647) ; ++i) { result_1275068452[i] = null; } Label1: do { + var i_1275068467 = 0; + var colontmp__1275068544 = 0; + colontmp__1275068544 = subInt((x_1275068450).length, 1); + var res_1275068545 = 0; + Label2: do { + Label3: while (true) { + if (!(res_1275068545 <= colontmp__1275068544)) break Label3; + i_1275068467 = res_1275068545; + result_1275068452[chckIndx(i_1275068467, 0, (result_1275068452).length - 1)] = x_1275068450[chckIndx(i_1275068467, 0, (x_1275068450).length - 1)]; + res_1275068545 = addInt(res_1275068545, 1); + } + } while (false); + } while (false); + result_1275068452[chckIndx((x_1275068450).length, 0, (result_1275068452).length - 1)] = y_1275068451; + + return result_1275068452; + +} + +function initParserToken_1442840634(x_1442840635) { + var result_1442840636 = null; + + result_1442840636 = {kind: 0, charValue: x_1442840635, stringValue: []}; + + return result_1442840636; + +} + +function ch_1275068428(expectedChars_1275068429) { + expectedChars_1275068429 = nimCopy(null, expectedChars_1275068429, NTI1275068420); + +function HEX3Aanonymous_1275068433(parser_1275068434) { + var result_1275068435 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var state_1275068436 = parser_1275068434.state; + var newIndex_1275068437 = addInt(state_1275068436.position, 1); + if ((subInt((state_1275068436.stream).length, 1) < newIndex_1275068437)) { + var fmtRes_1275068438 = [mnewString(0)]; + formatValue_1107296418(fmtRes_1275068438, 0, prettyExpectedSet_1459617900(expectedChars_1275068429), []); + result_1275068435 = nimCopy(result_1275068435, {o: false, e: {kind: 2, expected: nimCopy(null, fmtRes_1275068438[0], NTI33554439), index: newIndex_1275068437, parser: parser_1275068434, unexpected: []}, v: null}, NTI1442840603); + break BeforeRet; + } + else { + var foundChar_1275068443 = state_1275068436.stream[chckIndx(newIndex_1275068437, 0, (state_1275068436.stream).length - 1)]; + if ((expectedChars_1275068429[foundChar_1275068443] != undefined)) { + result_1275068435 = nimCopy(result_1275068435, {o: true, v: {state: {stream: nimCopy(null, state_1275068436.stream, NTI33554439), position: newIndex_1275068437, lastPosition: parser_1275068434.state.position}, tokens: HEX26_1275068448(parser_1275068434.tokens, initParserToken_1442840634(foundChar_1275068443))}, e: null}, NTI1442840603); + break BeforeRet; + } + else { + var fmtRes_1275068475 = mnewString(0); + addChar(fmtRes_1275068475, foundChar_1275068443);; + var fmtRes_1275068476 = [mnewString(0)]; + formatValue_1107296418(fmtRes_1275068476, 0, prettyExpectedSet_1459617900(expectedChars_1275068429), []); + result_1275068435 = nimCopy(result_1275068435, {o: false, e: {kind: 1, unexpected: nimCopy(null, fmtRes_1275068475, NTI33554439), expected: nimCopy(null, fmtRes_1275068476[0], NTI33554439), index: newIndex_1275068437, parser: parser_1275068434}, v: null}, NTI1442840603); + break BeforeRet; + } + + } + + } while (false); + + return result_1275068435; + + } + + var result_1275068432 = null; + + BeforeRet: do { + result_1275068432 = HEX3Aanonymous_1275068433; + break BeforeRet; + } while (false); + + return result_1275068432; + +} +var anyCh_1275068520 = ch_1275068428(ConstSet15); + +function newSeq_1275068900(len_1275068902) { + var result_1275068903 = []; + + result_1275068903 = new Array(len_1275068902); for (var i = 0 ; i < len_1275068902 ; ++i) { result_1275068903[i] = ({o: false, e: null, v: null}); } + return result_1275068903; + +} + +function Nothing_1275068918() { + var result_1275068922 = null; + + result_1275068922 = {kind: 0, value: ({o: false, e: null, v: null})}; + + return result_1275068922; + +} + +function Just_1275068962(value_1275068964) { + var result_1275068965 = null; + + result_1275068965 = {kind: 1, value: nimCopy(null, value_1275068964, NTI1442840603)}; + + return result_1275068965; + +} + +function just_1275068958(value_1275068960) { + var result_1275068961 = null; + + result_1275068961 = Just_1275068962(value_1275068960); + + return result_1275068961; + +} + +function HEX26_1275068967(x_1275068969, y_1275068970) { + var result_1275068971 = []; + + result_1275068971 = new Array(chckRange(addInt((x_1275068969).length, 1), 0, 2147483647)); for (var i = 0 ; i < chckRange(addInt((x_1275068969).length, 1), 0, 2147483647) ; ++i) { result_1275068971[i] = ({o: false, e: null, v: null}); } Label1: do { + var i_1275068987 = 0; + var colontmp__1275069283 = 0; + colontmp__1275069283 = subInt((x_1275068969).length, 1); + var res_1275069284 = 0; + Label2: do { + Label3: while (true) { + if (!(res_1275069284 <= colontmp__1275069283)) break Label3; + i_1275068987 = res_1275069284; + result_1275068971[chckIndx(i_1275068987, 0, (result_1275068971).length - 1)] = nimCopy(result_1275068971[chckIndx(i_1275068987, 0, (result_1275068971).length - 1)], x_1275068969[chckIndx(i_1275068987, 0, (x_1275068969).length - 1)], NTI1442840603); + res_1275069284 = addInt(res_1275069284, 1); + } + } while (false); + } while (false); + result_1275068971[chckIndx((x_1275068969).length, 0, (result_1275068971).length - 1)] = nimCopy(result_1275068971[chckIndx((x_1275068969).length, 0, (result_1275068971).length - 1)], y_1275068970, NTI1442840603); + + return result_1275068971; + +} + +function sysFatal_218103842(message_218103845) { + raiseException({message: nimCopy(null, message_218103845, NTI33554439), m_type: NTI33555124, parent: null, name: null, trace: [], up: null}, "AssertionDefect"); + + +} + +function raiseAssert_218103840(msg_218103841) { + sysFatal_218103842(msg_218103841); + + +} + +function failedAssertImpl_218103864(msg_218103865) { + raiseAssert_218103840(msg_218103865); + + +} + +function isEmpty_1275069123(o_1275069125) { + var result_1275069126 = false; + + result_1275069126 = (o_1275069125.kind == 0); + + return result_1275069126; + +} + +function isDefined_1275069117(o_1275069119) { + var result_1275069120 = false; + + result_1275069120 = !(isEmpty_1275069123(o_1275069119)); + + return result_1275069120; + +} + +function reprEnum(e_33557386, typ_33557387) { + var result_33557388 = []; + + var tmp_33557389 = false; + var item_33557390 = typ_33557387.node.sons[e_33557386]; + tmp_33557389 = item_33557390 !== undefined + if (tmp_33557389) { + result_33557388 = nimCopy(null, makeNimstrLit(item_33557390.name), NTI33554439); + } + else { + result_33557388 = nimCopy(null, (HEX24_335544323(e_33557386) || []).concat(makeNimstrLit(" (invalid data!)") || []), NTI33554439); + } + + + return result_33557388; + +} + +function fold_1275069107(v_1275069110, ifNothing_1275069111, ifJust_1275069113) { + var Temporary1; + var Temporary2; + + var result_1275069114 = ({o: false, e: null, v: null}); + + if (isDefined_1275069117(v_1275069110)) { + var Temporary2 = v_1275069110; + if (ConstSet16[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1291845635)); } + Temporary1 = ifJust_1275069113(Temporary2.value); + } + else { + Temporary1 = ifNothing_1275069111(); + } + + result_1275069114 = nimCopy(result_1275069114, Temporary1, NTI1442840603); + + return result_1275069114; + +} + +function map_1275069012(s_1275069015, op_1275069017) { + var result_1275069018 = []; + + result_1275069018 = new Array(chckRange((s_1275069015).length, 0, 2147483647)); for (var i = 0 ; i < chckRange((s_1275069015).length, 0, 2147483647) ; ++i) { result_1275069018[i] = []; } Label1: do { + var i_1275069034 = 0; + var colontmp__1275069287 = 0; + colontmp__1275069287 = (s_1275069015).length; + var i_1275069288 = 0; + Label2: do { + Label3: while (true) { + if (!(i_1275069288 < colontmp__1275069287)) break Label3; + i_1275069034 = i_1275069288; + result_1275069018[chckIndx(i_1275069034, 0, (result_1275069018).length - 1)] = nimCopy(null, op_1275069017(s_1275069015[chckIndx(i_1275069034, 0, (s_1275069015).length - 1)]), NTI33554439); + i_1275069288 = addInt(i_1275069288, 1); + } + } while (false); + } while (false); + + return result_1275069018; + +} + +function substr_33557907(s_33557908, first_33557909, last_33557910) { + var result_33557911 = []; + + var first_33557912 = nimMax(first_33557909, 0); + var L_33557913 = nimMax(addInt(subInt(nimMin(last_33557910, (s_33557908).length - 1), first_33557912), 1), 0); + result_33557911 = nimCopy(null, mnewString(chckRange(L_33557913, 0, 2147483647)), NTI33554439); + Label1: do { + var i_33557918 = 0; + var colontmp__1275069303 = 0; + colontmp__1275069303 = subInt(L_33557913, 1); + var res_1275069304 = 0; + Label2: do { + Label3: while (true) { + if (!(res_1275069304 <= colontmp__1275069303)) break Label3; + i_33557918 = res_1275069304; + result_33557911[chckIndx(i_33557918, 0, (result_33557911).length - 1)] = s_33557908[chckIndx(addInt(i_33557918, first_33557912), 0, (s_33557908).length - 1)]; + res_1275069304 = addInt(res_1275069304, 1); + } + } while (false); + } while (false); + + return result_33557911; + +} + +function nsuIndent(s_469763169, count_469763170, padding_469763171) { + var Temporary6; + + var result_469763172 = []; + + result_469763172 = nimCopy(null, [], NTI33554439); + var i_469763173 = 0; + Label1: do { + var line_469763174 = []; + var first_1275069297 = 0; + var last_1275069298 = 0; + var eolpos_1275069299 = 0; + Label2: do { + Label3: while (true) { + if (!true) break Label3; + Label4: do { + Label5: while (true) { + if (!((last_1275069298 < (s_469763169).length) && !((ConstSet17[s_469763169[chckIndx(last_1275069298, 0, (s_469763169).length - 1)]] != undefined)))) break Label5; + last_1275069298 = addInt(last_1275069298, 1); + } + } while (false); + eolpos_1275069299 = last_1275069298; + if ((last_1275069298 < (s_469763169).length)) { + if ((s_469763169[chckIndx(last_1275069298, 0, (s_469763169).length - 1)] == 10)) { + last_1275069298 = addInt(last_1275069298, 1); + } + else { + if ((s_469763169[chckIndx(last_1275069298, 0, (s_469763169).length - 1)] == 13)) { + last_1275069298 = addInt(last_1275069298, 1); + if (((last_1275069298 < (s_469763169).length) && (s_469763169[chckIndx(last_1275069298, 0, (s_469763169).length - 1)] == 10))) { + last_1275069298 = addInt(last_1275069298, 1); + } + + } + } + } + + if (false) { + Temporary6 = subInt(last_1275069298, 1); + } + else { + Temporary6 = subInt(eolpos_1275069299, 1); + } + + line_469763174 = substr_33557907(s_469763169, first_1275069297, Temporary6); + if (!((i_469763173 == 0))) { + result_469763172.push.apply(result_469763172, makeNimstrLit("\x0A"));; + } + + Label7: do { + var j_469763179 = 0; + var colontmp__1275069292 = 0; + colontmp__1275069292 = count_469763170; + var res_1275069293 = 1; + Label8: do { + Label9: while (true) { + if (!(res_1275069293 <= colontmp__1275069292)) break Label9; + j_469763179 = res_1275069293; + result_469763172.push.apply(result_469763172, padding_469763171);; + res_1275069293 = addInt(res_1275069293, 1); + } + } while (false); + } while (false); + result_469763172.push.apply(result_469763172, line_469763174);; + i_469763173 = addInt(i_469763173, 1); + if ((eolpos_1275069299 == last_1275069298)) { + break Label2; + } + + first_1275069297 = last_1275069298; + } + } while (false); + } while (false); + + return result_469763172; + +} + +function HEX24_469763312(x_469763315) { + var result_469763316 = []; + + result_469763316 = nimCopy(null, HEX24_335544323(x_469763315.a), NTI33554439); + result_469763316.push.apply(result_469763316, makeNimstrLit(" .. "));; + result_469763316.push.apply(result_469763316, HEX24_335544323(x_469763315.b));; + + return result_469763316; + +} + +function addQuoted_469763304(s_469763306, s_469763306_Idx, x_469763307) { + s_469763306[s_469763306_Idx].push.apply(s_469763306[s_469763306_Idx], HEX24_469763312(x_469763307));; + + +} + +function addQuoted_469763324(s_469763326, s_469763326_Idx, x_469763327) { + addInt_251658457(s_469763326, s_469763326_Idx, x_469763327); + + +} + +function HEX24_469763277(x_469763279) { + var result_469763280 = [[]]; + + result_469763280[0] = nimCopy(null, makeNimstrLit("("), NTI33554439); + var count_469763286 = 0; + if ((0 < count_469763286)) { + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit(", "));; + } + + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit("slice"));; + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit(": "));; + count_469763286 += 1; + addQuoted_469763304(result_469763280, 0, x_469763279["Field0"]); + if ((0 < count_469763286)) { + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit(", "));; + } + + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit("len"));; + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit(": "));; + count_469763286 += 1; + addQuoted_469763324(result_469763280, 0, x_469763279["Field1"]); + result_469763280[0].push.apply(result_469763280[0], makeNimstrLit(")"));; + + return result_469763280[0]; + +} + +function delete_469763271(s_469763272, s_469763272_Idx, slice_469763274) { + var Temporary1; + var Temporary2; + + if (!(slice_469763274.a < (s_469763272[s_469763272_Idx]).length)) Temporary2 = false; else { Temporary2 = (0 <= slice_469763274.a); } if (!Temporary2) Temporary1 = false; else { Temporary1 = (slice_469763274.b < (s_469763272[s_469763272_Idx]).length); } if (!(Temporary1)) { + raiseException({message: HEX24_469763277({Field0: nimCopy(null, slice_469763274, NTI939524381), Field1: (s_469763272[s_469763272_Idx]).length}), parent: null, m_type: NTI33555128, name: null, trace: [], up: null}, "IndexDefect"); + } + + if ((slice_469763274.a <= slice_469763274.b)) { + var i_469763330 = slice_469763274.a; + var j_469763331 = addInt(slice_469763274.b, 1); + var newLen_469763332 = addInt(subInt((s_469763272[s_469763272_Idx]).length, j_469763331), i_469763330); + Label3: do { + Label4: while (true) { + if (!(i_469763330 < newLen_469763332)) break Label4; + s_469763272[s_469763272_Idx][chckIndx(i_469763330, 0, (s_469763272[s_469763272_Idx]).length - 1)] = s_469763272[s_469763272_Idx][chckIndx(j_469763331, 0, (s_469763272[s_469763272_Idx]).length - 1)]; + i_469763330 = addInt(i_469763330, 1); + j_469763331 = addInt(j_469763331, 1); + } + } while (false); + (s_469763272[s_469763272_Idx].length = chckRange(newLen_469763332, 0, 2147483647)); + } + + + +} + +function HEX2EHEX2E_721421139(a_721421142, b_721421143) { + var result_721421144 = ({a: 0, b: 0}); + + result_721421144 = nimCopy(result_721421144, {a: a_721421142, b: b_721421143}, NTI939524381); + + return result_721421144; + +} + +function indentAfterNewline_1459617890(str_1459617891, count_1459617892) { + var result_1459617893 = []; + + var strDup_1459617894 = [nsuIndent(str_1459617891, chckRange(count_1459617892, 0, 2147483647), makeNimstrLit(" "))]; + delete_469763271(strDup_1459617894, 0, HEX2EHEX2E_721421139(0, subInt(count_1459617892, 1))); + result_1459617893 = nimCopy(null, strDup_1459617894[0], NTI33554439); + + return result_1459617893; + +} + +function mkDigit_1107296261(v_1107296262, typ_1107296263) { + var Temporary1; + + var result_1107296264 = []; + + if (!((v_1107296262 < 26))) { + failedAssertImpl_218103864(makeNimstrLit("strformat.nim:320:9 `v < 26` ")); + } + + if ((v_1107296262 < 10)) { + result_1107296264 = nimCopy(null, nimCharToStr(chckRange(addInt(48, v_1107296262), 0, 255)), NTI33554439); + } + else { + if ((typ_1107296263 == 120)) { + Temporary1 = 97; + } + else { + Temporary1 = 65; + } + + result_1107296264 = nimCopy(null, nimCharToStr(chckRange(subInt(addInt(Temporary1, v_1107296262), 10), 0, 255)), NTI33554439); + } + + + return result_1107296264; + +} + +function formatInt_922747084(n_922747086, radix_922747087, spec_922747088) { + var Temporary1; + var Temporary8; + + var result_922747089 = []; + + var n_922747092 = n_922747086; + var negative_922747093 = (n_922747092 < 0); + if (negative_922747093) { + Temporary1 = ((~(n_922747092) + 1) ); + } + else { + Temporary1 = n_922747092; + } + + var v_922747094 = Temporary1; + var xx_922747095 = []; + if (spec_922747088.alternateForm) { + switch (spec_922747088.typ) { + case 88: + xx_922747095 = nimCopy(null, makeNimstrLit("0x"), NTI33554439); + break; + case 120: + xx_922747095 = nimCopy(null, makeNimstrLit("0x"), NTI33554439); + break; + case 98: + xx_922747095 = nimCopy(null, makeNimstrLit("0b"), NTI33554439); + break; + case 111: + xx_922747095 = nimCopy(null, makeNimstrLit("0o"), NTI33554439); + break; + default: + break; + } + } + + if ((v_922747094 == 0)) { + result_922747089 = nimCopy(null, makeNimstrLit("0"), NTI33554439); + } + else { + result_922747089 = nimCopy(null, [], NTI33554439); + Label2: do { + Label3: while (true) { + if (!(0 < v_922747094)) break Label3; + var d_922747096 = (v_922747094 % radix_922747087); + v_922747094 = Math.trunc(((v_922747094 / radix_922747087) )); + result_922747089.push.apply(result_922747089, mkDigit_1107296261(chckRange(d_922747096, -2147483648, 2147483647), spec_922747088.typ));; + } + } while (false); + Label4: do { + var idx_922747101 = 0; + var colontmp__1275069309 = 0; + colontmp__1275069309 = divInt((result_922747089).length, 2); + var i_1275069310 = 0; + Label5: do { + Label6: while (true) { + if (!(i_1275069310 < colontmp__1275069309)) break Label6; + idx_922747101 = i_1275069310; + var Temporary7 = result_922747089[chckIndx(idx_922747101, 0, (result_922747089).length - 1)]; result_922747089[chckIndx(idx_922747101, 0, (result_922747089).length - 1)] = result_922747089[chckIndx(subInt(subInt((result_922747089).length, idx_922747101), 1), 0, (result_922747089).length - 1)]; result_922747089[chckIndx(subInt(subInt((result_922747089).length, idx_922747101), 1), 0, (result_922747089).length - 1)] = Temporary7; i_1275069310 = addInt(i_1275069310, 1); + } + } while (false); + } while (false); + } + + if (spec_922747088.padWithZero) { + if (negative_922747093) Temporary8 = true; else { Temporary8 = !((spec_922747088.sign == 45)); } var sign_922747106 = Temporary8; + var toFill_922747110 = subInt(subInt(subInt(spec_922747088.minimumWidth, (result_922747089).length), (xx_922747095).length), (sign_922747106 ? 1 : 0)); + if ((0 < toFill_922747110)) { + result_922747089 = nimCopy(null, (nsuRepeatChar(48, chckRange(toFill_922747110, 0, 2147483647)) || []).concat(result_922747089 || []), NTI33554439); + } + + } + + if (negative_922747093) { + result_922747089 = nimCopy(null, (makeNimstrLit("-") || []).concat(xx_922747095 || [],result_922747089 || []), NTI33554439); + } + else { + if (!((spec_922747088.sign == 45))) { + result_922747089 = nimCopy(null, [spec_922747088.sign].concat(xx_922747095 || [],result_922747089 || []), NTI33554439); + } + else { + result_922747089 = nimCopy(null, (xx_922747095 || []).concat(result_922747089 || []), NTI33554439); + } + } + if ((spec_922747088.align == 60)) { + Label9: do { + var i_922747115 = 0; + var colontmp__1275069313 = 0; + colontmp__1275069313 = (result_922747089).length; + var i_1275069314 = colontmp__1275069313; + Label10: do { + Label11: while (true) { + if (!(i_1275069314 < spec_922747088.minimumWidth)) break Label11; + i_922747115 = i_1275069314; + addChar(result_922747089, spec_922747088.fill);; + i_1275069314 = addInt(i_1275069314, 1); + } + } while (false); + } while (false); + } + else { + var toFill_922747116 = subInt(spec_922747088.minimumWidth, (result_922747089).length); + if ((spec_922747088.align == 94)) { + var half_922747117 = divInt(toFill_922747116, 2); + result_922747089 = nimCopy(null, (nsuRepeatChar(spec_922747088.fill, chckRange(half_922747117, 0, 2147483647)) || []).concat(result_922747089 || [],nsuRepeatChar(spec_922747088.fill, chckRange(subInt(toFill_922747116, half_922747117), 0, 2147483647)) || []), NTI33554439); + } + else { + if ((0 < toFill_922747116)) { + result_922747089 = nimCopy(null, (nsuRepeatChar(spec_922747088.fill, chckRange(toFill_922747116, 0, 2147483647)) || []).concat(result_922747089 || []), NTI33554439); + } + + } + + } + + + return result_922747089; + +} + +function formatValue_922747076(result_922747078, result_922747078_Idx, value_922747079, specifier_922747080) { + BeforeRet: do { + if (((specifier_922747080).length == 0)) { + result_922747078[result_922747078_Idx].push.apply(result_922747078[result_922747078_Idx], HEX24_335544323(value_922747079));; + break BeforeRet; + } + + var spec_922747081 = parseStandardFormatSpecifier_1107296314(specifier_922747080, 0, false); + var radix_922747082 = 10; + switch (spec_922747081.typ) { + case 120: + case 88: + radix_922747082 = 16; + break; + case 100: + case 0: + break; + case 98: + radix_922747082 = 2; + break; + case 111: + radix_922747082 = 8; + break; + default: + raiseException({message: (makeNimstrLit("invalid type in format string for number, expected one of \'x\', \'X\', \'b\', \'d\', \'o\' but got: ") || []).concat([spec_922747081.typ]), parent: null, m_type: NTI33555125, name: null, trace: [], up: null}, "ValueError"); + break; + } + result_922747078[result_922747078_Idx].push.apply(result_922747078[result_922747078_Idx], formatInt_922747084(value_922747079, radix_922747082, spec_922747081));; + } while (false); + + +} + +function HEX24_1442841005(x_1442841006) { + var result_1442841007 = []; + + var fmtRes_1442841008 = [mnewString(0)]; + fmtRes_1442841008[0].push.apply(fmtRes_1442841008[0], makeNimstrLit("ParserState(\x0A stream: \""));; + formatValue_1107296418(fmtRes_1442841008, 0, x_1442841006.stream, []); + fmtRes_1442841008[0].push.apply(fmtRes_1442841008[0], makeNimstrLit("\",\x0A position: "));; + formatValue_922747076(fmtRes_1442841008, 0, x_1442841006.position, []); + fmtRes_1442841008[0].push.apply(fmtRes_1442841008[0], makeNimstrLit(",\x0A lastPosition: "));; + formatValue_922747076(fmtRes_1442841008, 0, x_1442841006.lastPosition, []); + fmtRes_1442841008[0].push.apply(fmtRes_1442841008[0], makeNimstrLit(",\x0A)"));; + result_1442841007 = nimCopy(null, fmtRes_1442841008[0], NTI33554439); + + return result_1442841007; + +} + +function tokenStringValue_1442840754(x_1442840755) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1442840756 = []; + + switch (x_1442840755.kind) { + case 0: + var Temporary2 = x_1442840755; + if (ConstSet18[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'charValue\' is not accessible for type \'ParserToken\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1442840582)); } + Temporary1 = nimCharToStr(Temporary2.charValue); + break; + case 1: + var Temporary3 = x_1442840755; + if (ConstSet19[Temporary3.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'stringValue\' is not accessible for type \'ParserToken\' using \'kind = "), reprDiscriminant(Temporary3.kind, NTI1442840582)); } + Temporary1 = Temporary3.stringValue; + break; + } + result_1442840756 = nimCopy(null, Temporary1, NTI33554439); + + return result_1442840756; + +} + +function HEX24_1442841001(x_1442841002) { + var result_1442841003 = []; + + var fmtRes_1442841004 = [mnewString(0)]; + fmtRes_1442841004[0].push.apply(fmtRes_1442841004[0], makeNimstrLit("ParserToken(\x0A value: "));; + formatValue_1107296418(fmtRes_1442841004, 0, tokenStringValue_1442840754(x_1442841002), []); + fmtRes_1442841004[0].push.apply(fmtRes_1442841004[0], makeNimstrLit(",\x0A)"));; + result_1442841003 = nimCopy(null, fmtRes_1442841004[0], NTI33554439); + + return result_1442841003; + +} + +function addQuoted_1442841048(s_1442841050, s_1442841050_Idx, x_1442841051) { + s_1442841050[s_1442841050_Idx].push.apply(s_1442841050[s_1442841050_Idx], HEX24_1442841001(x_1442841051));; + + +} + +function collectionToString_1442841027(x_1442841029, prefix_1442841030, separator_1442841031, suffix_1442841032) { + var result_1442841033 = [[]]; + + result_1442841033[0] = nimCopy(null, prefix_1442841030, NTI33554439); + var firstElement_1442841034 = true; + Label1: do { + var value_1442841038 = null; + var value_1442841038_Idx = 0; + var i_1275069318 = 0; + var L_1275069319 = (x_1442841029).length; + Label2: do { + Label3: while (true) { + if (!(i_1275069318 < L_1275069319)) break Label3; + value_1442841038 = x_1442841029; value_1442841038_Idx = i_1275069318; + if (firstElement_1442841034) { + firstElement_1442841034 = false; + } + else { + result_1442841033[0].push.apply(result_1442841033[0], separator_1442841031);; + } + + if ((value_1442841038[value_1442841038_Idx] == null)) { + result_1442841033[0].push.apply(result_1442841033[0], makeNimstrLit("nil"));; + } + else { + addQuoted_1442841048(result_1442841033, 0, value_1442841038[value_1442841038_Idx]); + } + + i_1275069318 += 1; + if (!(((x_1442841029).length == L_1275069319))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1442841033[0].push.apply(result_1442841033[0], suffix_1442841032);; + + return result_1442841033[0]; + +} + +function HEX24_1442841023(x_1442841025) { + var result_1442841026 = []; + + result_1442841026 = nimCopy(null, collectionToString_1442841027(x_1442841025, makeNimstrLit("@["), makeNimstrLit(", "), makeNimstrLit("]")), NTI33554439); + + return result_1442841026; + +} + +function HEX24_1442841019(x_1442841020) { + var result_1442841021 = []; + + var fmtRes_1442841022 = [mnewString(0)]; + fmtRes_1442841022[0].push.apply(fmtRes_1442841022[0], makeNimstrLit("Parser(\x0A state: "));; + formatValue_1107296418(fmtRes_1442841022, 0, indentAfterNewline_1459617890(HEX24_1442841005(x_1442841020.state), 2), []); + fmtRes_1442841022[0].push.apply(fmtRes_1442841022[0], makeNimstrLit(",\x0A tokens: "));; + formatValue_1107296418(fmtRes_1442841022, 0, indentAfterNewline_1459617890(HEX24_1442841023(x_1442841020.tokens), 2), []); + fmtRes_1442841022[0].push.apply(fmtRes_1442841022[0], makeNimstrLit(",\x0A)"));; + result_1442841021 = nimCopy(null, fmtRes_1442841022[0], NTI33554439); + + return result_1442841021; + +} + +function raiseResultDefect_1275069006(m_1275069008, v_1275069009) { + raiseException({message: (m_1275069008 || []).concat(makeNimstrLit(": ") || [],HEX24_1442841019(v_1275069009) || []), m_type: NTI1224736772, parent: null, name: null, trace: [], up: null}, "ResultDefect"); + + +} + +function error_1275069001(self_1275069004) { + var Temporary1; + var Temporary2; + + var result_1275069005 = null; + + if (self_1275069004.o) { + var Temporary1 = self_1275069004; + if (ConstSet20[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + raiseResultDefect_1275069006(makeNimstrLit("Trying to access error when value is set"), Temporary1.v); + } + + var Temporary2 = self_1275069004; + if (ConstSet21[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_1275069005 = Temporary2.e; + + return result_1275069005; + +} + +function addQuoted_922747567(s_922747569, s_922747569_Idx, x_922747570) { + s_922747569[s_922747569_Idx].push.apply(s_922747569[s_922747569_Idx], makeNimstrLit("\""));; + Label1: do { + var c_922747571 = 0; + var i_1275069326 = 0; + var L_1275069327 = (x_922747570).length; + Label2: do { + Label3: while (true) { + if (!(i_1275069326 < L_1275069327)) break Label3; + c_922747571 = x_922747570[chckIndx(i_1275069326, 0, (x_922747570).length - 1)]; + if ((c_922747571 <= 127)) { + addEscapedChar_33557861(s_922747569, s_922747569_Idx, c_922747571); + } + else { + addChar(s_922747569[s_922747569_Idx], c_922747571);; + } + + i_1275069326 = addInt(i_1275069326, 1); + if (!(((x_922747570).length == L_1275069327))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:258:11 `len(a) == L` the length of the string changed while iterating over it")); + } + + } + } while (false); + } while (false); + s_922747569[s_922747569_Idx].push.apply(s_922747569[s_922747569_Idx], makeNimstrLit("\""));; + + +} + +function collectionToString_1275069053(x_1275069055, prefix_1275069056, separator_1275069057, suffix_1275069058) { + var result_1275069059 = [[]]; + + result_1275069059[0] = nimCopy(null, prefix_1275069056, NTI33554439); + var firstElement_1275069060 = true; + Label1: do { + var value_1275069064 = null; + var value_1275069064_Idx = 0; + var i_1275069322 = 0; + var L_1275069323 = (x_1275069055).length; + Label2: do { + Label3: while (true) { + if (!(i_1275069322 < L_1275069323)) break Label3; + value_1275069064 = x_1275069055; value_1275069064_Idx = i_1275069322; + if (firstElement_1275069060) { + firstElement_1275069060 = false; + } + else { + result_1275069059[0].push.apply(result_1275069059[0], separator_1275069057);; + } + + addQuoted_922747567(result_1275069059, 0, value_1275069064[value_1275069064_Idx]); + i_1275069322 += 1; + if (!(((x_1275069055).length == L_1275069323))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1275069059[0].push.apply(result_1275069059[0], suffix_1275069058);; + + return result_1275069059[0]; + +} + +function HEX24_1275069049(x_1275069051) { + var result_1275069052 = []; + + result_1275069052 = nimCopy(null, collectionToString_1275069053(x_1275069051, makeNimstrLit("@["), makeNimstrLit(", "), makeNimstrLit("]")), NTI33554439); + + return result_1275069052; + +} + +function formatValue_1275069044(result_1275069046, result_1275069046_Idx, value_1275069047, specifier_1275069048) { + formatValue_1107296418(result_1275069046, result_1275069046_Idx, HEX24_1275069049(value_1275069047), specifier_1275069048); + + +} + +function choice_1275068886(parsers_1275068889) { + parsers_1275068889 = nimCopy(null, parsers_1275068889, NTI1275068771); + +function HEX3Aanonymous_1275068893(parser_1275068894) { + +function HEX3Aanonymous_1275068993() { + +function HEX3Aanonymous_1275068995(x_1275068996) { + var result_1275068997 = []; + + result_1275068997 = nimCopy(null, error_1275069001(x_1275068996).expected, NTI33554439); + + return result_1275068997; + + } + + var result_1275068994 = ({o: false, e: null, v: null}); + + var prettyErrors_1275069035 = map_1275069012(errors_1275068917, HEX3Aanonymous_1275068995); + var fmtRes_1275069043 = [mnewString(0)]; + fmtRes_1275069043[0].push.apply(fmtRes_1275069043[0], makeNimstrLit("Choice ("));; + formatValue_1275069044(fmtRes_1275069043, 0, prettyErrors_1275069035, []); + fmtRes_1275069043[0].push.apply(fmtRes_1275069043[0], makeNimstrLit(")"));; + result_1275068994 = nimCopy(result_1275068994, {o: false, e: {kind: 0, index: addInt(parser_1275068894.state.position, 1), expected: nimCopy(null, fmtRes_1275069043[0], NTI33554439), unexpected: nimCopy(null, error_1275069001(errors_1275068917[chckIndx(0, 0, (errors_1275068917).length - 1)]).unexpected, NTI33554439), parser: parser_1275068894}, v: null}, NTI1442840603); + + return result_1275068994; + + } + +function HEX3Aanonymous_1275069103(x_1275069104) { + var result_1275069105 = ({o: false, e: null, v: null}); + + result_1275069105 = nimCopy(result_1275069105, x_1275069104, NTI1442840603); + + return result_1275069105; + + } + + var result_1275068895 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var errors_1275068917 = newSeq_1275068900(0); + var found_1275068933 = Nothing_1275068918(); + Label1: do { + var fn_1275068955 = null; + var fn_1275068955_Idx = 0; + var i_1275069279 = 0; + var L_1275069280 = (parsers_1275068889).length; + Label2: do { + Label3: while (true) { + if (!(i_1275069279 < L_1275069280)) break Label3; + fn_1275068955 = parsers_1275068889; fn_1275068955_Idx = chckIndx(i_1275069279, 0, (parsers_1275068889).length - 1); + var fnResult_1275068956 = fn_1275068955[fn_1275068955_Idx](parser_1275068894); + if (fnResult_1275068956.o) { + found_1275068933 = just_1275068958(fnResult_1275068956); + break Label1; + } + else { + errors_1275068917 = nimCopy(null, HEX26_1275068967(errors_1275068917, fnResult_1275068956), NTI1275068835); + } + + i_1275069279 = addInt(i_1275069279, 1); + if (!(((parsers_1275068889).length == L_1275069280))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1275068895 = nimCopy(result_1275068895, fold_1275069107(found_1275068933, HEX3Aanonymous_1275068993, HEX3Aanonymous_1275069103), NTI1442840603); + break BeforeRet; + } while (false); + + return result_1275068895; + + } + + var result_1275068892 = null; + + BeforeRet: do { + result_1275068892 = HEX3Aanonymous_1275068893; + break BeforeRet; + } while (false); + + return result_1275068892; + +} + +function endOfStream_1275069241(parser_1275069242) { + var Temporary1; + + var result_1275069243 = ({o: false, e: null, v: null}); + + var index_1275069244 = addInt(parser_1275069242.state.position, 1); + if ((index_1275069244 == (parser_1275069242.state.stream).length)) { + Temporary1 = {o: true, v: parser_1275069242, e: null}; + } + else { + var fmtRes_1275069249 = mnewString(0); + fmtRes_1275069249.push.apply(fmtRes_1275069249, makeNimstrLit("EndOfString"));; + Temporary1 = {o: false, e: {kind: 2, expected: nimCopy(null, fmtRes_1275069249, NTI33554439), index: index_1275069244, parser: parser_1275069242, unexpected: []}, v: null}; + } + + result_1275069243 = nimCopy(result_1275069243, Temporary1, NTI1442840603); + + return result_1275069243; + +} +var newlineParser_1275069258 = choice_1275068886([ch_1275068428(ConstSet22), endOfStream_1275069241]); +var whitespaceParser_1275069392 = choice_1275068886([ch_1275068428(ConstSet23), newlineParser_1275069258]); + +function flatMap_1275068576(self_1275068580, f_1275068582) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1275068583 = ({o: false, e: null, v: null}); + + if (self_1275068580.o) { + var Temporary2 = self_1275068580; + if (ConstSet24[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = f_1275068582(Temporary2.v); + } + else { + var Temporary3 = self_1275068580; + if (ConstSet25[Temporary3.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary3.o, NTI33554466)); } + Temporary1 = {o: false, e: Temporary3.e, v: null}; + } + + result_1275068583 = nimCopy(result_1275068583, Temporary1, NTI1442840603); + + return result_1275068583; + +} + +function HEX2B_1275069169(parserFnA_1275069172, parserFnB_1275069175) { + +function HEX3Aanonymous_1275069179(parser_1275069180) { + var result_1275069181 = ({o: false, e: null, v: null}); + + result_1275069181 = nimCopy(result_1275069181, flatMap_1275068576(parserFnA_1275069172(parser_1275069180), parserFnB_1275069175), NTI1442840603); + + return result_1275069181; + + } + + var result_1275069178 = null; + + BeforeRet: do { + result_1275069178 = HEX3Aanonymous_1275069179; + break BeforeRet; + } while (false); + + return result_1275069178; + +} + +function map_1275068657(self_1275068661, f_1275068663) { + var Temporary1; + var Temporary2; + + var result_1275068664 = ({o: false, e: null, v: null}); + + if (self_1275068661.o) { + var Temporary1 = self_1275068661; + if (ConstSet26[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + result_1275068664 = nimCopy(result_1275068664, {o: true, v: f_1275068663(Temporary1.v), e: null}, NTI1442840603); + } + else { + var Temporary2 = self_1275068661; + if (ConstSet27[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_1275068664 = nimCopy(result_1275068664, {o: false, e: Temporary2.e, v: null}, NTI1442840603); + } + + + return result_1275068664; + +} + +function ignore_1275068608(parserFn_1275068611) { + +function HEX3Aanonymous_1275068615(parser_1275068616) { + +function HEX3Aanonymous_1275068632(x_1275068633) { + var result_1275068634 = null; + + result_1275068634 = {state: x_1275068633.state, tokens: nimCopy(null, parser_1275068616.tokens, NTI1442840594)}; + + return result_1275068634; + + } + + var result_1275068617 = ({o: false, e: null, v: null}); + + BeforeRet: do { + result_1275068617 = nimCopy(result_1275068617, map_1275068657(parserFn_1275068611(parser_1275068616), HEX3Aanonymous_1275068632), NTI1442840603); + break BeforeRet; + } while (false); + + return result_1275068617; + + } + + var result_1275068614 = null; + + BeforeRet: do { + result_1275068614 = HEX3Aanonymous_1275068615; + break BeforeRet; + } while (false); + + return result_1275068614; + +} + +function manyUntil_1275068815(acceptFn_1275068818, stopFn_1275068821) { + +function HEX3Aanonymous_1275068825(parser_1275068826) { + var result_1275068827 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var res_1275068832 = nimCopy(null, {o: true, v: parser_1275068826, e: null}, NTI1442840603); + Label1: do { + Label2: while (true) { + if (!(res_1275068832.o && !(flatMap_1275068576(res_1275068832, stopFn_1275068821).o))) break Label2; + res_1275068832 = nimCopy(res_1275068832, flatMap_1275068576(res_1275068832, acceptFn_1275068818), NTI1442840603); + } + } while (false); + result_1275068827 = nimCopy(result_1275068827, res_1275068832, NTI1442840603); + break BeforeRet; + } while (false); + + return result_1275068827; + + } + + var result_1275068824 = null; + + BeforeRet: do { + result_1275068824 = HEX3Aanonymous_1275068825; + break BeforeRet; + } while (false); + + return result_1275068824; + +} + +function anyUntil_1275068879(stopFn_1275068882) { + var result_1275068885 = null; + + result_1275068885 = manyUntil_1275068815(anyCh_1275068520, stopFn_1275068882); + + return result_1275068885; + +} + +function mapErr_1275069352(self_1275069356, f_1275069358) { + var Temporary1; + var Temporary2; + + var result_1275069359 = ({o: false, e: null, v: null}); + + if (self_1275069356.o) { + var Temporary1 = self_1275069356; + if (ConstSet28[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + result_1275069359 = nimCopy(result_1275069359, {o: true, v: Temporary1.v, e: null}, NTI1442840603); + } + else { + var Temporary2 = self_1275069356; + if (ConstSet29[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_1275069359 = nimCopy(result_1275069359, {o: false, e: f_1275069358(Temporary2.e), v: null}, NTI1442840603); + } + + + return result_1275069359; + +} + +function setErrorExpectedField_1442840845(err_1442840846, expected_1442840847) { + var result_1442840848 = null; + + result_1442840848 = {kind: err_1442840846.kind, unexpected: nimCopy(null, err_1442840846.unexpected, NTI33554439), expected: nimCopy(null, expected_1442840847, NTI33554439), index: err_1442840846.index, parser: err_1442840846.parser}; + + return result_1442840848; + +} + +function whitespace_1275069393(parser_1275069394) { + +function HEX3Aanonymous_1275069399(x_1275069400) { + var result_1275069401 = null; + + result_1275069401 = setErrorExpectedField_1442840845(x_1275069400, makeNimstrLit("Whitespace")); + + return result_1275069401; + + } + + var result_1275069395 = ({o: false, e: null, v: null}); + + result_1275069395 = nimCopy(result_1275069395, mapErr_1275069352(whitespaceParser_1275069392(parser_1275069394), HEX3Aanonymous_1275069399), NTI1442840603); + + return result_1275069395; + +} + +function HEX3Aanonymous_1275069423(start_1275069426, stop_1275069429) { + var result_1275069432 = null; + + result_1275069432 = HEX2B_1275069169(HEX2B_1275069169(ignore_1275068608(start_1275069426), anyUntil_1275068879(HEX2B_1275069169(stop_1275069429, whitespace_1275069393))), ignore_1275068608(start_1275069426)); + + return result_1275069432; + +} + +function HEX3Aanonymous_1275069439(delimiterParser_1275069442) { + var result_1275069445 = null; + + result_1275069445 = parseBetweenDelimiter_1275069438(delimiterParser_1275069442, delimiterParser_1275069442); + + return result_1275069445; + +} +var parseBetweenDelimiter_1275069438 = HEX3Aanonymous_1275069423; +var parseBetweenPair_1275069446 = HEX3Aanonymous_1275069439; + +function ch_1275068490(expectedChar_1275068491) { + +function HEX3Aanonymous_1275068495(parser_1275068496) { + var result_1275068497 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var state_1275068498 = parser_1275068496.state; + var newIndex_1275068499 = addInt(state_1275068498.position, 1); + if ((subInt((state_1275068498.stream).length, 1) < newIndex_1275068499)) { + var fmtRes_1275068500 = mnewString(0); + addChar(fmtRes_1275068500, expectedChar_1275068491);; + result_1275068497 = nimCopy(result_1275068497, {o: false, e: {kind: 2, expected: nimCopy(null, fmtRes_1275068500, NTI33554439), index: newIndex_1275068499, parser: parser_1275068496, unexpected: []}, v: null}, NTI1442840603); + break BeforeRet; + } + else { + var foundChar_1275068505 = state_1275068498.stream[chckIndx(newIndex_1275068499, 0, (state_1275068498.stream).length - 1)]; + if ((expectedChar_1275068491 == foundChar_1275068505)) { + result_1275068497 = nimCopy(result_1275068497, {o: true, v: {state: {stream: nimCopy(null, state_1275068498.stream, NTI33554439), position: newIndex_1275068499, lastPosition: parser_1275068496.state.position}, tokens: HEX26_1275068448(parser_1275068496.tokens, initParserToken_1442840634(foundChar_1275068505))}, e: null}, NTI1442840603); + break BeforeRet; + } + else { + var fmtRes_1275068514 = mnewString(0); + addChar(fmtRes_1275068514, foundChar_1275068505);; + var fmtRes_1275068515 = mnewString(0); + addChar(fmtRes_1275068515, expectedChar_1275068491);; + result_1275068497 = nimCopy(result_1275068497, {o: false, e: {kind: 1, unexpected: nimCopy(null, fmtRes_1275068514, NTI33554439), expected: nimCopy(null, fmtRes_1275068515, NTI33554439), index: newIndex_1275068499, parser: parser_1275068496}, v: null}, NTI1442840603); + break BeforeRet; + } + + } + + } while (false); + + return result_1275068497; + + } + + var result_1275068494 = null; + + BeforeRet: do { + result_1275068494 = HEX3Aanonymous_1275068495; + break BeforeRet; + } while (false); + + return result_1275068494; + +} + +function str_1275068547(s_1275068548) { + s_1275068548 = nimCopy(null, s_1275068548, NTI33554439); + +function HEX3Aanonymous_1275068552(parser_1275068553) { + var result_1275068554 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var p_1275068559 = nimCopy(null, {o: true, v: parser_1275068553, e: null}, NTI1442840603); + Label1: do { + var c_1275068560 = 0; + var i_1543504239 = 0; + var L_1543504240 = (s_1275068548).length; + Label2: do { + Label3: while (true) { + if (!(i_1543504239 < L_1543504240)) break Label3; + c_1275068560 = s_1275068548[chckIndx(i_1543504239, 0, (s_1275068548).length - 1)]; + p_1275068559 = nimCopy(p_1275068559, flatMap_1275068576(p_1275068559, ch_1275068490(c_1275068560)), NTI1442840603); + i_1543504239 = addInt(i_1543504239, 1); + if (!(((s_1275068548).length == L_1543504240))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:258:11 `len(a) == L` the length of the string changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1275068554 = nimCopy(result_1275068554, p_1275068559, NTI1442840603); + break BeforeRet; + } while (false); + + return result_1275068554; + + } + + var result_1275068551 = null; + + BeforeRet: do { + result_1275068551 = HEX3Aanonymous_1275068552; + break BeforeRet; + } while (false); + + return result_1275068551; + +} + +function newline_1275069329(parser_1275069330) { + +function HEX3Aanonymous_1275069335(x_1275069336) { + var result_1275069337 = null; + + result_1275069337 = setErrorExpectedField_1442840845(x_1275069336, makeNimstrLit("Newline")); + + return result_1275069337; + + } + + var result_1275069331 = ({o: false, e: null, v: null}); + + result_1275069331 = nimCopy(result_1275069331, mapErr_1275069352(newlineParser_1275069258(parser_1275069330), HEX3Aanonymous_1275069335), NTI1442840603); + + return result_1275069331; + +} + +function optional_1275068592(parserFn_1275068595) { + +function HEX3Aanonymous_1275068599(parser_1275068600) { + var Temporary1; + + var result_1275068601 = ({o: false, e: null, v: null}); + + var newParser_1275068602 = parserFn_1275068595(parser_1275068600); + if (newParser_1275068602.o) { + Temporary1 = newParser_1275068602; + } + else { + Temporary1 = {o: true, v: parser_1275068600, e: null}; + } + + result_1275068601 = nimCopy(result_1275068601, Temporary1, NTI1442840603); + + return result_1275068601; + + } + + var result_1275068598 = null; + + BeforeRet: do { + result_1275068598 = HEX3Aanonymous_1275068599; + break BeforeRet; + } while (false); + + return result_1275068598; + +} + +function newSeq_1442840677(len_1442840679) { + var result_1442840680 = []; + + result_1442840680 = new Array(len_1442840679); for (var i = 0 ; i < len_1442840679 ; ++i) { result_1442840680[i] = null; } + return result_1442840680; + +} + +function emptyTokens_1442840824(parser_1442840825) { + var result_1442840826 = null; + + result_1442840826 = {state: parser_1442840825.state, tokens: newSeq_1442840677(0)}; + + return result_1442840826; + +} + +function flattenParserTokens_1442840796(parser_1442840797) { + var result_1442840798 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var resultHEX60gensym5_1442840804 = []; + Label1: do { + var xHEX60gensym5_1442840808 = null; + var xHEX60gensym5_1442840808_Idx = 0; + var i_1543504243 = 0; + var L_1543504244 = (parser_1442840797.tokens).length; + Label2: do { + Label3: while (true) { + if (!(i_1543504243 < L_1543504244)) break Label3; + xHEX60gensym5_1442840808 = parser_1442840797.tokens; xHEX60gensym5_1442840808_Idx = chckIndx(i_1543504243, 0, (parser_1442840797.tokens).length - 1); + var a_1442840809 = nimCopy(null, resultHEX60gensym5_1442840804, NTI33554439); + var b_1442840810 = xHEX60gensym5_1442840808[xHEX60gensym5_1442840808_Idx]; + resultHEX60gensym5_1442840804 = nimCopy(null, (a_1442840809 || []).concat(tokenStringValue_1442840754(b_1442840810) || []), NTI33554439); + i_1543504243 = addInt(i_1543504243, 1); + if (!(((parser_1442840797.tokens).length == L_1543504244))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1442840798 = nimCopy(result_1442840798, {o: true, v: {state: parser_1442840797.state, tokens: [{kind: 1, stringValue: nimCopy(null, resultHEX60gensym5_1442840804, NTI33554439), charValue: 0}]}, e: null}, NTI1442840603); + break BeforeRet; + } while (false); + + return result_1442840798; + +} + +function nsuFindCharSet(s_469763590, chars_469763591, start_469763592, last_469763593) { + var Temporary1; + + var result_469763594 = 0; + + BeforeRet: do { + if ((last_469763593 == 0)) { + Temporary1 = (s_469763590).length - 1; + } + else { + Temporary1 = last_469763593; + } + + var last_469763595 = Temporary1; + Label2: do { + var i_469763600 = 0; + var colontmp__1543504248 = 0; + colontmp__1543504248 = start_469763592; + var res_1543504249 = colontmp__1543504248; + Label3: do { + Label4: while (true) { + if (!(res_1543504249 <= last_469763595)) break Label4; + i_469763600 = res_1543504249; + if ((chars_469763591[s_469763590[chckIndx(i_469763600, 0, (s_469763590).length - 1)]] != undefined)) { + result_469763594 = i_469763600; + break BeforeRet; + } + + res_1543504249 = addInt(res_1543504249, 1); + } + } while (false); + } while (false); + result_469763594 = -1; + break BeforeRet; + } while (false); + + return result_469763594; + +} + +function HEX24_1459617811(x_1459617813) { + var result_1459617814 = [[]]; + + result_1459617814[0] = nimCopy(null, makeNimstrLit("("), NTI33554439); + var count_1459617820 = 0; + if ((0 < count_1459617820)) { + result_1459617814[0].push.apply(result_1459617814[0], makeNimstrLit(", "));; + } + + count_1459617820 += 1; + addQuoted_469763324(result_1459617814, 0, x_1459617813["Field0"]); + if ((0 < count_1459617820)) { + result_1459617814[0].push.apply(result_1459617814[0], makeNimstrLit(", "));; + } + + count_1459617820 += 1; + addQuoted_469763324(result_1459617814, 0, x_1459617813["Field1"]); + if ((count_1459617820 == 1)) { + result_1459617814[0].push.apply(result_1459617814[0], makeNimstrLit(","));; + } + + result_1459617814[0].push.apply(result_1459617814[0], makeNimstrLit(")"));; + + return result_1459617814[0]; + +} + +function clamp_1459617851(x_1459617853, a_1459617854, b_1459617855) { + var result_1459617856 = 0; + + BeforeRet: do { + if ((x_1459617853 < a_1459617854)) { + result_1459617856 = a_1459617854; + break BeforeRet; + } + + if ((b_1459617855 < x_1459617853)) { + result_1459617856 = b_1459617855; + break BeforeRet; + } + + result_1459617856 = x_1459617853; + break BeforeRet; + } while (false); + + return result_1459617856; + +} + +function clamp_1459617806(val_1459617808, bounds_1459617809) { + var result_1459617810 = 0; + + if (!((bounds_1459617809.a <= bounds_1459617809.b))) { + failedAssertImpl_218103864((makeNimstrLit("math.nim:1255:10 `bounds.a <= bounds.b` ") || []).concat(HEX24_1459617811({Field0: bounds_1459617809.a, Field1: bounds_1459617809.b}) || [])); + } + + result_1459617810 = clamp_1459617851(val_1459617808, bounds_1459617809.a, bounds_1459617809.b); + + return result_1459617810; + +} + +function safeDelete_1459617796(str_1459617797, slice_1459617799) { + var Temporary1; + + var result_1459617800 = []; + + if ((subInt((str_1459617797).length, 1) < slice_1459617799.a)) { + Temporary1 = str_1459617797; + } + else { + var fromIndex_1459617857 = clamp_1459617806(slice_1459617799.a, HEX2EHEX2E_721421139(0, (str_1459617797).length)); + var toIndex_1459617867 = clamp_1459617806(slice_1459617799.b, HEX2EHEX2E_721421139(0, subInt((str_1459617797).length, 1))); + var strDup_1459617868 = [nimCopy(null, str_1459617797, NTI33554439)]; + delete_469763271(strDup_1459617868, 0, HEX2EHEX2E_721421139(fromIndex_1459617857, toIndex_1459617867)); + Temporary1 = strDup_1459617868[0]; + } + + result_1459617800 = nimCopy(null, Temporary1, NTI33554439); + + return result_1459617800; + +} + +function findAndDelete_1459617874(str_1459617875, chars_1459617876, start_1459617877, last_1459617878) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1459617879 = []; + + if (!(0 <= start_1459617877)) Temporary2 = false; else { Temporary2 = (0 <= last_1459617878); } if (Temporary2) { + var startChar_1459617880 = nsuFindCharSet(str_1459617875, chars_1459617876, chckRange(start_1459617877, 0, 2147483647), last_1459617878); + if ((startChar_1459617880 == -1)) { + Temporary3 = str_1459617875; + } + else { + Temporary3 = safeDelete_1459617796(str_1459617875, HEX2EHEX2E_721421139(startChar_1459617880, last_1459617878)); + } + + Temporary1 = Temporary3; + } + else { + Temporary1 = str_1459617875; + } + + result_1459617879 = nimCopy(null, Temporary1, NTI33554439); + + return result_1459617879; + +} + +function deleteAfterNewline_1459617886(str_1459617887, start_1459617888) { + var result_1459617889 = []; + + result_1459617889 = nimCopy(null, findAndDelete_1459617874(str_1459617887, ConstSet30, start_1459617888, subInt((str_1459617887).length, 1)), NTI33554439); + + return result_1459617889; + +} + +function nsuRepeatStr(s_469763076, n_469763077) { + var result_469763078 = []; + + result_469763078 = nimCopy(null, mnewString(0), NTI33554439); + Label1: do { + var i_469763083 = 0; + var colontmp__1543504252 = 0; + colontmp__1543504252 = n_469763077; + var res_1543504253 = 1; + Label2: do { + Label3: while (true) { + if (!(res_1543504253 <= colontmp__1543504252)) break Label3; + i_469763083 = res_1543504253; + result_469763078.push.apply(result_469763078, s_469763076);; + res_1543504253 = addInt(res_1543504253, 1); + } + } while (false); + } while (false); + + return result_469763078; + +} + +function HEX24_1442841054(x_1442841055) { + var Temporary2; + var Temporary3; + var Temporary4; + var Temporary5; + var Temporary6; + var Temporary7; + var Temporary8; + var Temporary9; + var Temporary10; + var Temporary11; + var Temporary12; + + var result_1442841056 = []; + + Label1: do { + var expr_1442841057 = x_1442841055; + var pos_1442841160 = 0; + var _ = pos_1442841160; + var expected_1442841164 = []; + var parser_1442841166 = null; + var unexpected_1442841168 = []; + var index_1442841170 = 0; + if (!(expr_1442841057.kind == 1)) Temporary6 = false; else { expected_1442841164 = nimCopy(null, expr_1442841057.expected, NTI33554439); + Temporary6 = true; } if (!Temporary6) Temporary5 = false; else { parser_1442841166 = expr_1442841057.parser; + Temporary5 = true; } if (!Temporary5) Temporary4 = false; else { index_1442841170 = expr_1442841057.index; + Temporary4 = true; } if (!Temporary4) Temporary3 = false; else { unexpected_1442841168 = nimCopy(null, expr_1442841057.unexpected, NTI33554439); + Temporary3 = true; } if (Temporary3) { + var original_1442841215 = deleteAfterNewline_1459617886(parser_1442841166.state.stream, parser_1442841166.state.position); + var errSpace_1442841216 = nsuRepeatStr(makeNimstrLit(" "), chckRange(nimMax(0, index_1442841170), 0, 2147483647)); + var fmtRes_1442841217 = [mnewString(0)]; + fmtRes_1442841217[0].push.apply(fmtRes_1442841217[0], makeNimstrLit("Parsing Error (Character Mismatch Error):\x0A"));; + formatValue_1107296418(fmtRes_1442841217, 0, original_1442841215, []); + fmtRes_1442841217[0].push.apply(fmtRes_1442841217[0], makeNimstrLit("\x0A"));; + formatValue_1107296418(fmtRes_1442841217, 0, errSpace_1442841216, []); + fmtRes_1442841217[0].push.apply(fmtRes_1442841217[0], makeNimstrLit("^ Expected \'"));; + formatValue_1107296418(fmtRes_1442841217, 0, expected_1442841164, []); + fmtRes_1442841217[0].push.apply(fmtRes_1442841217[0], makeNimstrLit("\' but got \'"));; + formatValue_1107296418(fmtRes_1442841217, 0, unexpected_1442841168, []); + fmtRes_1442841217[0].push.apply(fmtRes_1442841217[0], makeNimstrLit("\'"));; + Temporary2 = fmtRes_1442841217[0]; + } + else { + var expected_1442841219 = []; + var parser_1442841221 = null; + var unexpected_1442841223 = []; + var index_1442841225 = 0; + if (!(expr_1442841057.kind == 0)) Temporary10 = false; else { expected_1442841219 = nimCopy(null, expr_1442841057.expected, NTI33554439); + Temporary10 = true; } if (!Temporary10) Temporary9 = false; else { parser_1442841221 = expr_1442841057.parser; + Temporary9 = true; } if (!Temporary9) Temporary8 = false; else { index_1442841225 = expr_1442841057.index; + Temporary8 = true; } if (!Temporary8) Temporary7 = false; else { unexpected_1442841223 = nimCopy(null, expr_1442841057.unexpected, NTI33554439); + Temporary7 = true; } if (Temporary7) { + var original_1442841230 = deleteAfterNewline_1459617886(parser_1442841221.state.stream, parser_1442841221.state.position); + var errSpace_1442841231 = nsuRepeatStr(makeNimstrLit(" "), chckRange(nimMax(0, index_1442841225), 0, 2147483647)); + var fmtRes_1442841232 = [mnewString(0)]; + fmtRes_1442841232[0].push.apply(fmtRes_1442841232[0], makeNimstrLit("Parsing Error (Character Mismatch Error):\x0A"));; + formatValue_1107296418(fmtRes_1442841232, 0, original_1442841230, []); + fmtRes_1442841232[0].push.apply(fmtRes_1442841232[0], makeNimstrLit("\x0A"));; + formatValue_1107296418(fmtRes_1442841232, 0, errSpace_1442841231, []); + fmtRes_1442841232[0].push.apply(fmtRes_1442841232[0], makeNimstrLit("^ Expected \'"));; + formatValue_1107296418(fmtRes_1442841232, 0, expected_1442841219, []); + fmtRes_1442841232[0].push.apply(fmtRes_1442841232[0], makeNimstrLit("\' but got \'"));; + formatValue_1107296418(fmtRes_1442841232, 0, unexpected_1442841223, []); + fmtRes_1442841232[0].push.apply(fmtRes_1442841232[0], makeNimstrLit("\'"));; + Temporary2 = fmtRes_1442841232[0]; + } + else { + var parser_1442841234 = null; + var index_1442841236 = 0; + if (!(expr_1442841057.kind == 2)) Temporary12 = false; else { parser_1442841234 = expr_1442841057.parser; + Temporary12 = true; } if (!Temporary12) Temporary11 = false; else { index_1442841236 = expr_1442841057.index; + Temporary11 = true; } if (Temporary11) { + var original_1442841241 = deleteAfterNewline_1459617886(parser_1442841234.state.stream, parser_1442841234.state.position); + var errSpace_1442841242 = nsuRepeatStr(makeNimstrLit(" "), chckRange(nimMax(0, index_1442841236), 0, 2147483647)); + var fmtRes_1442841243 = [mnewString(0)]; + fmtRes_1442841243[0].push.apply(fmtRes_1442841243[0], makeNimstrLit("Parsing Error (EndOfString Expected):\x0A"));; + formatValue_1107296418(fmtRes_1442841243, 0, original_1442841241, []); + fmtRes_1442841243[0].push.apply(fmtRes_1442841243[0], makeNimstrLit("\x0A"));; + formatValue_1107296418(fmtRes_1442841243, 0, errSpace_1442841242, []); + fmtRes_1442841243[0].push.apply(fmtRes_1442841243[0], makeNimstrLit("^ Expected \'EndOfString\' at "));; + formatValue_922747076(fmtRes_1442841243, 0, index_1442841236, []); + fmtRes_1442841243[0].push.apply(fmtRes_1442841243[0], makeNimstrLit(" but got "));; + formatValue_922747076(fmtRes_1442841243, 0, subInt((original_1442841241).length, 1), []); + Temporary2 = fmtRes_1442841243[0]; + } + else { + Temporary2 = makeNimstrLit("ParseError"); + } + }} + } while (false); + result_1442841056 = nimCopy(null, Temporary2, NTI33554439); + + return result_1442841056; + +} + +function raiseResultDefect_1543504031(m_1543504033, v_1543504034) { + raiseException({message: (m_1543504033 || []).concat(makeNimstrLit(": ") || [],HEX24_1442841054(v_1543504034) || []), m_type: NTI1224736772, parent: null, name: null, trace: [], up: null}, "ResultDefect"); + + +} + +function get_1543504024(self_1543504027) { + var Temporary1; + var Temporary2; + + var result_1543504028 = null; + + if (!(self_1543504027.o)) { + var Temporary1 = self_1543504027; + if (ConstSet31[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + raiseResultDefect_1543504031(makeNimstrLit("Trying to access value with err Result"), Temporary1.e); + } + + var Temporary2 = self_1543504027; + if (ConstSet32[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_1543504028 = Temporary2.v; + + return result_1543504028; + +} + +function HEX26_1543504140(x_1543504142, y_1543504143) { + var result_1543504144 = []; + + result_1543504144 = new Array(chckRange(addInt((x_1543504142).length, (y_1543504143).length), 0, 2147483647)); for (var i = 0 ; i < chckRange(addInt((x_1543504142).length, (y_1543504143).length), 0, 2147483647) ; ++i) { result_1543504144[i] = null; } Label1: do { + var i_1543504162 = 0; + var colontmp__1543504256 = 0; + colontmp__1543504256 = subInt((x_1543504142).length, 1); + var res_1543504257 = 0; + Label2: do { + Label3: while (true) { + if (!(res_1543504257 <= colontmp__1543504256)) break Label3; + i_1543504162 = res_1543504257; + result_1543504144[chckIndx(i_1543504162, 0, (result_1543504144).length - 1)] = x_1543504142[chckIndx(i_1543504162, 0, (x_1543504142).length - 1)]; + res_1543504257 = addInt(res_1543504257, 1); + } + } while (false); + } while (false); + Label4: do { + var i_1543504170 = 0; + var colontmp__1543504260 = 0; + colontmp__1543504260 = subInt((y_1543504143).length, 1); + var res_1543504261 = 0; + Label5: do { + Label6: while (true) { + if (!(res_1543504261 <= colontmp__1543504260)) break Label6; + i_1543504170 = res_1543504261; + result_1543504144[chckIndx(addInt(i_1543504170, (x_1543504142).length), 0, (result_1543504144).length - 1)] = y_1543504143[chckIndx(i_1543504170, 0, (y_1543504143).length - 1)]; + res_1543504261 = addInt(res_1543504261, 1); + } + } while (false); + } while (false); + + return result_1543504144; + +} + +function HEX3Aanonymous_1543503884(parser_1543503885) { + var Temporary2; + var Temporary3; + var Temporary4; + var Temporary5; + + var result_1543503886 = ({o: false, e: null, v: null}); + + var tokens_1543503887 = nimCopy(null, parser_1543503885.tokens, NTI1442840594); + var keyTokenParser_1543503909 = flatMap_1275068576(propertiesKeyParser_1543503882(emptyTokens_1442840824(parser_1543503885)), flattenParserTokens_1442840796); + var valueTokenParser_1543503979 = flatMap_1275068576(flatMap_1275068576(map_1275068657(keyTokenParser_1543503909, emptyTokens_1442840824), propertiesValueParser_1543503883), flattenParserTokens_1442840796); + Label1: do { + var expr_1543503980 = {Field0: nimCopy(null, keyTokenParser_1543503909, NTI1442840603), Field1: nimCopy(null, valueTokenParser_1543503979, NTI1442840603)}; + var pos_1543503998 = 0; + var _ = pos_1543503998; + var key_1543504036 = null; + var value_1543504065 = null; + if (!(expr_1543503980["Field0"].o == true)) Temporary4 = false; else { key_1543504036 = get_1543504024(expr_1543503980["Field0"]); + Temporary4 = true; } if (!Temporary4) Temporary3 = false; else { if (!(expr_1543503980["Field1"].o == true)) Temporary5 = false; else { value_1543504065 = get_1543504024(expr_1543503980["Field1"]); + Temporary5 = true; } Temporary3 = Temporary5; } if (Temporary3) { + Temporary2 = {o: true, v: {state: value_1543504065.state, tokens: HEX26_1543504140(tokens_1543503887, [key_1543504036.tokens[chckIndx(0, 0, (key_1543504036.tokens).length - 1)], value_1543504065.tokens[chckIndx(0, 0, (value_1543504065.tokens).length - 1)]])}, e: null}; + } + else { + Temporary2 = valueTokenParser_1543503979; + } + + } while (false); + result_1543503886 = nimCopy(result_1543503886, Temporary2, NTI1442840603); + + return result_1543503886; + +} +var propertiesKeyParser_1543503882 = HEX2B_1275069169(ignore_1275068608(ch_1275068490(58)), anyUntil_1275068879(choice_1275068886([str_1275068547(makeNimstrLit(": ")), HEX2B_1275069169(str_1275068547(makeNimstrLit(":")), newline_1275069329), newline_1275069329]))); +var propertiesValueParser_1543503883 = HEX2B_1275069169(HEX2B_1275069169(ignore_1275068608(HEX2B_1275069169(str_1275068547(makeNimstrLit(":")), optional_1275068592(ch_1275068490(32)))), optional_1275068592(anyUntil_1275068879(newline_1275069329))), ignore_1275068608(newline_1275069329)); +var propertiesParser_1543504220 = HEX3Aanonymous_1543503884; +var propertiesStartParser_1543504221 = HEX2B_1275069169(str_1275068547(makeNimstrLit(":PROPERTIES:")), newline_1275069329); +var propertiesEndParser_1543504222 = HEX2B_1275069169(str_1275068547(makeNimstrLit(":PROPERTIES_END:")), newline_1275069329); +var parseProperties_1543504227 = [ignore_1275068608(propertiesStartParser_1543504221), manyUntil_1275068815(propertiesParser_1543504220, propertiesEndParser_1543504222), ignore_1275068608(propertiesEndParser_1543504222)]; + +function HEX3Aanonymous_1577058322(parser_1577058323) { + var Temporary2; + var Temporary3; + var Temporary4; + var Temporary5; + + var result_1577058324 = ({o: false, e: null, v: null}); + + var linkUrl_1577058348 = flatMap_1275068576(linkStartParser_1577058320(parser_1577058323), flattenParserTokens_1442840796); + var linkValue_1577058424 = flatMap_1275068576(flatMap_1275068576(map_1275068657(linkUrl_1577058348, emptyTokens_1442840824), linkEndParser_1577058321), flattenParserTokens_1442840796); + Label1: do { + var expr_1577058425 = {Field0: nimCopy(null, linkUrl_1577058348, NTI1442840603), Field1: nimCopy(null, linkValue_1577058424, NTI1442840603)}; + var pos_1577058428 = 0; + var _ = pos_1577058428; + var key_1577058461 = null; + var value_1577058492 = null; + if (!(expr_1577058425["Field0"].o == true)) Temporary4 = false; else { key_1577058461 = get_1543504024(expr_1577058425["Field0"]); + Temporary4 = true; } if (!Temporary4) Temporary3 = false; else { if (!(expr_1577058425["Field1"].o == true)) Temporary5 = false; else { value_1577058492 = get_1543504024(expr_1577058425["Field1"]); + Temporary5 = true; } Temporary3 = Temporary5; } if (Temporary3) { + Temporary2 = {o: true, v: {state: value_1577058492.state, tokens: [key_1577058461.tokens[chckIndx(0, 0, (key_1577058461.tokens).length - 1)], value_1577058492.tokens[chckIndx(0, 0, (value_1577058492.tokens).length - 1)]]}, e: null}; + } + else { + Temporary2 = linkValue_1577058424; + } + + } while (false); + result_1577058324 = nimCopy(result_1577058324, Temporary2, NTI1442840603); + + return result_1577058324; + +} +var linkStartParser_1577058320 = HEX2B_1275069169(HEX2B_1275069169(ignore_1275068608(str_1275068547(makeNimstrLit("[["))), anyUntil_1275068879(choice_1275068886([str_1275068547(makeNimstrLit("][")), str_1275068547(makeNimstrLit("]]"))]))), optional_1275068592(ignore_1275068608(str_1275068547(makeNimstrLit("]["))))); +var linkEndParser_1577058321 = HEX2B_1275069169(anyUntil_1275068879(str_1275068547(makeNimstrLit("]]"))), ignore_1275068608(str_1275068547(makeNimstrLit("]]")))); +var linkParser_1577058579 = HEX3Aanonymous_1577058322; + +function map_1577058783(s_1577058786, op_1577058788) { + var result_1577058789 = []; + + result_1577058789 = new Array(chckRange((s_1577058786).length, 0, 2147483647)); for (var i = 0 ; i < chckRange((s_1577058786).length, 0, 2147483647) ; ++i) { result_1577058789[i] = []; } Label1: do { + var i_1577058805 = 0; + var colontmp__1577058968 = 0; + colontmp__1577058968 = (s_1577058786).length; + var i_1577058969 = 0; + Label2: do { + Label3: while (true) { + if (!(i_1577058969 < colontmp__1577058968)) break Label3; + i_1577058805 = i_1577058969; + result_1577058789[chckIndx(i_1577058805, 0, (result_1577058789).length - 1)] = nimCopy(null, op_1577058788(s_1577058786[chckIndx(i_1577058805, 0, (s_1577058786).length - 1)]), NTI33554439); + i_1577058969 = addInt(i_1577058969, 1); + } + } while (false); + } while (false); + + return result_1577058789; + +} + +function nsuStrip(s_469764315, leading_469764316, trailing_469764317, chars_469764318) { + var Temporary5; + + var result_469764319 = []; + + var first_469764320 = 0; + var last_469764321 = subInt((s_469764315).length, 1); + if (leading_469764316) { + Label1: do { + Label2: while (true) { + if (!((first_469764320 <= last_469764321) && (chars_469764318[s_469764315[chckIndx(first_469764320, 0, (s_469764315).length - 1)]] != undefined))) break Label2; + first_469764320 = addInt(first_469764320, 1); + } + } while (false); + } + + if (trailing_469764317) { + Label3: do { + Label4: while (true) { + if (!(first_469764320 <= last_469764321)) Temporary5 = false; else { Temporary5 = (chars_469764318[s_469764315[chckIndx(last_469764321, 0, (s_469764315).length - 1)]] != undefined); } if (!Temporary5) break Label4; + last_469764321 = subInt(last_469764321, 1); + } + } while (false); + } + + result_469764319 = nimCopy(null, substr_33557907(s_469764315, first_469764320, last_469764321), NTI33554439); + + return result_469764319; + +} + +function Nothing_1291845691() { + var result_1291845693 = null; + + result_1291845693 = {kind: 0, value: []}; + + return result_1291845693; + +} + +function nothing_1291845685() { + var result_1291845690 = null; + + result_1291845690 = Nothing_1291845691(); + + return result_1291845690; + +} + +function notEmpty_1291845673(o_1291845677) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1291845679 = null; + + if (!(o_1291845677.kind == 1)) Temporary2 = false; else { var Temporary3 = o_1291845677; + if (ConstSet34[Temporary3.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary3.kind, NTI1291845635)); } + Temporary2 = eqStrings(nsuStrip(Temporary3.value, true, true, ConstSet35), []); } if (Temporary2) { + Temporary1 = nothing_1291845685(); + } + else { + Temporary1 = o_1291845677; + } + + result_1291845679 = Temporary1; + + return result_1291845679; + +} + +function Just_1526726736(value_1526726738) { + var result_1526726739 = null; + + result_1526726739 = {kind: 1, value: nimCopy(null, value_1526726738, NTI33554439)}; + + return result_1526726739; + +} + +function just_1526726732(value_1526726734) { + var result_1526726735 = null; + + result_1526726735 = Just_1526726736(value_1526726734); + + return result_1526726735; + +} + +function isEmpty_1526726724(o_1526726726) { + var result_1526726727 = false; + + result_1526726727 = (o_1526726726.kind == 0); + + return result_1526726727; + +} + +function isDefined_1526726718(o_1526726720) { + var result_1526726721 = false; + + result_1526726721 = !(isEmpty_1526726724(o_1526726720)); + + return result_1526726721; + +} + +function isSome_1577058648(o_1577058650) { + var result_1577058651 = false; + + result_1577058651 = isDefined_1526726718(o_1577058650); + + return result_1577058651; + +} + +function get_1577058618(o_1577058620) { + var Temporary1; + + var result_1577058621 = []; + + if (!(isDefined_1526726718(o_1577058620))) { + failedAssertImpl_218103864(makeNimstrLit("maybe.nim:120:11 `o.isDefined` Can\'t get Maybe\'s value")); + } + + var Temporary1 = o_1577058620; + if (ConstSet36[Temporary1.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary1.kind, NTI1291845635)); } + result_1577058621 = nimCopy(null, Temporary1.value, NTI33554439); + + return result_1577058621; + +} + +function isNone_1577058700(o_1577058702) { + var result_1577058703 = false; + + result_1577058703 = isEmpty_1526726724(o_1577058702); + + return result_1577058703; + +} + +function linkStringifier_1577058581(linkUrl_1577058582, linkDescription_1577058584) { + var Temporary2; + var Temporary3; + var Temporary4; + + var result_1577058585 = []; + + BeforeRet: do { + Label1: do { + var expr_1577058586 = {Field0: nimCopy(null, linkUrl_1577058582, NTI33554439), Field1: linkDescription_1577058584}; + var pos_1577058590 = 0; + var _ = pos_1577058590; + var linkDescription_1577058633 = []; + var linkUrl_1577058637 = []; + linkUrl_1577058637 = nimCopy(null, expr_1577058586["Field0"], NTI33554439); + if (!true) Temporary2 = false; else { if (!(isSome_1577058648(expr_1577058586["Field1"]) == true)) Temporary3 = false; else { linkDescription_1577058633 = nimCopy(null, get_1577058618(expr_1577058586["Field1"]), NTI33554439); + Temporary3 = true; } Temporary2 = Temporary3; } if (Temporary2) { + var fmtRes_1577058685 = [mnewString(0)]; + fmtRes_1577058685[0].push.apply(fmtRes_1577058685[0], makeNimstrLit("[["));; + formatValue_1107296418(fmtRes_1577058685, 0, linkUrl_1577058637, []); + fmtRes_1577058685[0].push.apply(fmtRes_1577058685[0], makeNimstrLit("]["));; + formatValue_1107296418(fmtRes_1577058685, 0, linkDescription_1577058633, []); + fmtRes_1577058685[0].push.apply(fmtRes_1577058685[0], makeNimstrLit("]]"));; + result_1577058585 = nimCopy(null, fmtRes_1577058685[0], NTI33554439); + break BeforeRet; + } + else { + var linkUrl_1577058689 = []; + linkUrl_1577058689 = nimCopy(null, expr_1577058586["Field0"], NTI33554439); + if (!true) Temporary4 = false; else { Temporary4 = (isNone_1577058700(expr_1577058586["Field1"]) == true); } if (Temporary4) { + var fmtRes_1577058709 = [mnewString(0)]; + fmtRes_1577058709[0].push.apply(fmtRes_1577058709[0], makeNimstrLit("[["));; + formatValue_1107296418(fmtRes_1577058709, 0, linkUrl_1577058689, []); + fmtRes_1577058709[0].push.apply(fmtRes_1577058709[0], makeNimstrLit("]]"));; + result_1577058585 = nimCopy(null, fmtRes_1577058709[0], NTI33554439); + break BeforeRet; + } + } + } while (false); + } while (false); + + return result_1577058585; + +} + +function linkTokenizer_1577058719(parserTokens_1577058720) { + var Temporary7; + var Temporary8; + var Temporary9; + var Temporary10; + + var result_1577058721 = null; + + BeforeRet: do { + var expr_1577058723 = map_1577058783(parserTokens_1577058720, tokenStringValue_1442840754); + var linkDescriptionWasSet_1577058806 = false; + var linkDescription_1577058823 = []; + var linkUrlWasSet_1577058824 = false; + var linkUrl_1577058841 = []; + var matched_1577058751 = false; + Label1: do { + var pos_1577058750 = 0; + var counter_1577058752 = 0; + if (!((ConstSet33[chckRange((expr_1577058723).length, 0, 65535)] != undefined))) { + raiseException({message: (makeNimstrLit("Match failure for pattern \x1B[4m[@linkUrl, @linkDescription]\x1B[24m. Expected length in range \'2 .. 2\', but `\x1B[4mparserTokens.map(tokenStringValue)\x1B[24m` has .len of ") || []).concat(HEX24_335544323((expr_1577058723).length) || [],makeNimstrLit(".") || []), m_type: NTI922748585, parent: null, name: null, trace: [], up: null}, "MatchError:ObjectType"); + } + + Label2: do { + Label3: do { + var elemId_1577058753 = null; + var elemId_1577058753_Idx = 0; + var i_1577058964 = 0; + var L_1577058965 = (expr_1577058723).length; + Label4: do { + Label5: while (true) { + if (!(i_1577058964 < L_1577058965)) break Label5; + elemId_1577058753 = expr_1577058723; elemId_1577058753_Idx = chckIndx(i_1577058964, 0, (expr_1577058723).length - 1); + Label6: do { + if ((counter_1577058752 == 0)) { + if (linkUrlWasSet_1577058824) { + if (eqStrings(linkUrl_1577058841, elemId_1577058753[elemId_1577058753_Idx])) { + Temporary8 = true; + } + else { + if (true) { + raiseException({message: (makeNimstrLit("Match failure: capture \'linkUrl\' is already set to \'") || []).concat(linkUrl_1577058841 || [],makeNimstrLit("\', and does not match with \'") || [],elemId_1577058753[elemId_1577058753_Idx] || [],makeNimstrLit("\'.") || []), m_type: NTI922748585, parent: null, name: null, trace: [], up: null}, "MatchError:ObjectType"); + } + + Temporary8 = false; + } + + Temporary7 = Temporary8; + } + else { + linkUrl_1577058841 = nimCopy(null, elemId_1577058753[elemId_1577058753_Idx], NTI33554439); + linkUrlWasSet_1577058824 = true; + Temporary7 = true; + } + + if (!(Temporary7)) { + raiseException({message: (makeNimstrLit("Match failure for pattern \'@linkUrl\'. Item at index ") || []).concat(HEX24_335544323(subInt(pos_1577058750, 1)) || [],makeNimstrLit(" failed") || []), m_type: NTI922748585, parent: null, name: null, trace: [], up: null}, "MatchError:ObjectType"); + } + + counter_1577058752 = addInt(counter_1577058752, 1); + pos_1577058750 = addInt(pos_1577058750, 1); + break Label6; + } + + if ((counter_1577058752 == 1)) { + if (linkDescriptionWasSet_1577058806) { + if (eqStrings(linkDescription_1577058823, elemId_1577058753[elemId_1577058753_Idx])) { + Temporary10 = true; + } + else { + if (true) { + raiseException({message: (makeNimstrLit("Match failure: capture \'linkDescription\' is already set to \'") || []).concat(linkDescription_1577058823 || [],makeNimstrLit("\', and does not match with \'") || [],elemId_1577058753[elemId_1577058753_Idx] || [],makeNimstrLit("\'.") || []), m_type: NTI922748585, parent: null, name: null, trace: [], up: null}, "MatchError:ObjectType"); + } + + Temporary10 = false; + } + + Temporary9 = Temporary10; + } + else { + linkDescription_1577058823 = nimCopy(null, elemId_1577058753[elemId_1577058753_Idx], NTI33554439); + linkDescriptionWasSet_1577058806 = true; + Temporary9 = true; + } + + if (!(Temporary9)) { + raiseException({message: (makeNimstrLit("Match failure for pattern \'@linkDescription\'. Item at index ") || []).concat(HEX24_335544323(subInt(pos_1577058750, 1)) || [],makeNimstrLit(" failed") || []), m_type: NTI922748585, parent: null, name: null, trace: [], up: null}, "MatchError:ObjectType"); + } + + counter_1577058752 = addInt(counter_1577058752, 1); + pos_1577058750 = addInt(pos_1577058750, 1); + break Label6; + } + + pos_1577058750 = addInt(pos_1577058750, 1); + } while (false); + i_1577058964 = addInt(i_1577058964, 1); + if (!(((expr_1577058723).length == L_1577058965))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + } while (false); + matched_1577058751 = true; + } while (false); + var okHEX60gensym76_1577058895 = matched_1577058751; + var _ = okHEX60gensym76_1577058895; + var maybeLinkDescription_1577058899 = notEmpty_1291845673(just_1526726732(linkDescription_1577058823)); + result_1577058721 = {kind: 8, content: linkStringifier_1577058581(linkUrl_1577058841, maybeLinkDescription_1577058899), linkUrl: nimCopy(null, linkUrl_1577058841, NTI33554439), linkDescription: maybeLinkDescription_1577058899, children: []}; + break BeforeRet; + } while (false); + + return result_1577058721; + +} + +function HEX3Aanonymous_1577058954(parserTokens_1577058955) { + var result_1577058956 = []; + + BeforeRet: do { + result_1577058956 = nimCopy(null, [linkTokenizer_1577058719(parserTokens_1577058955)], NTI1509949514); + break BeforeRet; + } while (false); + + return result_1577058956; + +} +var linkTokenizerSeq_1577058961 = HEX3Aanonymous_1577058954; + +function rawTextTokenizer_1509949558(kind_1509949559) { + +function HEX3Aanonymous_1509949563(content_1509949564) { + var result_1509949565 = null; + + BeforeRet: do { + result_1509949565 = {kind: kind_1509949559, content: nimCopy(null, content_1509949564, NTI33554439), children: [], linkUrl: [], linkDescription: null}; + break BeforeRet; + } while (false); + + return result_1509949565; + + } + + var result_1509949562 = null; + + BeforeRet: do { + result_1509949562 = HEX3Aanonymous_1509949563; + break BeforeRet; + } while (false); + + return result_1509949562; + +} + +function tokensToString_1442840757(tokens_1442840758) { + var result_1442840759 = []; + + var resultHEX60gensym1_1442840762 = []; + Label1: do { + var xHEX60gensym1_1442840784 = null; + var xHEX60gensym1_1442840784_Idx = 0; + var i_1560281149 = 0; + var L_1560281150 = (tokens_1442840758).length; + Label2: do { + Label3: while (true) { + if (!(i_1560281149 < L_1560281150)) break Label3; + xHEX60gensym1_1442840784 = tokens_1442840758; xHEX60gensym1_1442840784_Idx = chckIndx(i_1560281149, 0, (tokens_1442840758).length - 1); + var a_1442840785 = nimCopy(null, resultHEX60gensym1_1442840762, NTI33554439); + var b_1442840786 = xHEX60gensym1_1442840784[xHEX60gensym1_1442840784_Idx]; + resultHEX60gensym1_1442840762 = nimCopy(null, (a_1442840785 || []).concat(tokenStringValue_1442840754(b_1442840786) || []), NTI33554439); + i_1560281149 = addInt(i_1560281149, 1); + if (!(((tokens_1442840758).length == L_1560281150))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1442840759 = nimCopy(null, resultHEX60gensym1_1442840762, NTI33554439); + + return result_1442840759; + +} + +function textTokenizer_1509949507(kind_1509949508) { + +function HEX3Aanonymous_1509949512(tokens_1509949513) { + var result_1509949514 = []; + + BeforeRet: do { + result_1509949514 = nimCopy(null, [{kind: kind_1509949508, content: tokensToString_1442840757(tokens_1509949513), children: [], linkUrl: [], linkDescription: null}], NTI1509949514); + break BeforeRet; + } while (false); + + return result_1509949514; + + } + + var result_1509949511 = null; + + BeforeRet: do { + result_1509949511 = HEX3Aanonymous_1509949512; + break BeforeRet; + } while (false); + + return result_1509949511; + +} +var boldParser_1560281102 = parseBetweenPair_1275069446(ch_1275068490(42)); +var italicParser_1560281103 = parseBetweenPair_1275069446(ch_1275068490(47)); +var underlineParser_1560281104 = parseBetweenPair_1275069446(ch_1275068490(95)); +var verbatimParser_1560281105 = parseBetweenPair_1275069446(ch_1275068490(61)); +var codeParser_1560281106 = parseBetweenPair_1275069446(ch_1275068490(126)); +var strikeThroughParser_1560281107 = parseBetweenPair_1275069446(ch_1275068490(43)); +var rawTokenizer_1560281108 = rawTextTokenizer_1509949558(0); +var boldTokenizer_1560281109 = textTokenizer_1509949507(2); +var italicTokenizer_1560281110 = textTokenizer_1509949507(3); +var underlineTokenizer_1560281111 = textTokenizer_1509949507(4); +var verbatimTokenizer_1560281112 = textTokenizer_1509949507(5); +var codeTokenizer_1560281113 = textTokenizer_1509949507(6); +var strikeThroughTokenizer_1560281114 = textTokenizer_1509949507(7); +var tok_1560281115 = linkTokenizerSeq_1577058961; +var orgStyledTextBuilders_1560281120 = [nimCopy(null, {Field0: boldParser_1560281102, Field1: boldTokenizer_1560281109}, NTI1560281092), nimCopy(null, {Field0: italicParser_1560281103, Field1: italicTokenizer_1560281110}, NTI1560281092), nimCopy(null, {Field0: underlineParser_1560281104, Field1: underlineTokenizer_1560281111}, NTI1560281092), nimCopy(null, {Field0: verbatimParser_1560281105, Field1: verbatimTokenizer_1560281112}, NTI1560281092), nimCopy(null, {Field0: codeParser_1560281106, Field1: codeTokenizer_1560281113}, NTI1560281092), nimCopy(null, {Field0: strikeThroughParser_1560281107, Field1: strikeThroughTokenizer_1560281114}, NTI1560281092), nimCopy(null, {Field0: linkParser_1577058579, Field1: linkTokenizerSeq_1577058961}, NTI1560281092)]; +var parseHeadingStars_788529171 = [manyUntil_1275068815(ch_1275068490(42), ch_1275068490(32)), ignore_1275068608(ch_1275068490(32))]; + +function map_788529184(s_788529187, op_788529189) { + var result_788529190 = []; + + result_788529190 = new Array(chckRange((s_788529187).length, 0, 2147483647)); for (var i = 0 ; i < chckRange((s_788529187).length, 0, 2147483647) ; ++i) { result_788529190[i] = null; } Label1: do { + var i_788529205 = 0; + var colontmp__788529514 = 0; + colontmp__788529514 = (s_788529187).length; + var i_788529515 = 0; + Label2: do { + Label3: while (true) { + if (!(i_788529515 < colontmp__788529514)) break Label3; + i_788529205 = i_788529515; + result_788529190[chckIndx(i_788529205, 0, (result_788529190).length - 1)] = op_788529189(s_788529187[chckIndx(i_788529205, 0, (s_788529187).length - 1)]); + i_788529515 = addInt(i_788529515, 1); + } + } while (false); + } while (false); + + return result_788529190; + +} + +function createTodoKeywordParser_788529172(xs_788529173) { + +function HEX3Aanonymous_788529177(x_788529178) { + var result_788529179 = null; + + result_788529179 = HEX2B_1275069169(str_1275068547(x_788529178), ignore_1275068608(ch_1275068490(32))); + + return result_788529179; + + } + + var result_788529176 = null; + + result_788529176 = choice_1275068886(map_788529184(xs_788529173, HEX3Aanonymous_788529177)); + + return result_788529176; + +} + +function HEX5BHEX5D_721421164(s_721421167, x_721421168) { + var result_721421169 = []; + + var a_721421171 = x_721421168.a; + var L_721421173 = addInt(subInt(x_721421168.b, a_721421171), 1); + result_721421169 = nimCopy(null, mnewString(chckRange(L_721421173, 0, 2147483647)), NTI33554439); + Label1: do { + var i_721421178 = 0; + var i_788529519 = 0; + Label2: do { + Label3: while (true) { + if (!(i_788529519 < L_721421173)) break Label3; + i_721421178 = i_788529519; + result_721421169[chckIndx(i_721421178, 0, (result_721421169).length - 1)] = s_721421167[chckIndx(addInt(i_721421178, a_721421171), 0, (s_721421167).length - 1)]; + i_788529519 = addInt(i_788529519, 1); + } + } while (false); + } while (false); + + return result_721421169; + +} + +function manyUntilPerformant_1275068675(acceptFn_1275068678, stopFn_1275068681) { + +function HEX3Aanonymous_1275068685(parser_1275068686) { + +function HEX3Aanonymous_1275068754(p_1275068755) { + var result_1275068756 = null; + + result_1275068756 = {state: {stream: nimCopy(null, p_1275068755.state.stream, NTI33554439), position: p_1275068755.state.position, lastPosition: p_1275068755.state.lastPosition}, tokens: [{kind: 1, stringValue: HEX5BHEX5D_721421164(p_1275068755.state.stream, HEX2EHEX2E_721421139(subInt(startPosition_1275068688, 1), p_1275068755.state.position)), charValue: 0}]}; + + return result_1275068756; + + } + + var result_1275068687 = ({o: false, e: null, v: null}); + + BeforeRet: do { + var startPosition_1275068688 = parser_1275068686.state.position; + var res_1275068693 = nimCopy(null, {o: true, v: parser_1275068686, e: null}, NTI1442840603); + Label1: do { + Label2: while (true) { + if (!(res_1275068693.o && !(flatMap_1275068576(res_1275068693, stopFn_1275068681).o))) break Label2; + res_1275068693 = nimCopy(res_1275068693, flatMap_1275068576(res_1275068693, acceptFn_1275068678), NTI1442840603); + } + } while (false); + result_1275068687 = nimCopy(result_1275068687, map_1275068657(res_1275068693, HEX3Aanonymous_1275068754), NTI1442840603); + break BeforeRet; + } while (false); + + return result_1275068687; + + } + + var result_1275068684 = null; + + BeforeRet: do { + result_1275068684 = HEX3Aanonymous_1275068685; + break BeforeRet; + } while (false); + + return result_1275068684; + +} + +function anyUntilPerformant_1275068808(stopFn_1275068811) { + var result_1275068814 = null; + + result_1275068814 = manyUntilPerformant_1275068675(anyCh_1275068520, stopFn_1275068811); + + return result_1275068814; + +} + +function HEX3Aanonymous_788529255(tokens_788529256, org_788529257) { + var Temporary1; + + var result_788529258 = null; + + var Temporary1 = org_788529257; + if (ConstSet37[Temporary1.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'level\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary1.kind, NTI1526726794)); } + Temporary1.level = (tokens_788529256).length; + result_788529258 = org_788529257; + + return result_788529258; + +} + +function some_788529267(val_788529269) { + var result_788529270 = ({val: [], has: false}); + + result_788529270.has = true; + result_788529270.val = nimCopy(null, val_788529269, NTI33554439); + + return result_788529270; + +} + +function HEX3Aanonymous_788529263(tokens_788529264, org_788529265) { + var Temporary1; + + var result_788529266 = null; + + var Temporary1 = org_788529265; + if (ConstSet38[Temporary1.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'todo\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary1.kind, NTI1526726794)); } + Temporary1.todo = nimCopy(Temporary1.todo, some_788529267(tokensToString_1442840757(tokens_788529264)), NTI1526726804); + result_788529266 = org_788529265; + + return result_788529266; + +} + +function addQuoted_788529437(s_788529439, s_788529439_Idx, x_788529440) { + s_788529439[s_788529439_Idx].push.apply(s_788529439[s_788529439_Idx], HEX24_1442841019(x_788529440));; + + +} + +function HEX24_1526726683(x_1526726684) { + var Temporary1; + + var result_1526726685 = []; + + switch (x_1526726684) { + case 0: + Temporary1 = makeNimstrLit("Text (Raw)"); + break; + case 1: + Temporary1 = makeNimstrLit("Text"); + break; + case 2: + Temporary1 = makeNimstrLit("Text (Bold)"); + break; + case 3: + Temporary1 = makeNimstrLit("Text (Italic)"); + break; + case 4: + Temporary1 = makeNimstrLit("Text (Underline)"); + break; + case 5: + Temporary1 = makeNimstrLit("Text (Verbatim)"); + break; + case 6: + Temporary1 = makeNimstrLit("Text (Code)"); + break; + case 7: + Temporary1 = makeNimstrLit("Text (StrikeThrough)"); + break; + case 8: + Temporary1 = makeNimstrLit("Link"); + break; + } + result_1526726685 = nimCopy(null, Temporary1, NTI33554439); + + return result_1526726685; + +} + +function formatValue_1526726833(result_1526726835, result_1526726835_Idx, value_1526726836, specifier_1526726837) { + formatValue_1107296418(result_1526726835, result_1526726835_Idx, HEX24_1526726683(value_1526726836), specifier_1526726837); + + +} + +function getOrElse_1526726750(o_1526726752, d_1526726753) { + var Temporary1; + var Temporary2; + + var result_1526726754 = []; + + if (isDefined_1526726718(o_1526726752)) { + var Temporary2 = o_1526726752; + if (ConstSet41[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1291845635)); } + Temporary1 = Temporary2.value; + } + else { + Temporary1 = d_1526726753; + } + + result_1526726754 = nimCopy(null, Temporary1, NTI33554439); + + return result_1526726754; + +} + +function map_1526726709(o_1526726712, f_1526726714) { + var Temporary1; + var Temporary2; + + var result_1526726715 = null; + + if (isDefined_1526726718(o_1526726712)) { + var Temporary2 = o_1526726712; + if (ConstSet42[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1291845635)); } + Temporary1 = just_1526726732(f_1526726714(Temporary2.value)); + } + else { + Temporary1 = nothing_1291845685(); + } + + result_1526726715 = Temporary1; + + return result_1526726715; + +} + +function stringifySpecialFields_1526726686(x_1526726687) { + var Temporary1; + var Temporary2; + var Temporary3; + +function HEX3Aanonymous_1526726700(y_1526726703) { + var result_1526726706 = []; + + var fmtRes_1526726707 = [mnewString(0)]; + fmtRes_1526726707[0].push.apply(fmtRes_1526726707[0], makeNimstrLit("\x0AlinkValue: \""));; + formatValue_1107296418(fmtRes_1526726707, 0, y_1526726703, []); + fmtRes_1526726707[0].push.apply(fmtRes_1526726707[0], makeNimstrLit("\""));; + result_1526726706 = nimCopy(null, fmtRes_1526726707[0], NTI33554439); + + return result_1526726706; + + } + +function HEX3Aanonymous_1526726774(x_1526726777) { + var result_1526726780 = []; + + result_1526726780 = nimCopy(null, nsuIndent(x_1526726777, 2, makeNimstrLit(" ")), NTI33554439); + + return result_1526726780; + + } + +function HEX3Aanonymous_1526726798(x_1526726801) { + var result_1526726804 = []; + + result_1526726804 = nimCopy(null, (makeNimstrLit("\x0A") || []).concat(x_1526726801 || [],makeNimstrLit("\x0A") || []), NTI33554439); + + return result_1526726804; + + } + + var result_1526726688 = []; + + switch (x_1526726687.kind) { + case 8: + var fmtRes_1526726689 = [mnewString(0)]; + fmtRes_1526726689[0].push.apply(fmtRes_1526726689[0], makeNimstrLit("linkUrl: \""));; + var Temporary2 = x_1526726687; + if (ConstSet40[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'linkUrl\' is not accessible for type \'OrgInlineBlock\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1526726659)); } + formatValue_1107296418(fmtRes_1526726689, 0, Temporary2.linkUrl, []); + fmtRes_1526726689[0].push.apply(fmtRes_1526726689[0], makeNimstrLit("\""));; + var Temporary3 = x_1526726687; + if (ConstSet43[Temporary3.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'linkDescription\' is not accessible for type \'OrgInlineBlock\' using \'kind = "), reprDiscriminant(Temporary3.kind, NTI1526726659)); } + Temporary1 = (fmtRes_1526726689[0] || []).concat(getOrElse_1526726750(map_1526726709(Temporary3.linkDescription, HEX3Aanonymous_1526726700), []) || []); + break; + default: + Temporary1 = []; + break; + } + var specialFields_1526726760 = nimCopy(null, Temporary1, NTI33554439); + result_1526726688 = nimCopy(null, getOrElse_1526726750(map_1526726709(map_1526726709(notEmpty_1291845673(just_1526726732(specialFields_1526726760)), HEX3Aanonymous_1526726774), HEX3Aanonymous_1526726798), []), NTI33554439); + + return result_1526726688; + +} + +function HEX24_1526726829(x_1526726830) { + var result_1526726831 = []; + + var fmtRes_1526726832 = [mnewString(0)]; + fmtRes_1526726832[0].push.apply(fmtRes_1526726832[0], makeNimstrLit("OrgInlineBlock(\x0A content: \""));; + formatValue_1107296418(fmtRes_1526726832, 0, x_1526726830.content, []); + fmtRes_1526726832[0].push.apply(fmtRes_1526726832[0], makeNimstrLit("\"\x0A kind: "));; + formatValue_1526726833(fmtRes_1526726832, 0, x_1526726830.kind, []); + result_1526726831 = nimCopy(null, (fmtRes_1526726832[0] || []).concat(stringifySpecialFields_1526726686(x_1526726830) || [],makeNimstrLit(")") || []), NTI33554439); + + return result_1526726831; + +} + +function addQuoted_1526726947(s_1526726949, s_1526726949_Idx, x_1526726950) { + s_1526726949[s_1526726949_Idx].push.apply(s_1526726949[s_1526726949_Idx], HEX24_1526726829(x_1526726950));; + + +} + +function collectionToString_1526726908(x_1526726910, prefix_1526726911, separator_1526726912, suffix_1526726913) { + var result_1526726914 = [[]]; + + result_1526726914[0] = nimCopy(null, prefix_1526726911, NTI33554439); + var firstElement_1526726915 = true; + Label1: do { + var value_1526726937 = null; + var value_1526726937_Idx = 0; + var i_788529523 = 0; + var L_788529524 = (x_1526726910).length; + Label2: do { + Label3: while (true) { + if (!(i_788529523 < L_788529524)) break Label3; + value_1526726937 = x_1526726910; value_1526726937_Idx = i_788529523; + if (firstElement_1526726915) { + firstElement_1526726915 = false; + } + else { + result_1526726914[0].push.apply(result_1526726914[0], separator_1526726912);; + } + + if ((value_1526726937[value_1526726937_Idx] == null)) { + result_1526726914[0].push.apply(result_1526726914[0], makeNimstrLit("nil"));; + } + else { + addQuoted_1526726947(result_1526726914, 0, value_1526726937[value_1526726937_Idx]); + } + + i_788529523 += 1; + if (!(((x_1526726910).length == L_788529524))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1526726914[0].push.apply(result_1526726914[0], suffix_1526726913);; + + return result_1526726914[0]; + +} + +function HEX24_1526726904(x_1526726906) { + var result_1526726907 = []; + + result_1526726907 = nimCopy(null, collectionToString_1526726908(x_1526726906, makeNimstrLit("@["), makeNimstrLit(", "), makeNimstrLit("]")), NTI33554439); + + return result_1526726907; + +} + +function addQuoted_788529456(s_788529458, s_788529458_Idx, x_788529459) { + s_788529458[s_788529458_Idx].push.apply(s_788529458[s_788529458_Idx], HEX24_1526726904(x_788529459));; + + +} + +function HEX24_788529411(x_788529413) { + var result_788529414 = [[]]; + + result_788529414[0] = nimCopy(null, makeNimstrLit("("), NTI33554439); + var count_788529420 = 0; + if ((0 < count_788529420)) { + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit(", "));; + } + + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit("parser"));; + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit(": "));; + count_788529420 += 1; + if ((x_788529413["Field0"] == null)) { + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit("nil"));; + } + else { + addQuoted_788529437(result_788529414, 0, x_788529413["Field0"]); + } + + if ((0 < count_788529420)) { + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit(", "));; + } + + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit("tree"));; + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit(": "));; + count_788529420 += 1; + addQuoted_788529456(result_788529414, 0, x_788529413["Field1"]); + result_788529414[0].push.apply(result_788529414[0], makeNimstrLit(")"));; + + return result_788529414[0]; + +} + +function raiseResultDefect_788529335(m_788529337, v_788529338) { + raiseException({message: (m_788529337 || []).concat(makeNimstrLit(": ") || [],HEX24_788529411(v_788529338) || []), m_type: NTI1224736772, parent: null, name: null, trace: [], up: null}, "ResultDefect"); + + +} + +function error_788529330(self_788529333) { + var Temporary1; + var Temporary2; + + var result_788529334 = {Field0: {Field0: null, Field1: []}, Field1: []}; + + if (self_788529333.o) { + var Temporary1 = self_788529333; + if (ConstSet44[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + raiseResultDefect_788529335(makeNimstrLit("Trying to access error when value is set"), Temporary1.v); + } + + var Temporary2 = self_788529333; + if (ConstSet45[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_788529334 = nimCopy(result_788529334, Temporary2.e, NTI1509949463); + + return result_788529334; + +} + +function fold_788529309(self_788529313, onError_788529315, onSuccess_788529317) { + var Temporary1; + var Temporary2; + + var result_788529318 = []; + + if (self_788529313.o) { + if (!(self_788529313.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `self.o` ")); + } + + var Temporary2 = self_788529313; + if (ConstSet39[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = onSuccess_788529317(Temporary2.v); + } + else { + Temporary1 = onError_788529315(error_788529330(self_788529313)); + } + + result_788529318 = nimCopy(null, Temporary1, NTI1509949477); + + return result_788529318; + +} + +function flatMap_1560281578(self_1560281582, f_1560281584) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_1560281585 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + if (self_1560281582.o) { + var Temporary2 = self_1560281582; + if (ConstSet46[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = f_1560281584(Temporary2.v); + } + else { + var Temporary3 = self_1560281582; + if (ConstSet47[Temporary3.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary3.o, NTI33554466)); } + Temporary1 = {o: false, e: nimCopy(null, Temporary3.e, NTI1509949463), v: {Field0: null, Field1: []}}; + } + + result_1560281585 = nimCopy(result_1560281585, Temporary1, NTI1509949465); + + return result_1560281585; + +} + +function initParser_1442840670(str_1442840671) { + var result_1442840672 = null; + + result_1442840672 = {state: {stream: nimCopy(null, str_1442840671, NTI33554439), position: -1, lastPosition: 0}, tokens: newSeq_1442840677(0)}; + + return result_1442840672; + +} + +function newSeq_1509949468(len_1509949470) { + var result_1509949471 = []; + + result_1509949471 = new Array(len_1509949470); for (var i = 0 ; i < len_1509949470 ; ++i) { result_1509949471[i] = null; } + return result_1509949471; + +} + +function initOrgInlineBuilder_1509949457(content_1509949458) { + var result_1509949459 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + BeforeRet: do { + result_1509949459 = nimCopy(result_1509949459, {o: true, v: nimCopy(null, {Field0: initParser_1442840670(content_1509949458), Field1: newSeq_1509949468(0)}, NTI1509949449), e: {Field0: {Field0: null, Field1: []}, Field1: []}}, NTI1509949465); + break BeforeRet; + } while (false); + + return result_1509949459; + +} + +function foldTokens_1560281388(parserResult_1560281390, onError_1560281392, onSuccess_1560281394) { + var Temporary1; + var Temporary2; + + var result_1560281395 = []; + + if (parserResult_1560281390.o) { + if (!(parserResult_1560281390.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `parserResult.o` ")); + } + + var Temporary2 = parserResult_1560281390; + if (ConstSet49[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = onSuccess_1560281394(Temporary2.v.tokens); + } + else { + var err_1560281415 = error_1275069001(parserResult_1560281390); + Temporary1 = onError_1560281392(err_1560281415); + } + + result_1560281395 = nimCopy(null, Temporary1, NTI1509949477); + + return result_1560281395; + +} + +function initBuilder_1560281447(t_1560281449, parser_1560281450, tree_1560281451) { + var result_1560281452 = {Field0: null, Field1: []}; + + result_1560281452 = nimCopy(result_1560281452, {Field0: parser_1560281450, Field1: nimCopy(null, tree_1560281451, NTI1560281382)}, NTI1509949449); + + return result_1560281452; + +} + +function tryParseBuild_1560281188(builder_1560281190, builderFns_1560281196, defaultBuilderFn_1560281198, stopAtParserFn_1560281199, concatFn_1560281252) { + var Temporary6; + +function HEX3Aanonymous_1560281377(__1560281380) { + var result_1560281383 = []; + + result_1560281383 = nimCopy(null, newSeq_1509949468(0), NTI1509949477); + + return result_1560281383; + + } + +function HEX3Aanonymous_1560281475(__1560281478) { + var result_1560281481 = []; + + result_1560281481 = nimCopy(null, newSeq_1509949468(0), NTI1509949477); + + return result_1560281481; + + } + + var result_1560281257 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + var colontmp__788529532 = nimCopy(null, builder_1560281190, NTI1509949449); + var parser_1560281258 = colontmp__788529532["Field0"]; + var tree_1560281259 = nimCopy(null, colontmp__788529532["Field1"], NTI1509949450); + var parserAcc_1560281263 = nimCopy(null, {o: true, v: parser_1560281258, e: null}, NTI1442840603); + var builderAcc_1560281265 = nimCopy(null, builder_1560281190, NTI1509949449); + Label1: do { + Label2: while (true) { + if (!(parserAcc_1560281263.o && !(flatMap_1275068576(parserAcc_1560281263, stopAtParserFn_1560281199).o))) break Label2; + var emptyParser_1560281317 = map_1275068657(parserAcc_1560281263, emptyTokens_1442840824); + var found_1560281318 = false; + Label3: do { + var fn_1560281340 = null; + var i_788529529 = 0; + var L_788529530 = (builderFns_1560281196).length; + Label4: do { + Label5: while (true) { + if (!(i_788529529 < L_788529530)) break Label5; + fn_1560281340 = builderFns_1560281196[chckIndx(i_788529529, 0, (builderFns_1560281196).length - 1)]; + var colontmp__788529533 = nimCopy(null, fn_1560281340, NTI1560281166); + var parserFn_1560281341 = colontmp__788529533["Field0"]; + var builderFn_1560281342 = colontmp__788529533["Field1"]; + var parseResult_1560281363 = flatMap_1275068576(emptyParser_1560281317, parserFn_1560281341); + if (parseResult_1560281363.o) { + if (!(parseResult_1560281363.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `parseResult.o` ")); + } + + var Temporary6 = parseResult_1560281363; + if (ConstSet48[Temporary6.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary6.o, NTI33554466)); } + var okParser_1560281376 = Temporary6.v; + var defaultBuilderTokens_1560281416 = foldTokens_1560281388(parserAcc_1560281263, HEX3Aanonymous_1560281377, defaultBuilderFn_1560281198); + found_1560281318 = true; + parserAcc_1560281263 = nimCopy(parserAcc_1560281263, map_1275068657(parseResult_1560281363, emptyTokens_1442840824), NTI1442840603); + builderAcc_1560281265 = nimCopy(builderAcc_1560281265, initBuilder_1560281447(builder_1560281190, okParser_1560281376, concatFn_1560281252([nimCopy(null, builderAcc_1560281265.Field1, NTI1509949452), nimCopy(null, defaultBuilderTokens_1560281416, NTI1509949477), builderFn_1560281342(okParser_1560281376.tokens)])), NTI1509949449); + break Label3; + } + + i_788529529 = addInt(i_788529529, 1); + if (!(((builderFns_1560281196).length == L_788529530))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + if (!(found_1560281318)) { + parserAcc_1560281263 = nimCopy(parserAcc_1560281263, flatMap_1275068576(parserAcc_1560281263, anyCh_1275068520), NTI1442840603); + } + + } + } while (false); + var defaultBuilderTokens_1560281493 = foldTokens_1560281388(parserAcc_1560281263, HEX3Aanonymous_1560281475, defaultBuilderFn_1560281198); + result_1560281257 = nimCopy(result_1560281257, {o: true, v: nimCopy(null, initBuilder_1560281447(builder_1560281190, builderAcc_1560281265.Field0, concatFn_1560281252([nimCopy(null, builderAcc_1560281265.Field1, NTI1509949452), nimCopy(null, defaultBuilderTokens_1560281493, NTI1509949477)])), NTI1509949449), e: {Field0: {Field0: null, Field1: []}, Field1: []}}, NTI1509949465); + + return result_1560281257; + +} + +function makeRawTokenOrEmpty_1560281152(tokens_1560281153) { + var Temporary4; + + var result_1560281154 = []; + + var resultHEX60gensym0_1560281157 = []; + Label1: do { + var xHEX60gensym0_1560281161 = null; + var xHEX60gensym0_1560281161_Idx = 0; + var i_788529535 = 0; + var L_788529536 = (tokens_1560281153).length; + Label2: do { + Label3: while (true) { + if (!(i_788529535 < L_788529536)) break Label3; + xHEX60gensym0_1560281161 = tokens_1560281153; xHEX60gensym0_1560281161_Idx = chckIndx(i_788529535, 0, (tokens_1560281153).length - 1); + var a_1560281162 = nimCopy(null, resultHEX60gensym0_1560281157, NTI33554439); + var b_1560281163 = xHEX60gensym0_1560281161[xHEX60gensym0_1560281161_Idx]; + resultHEX60gensym0_1560281157 = nimCopy(null, (a_1560281162 || []).concat(tokenStringValue_1442840754(b_1560281163) || []), NTI33554439); + i_788529535 = addInt(i_788529535, 1); + if (!(((tokens_1560281153).length == L_788529536))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + var str_1560281164 = nimCopy(null, resultHEX60gensym0_1560281157, NTI33554439); + if (((str_1560281164).length == 0)) { + Temporary4 = []; + } + else { + Temporary4 = [rawTokenizer_1560281108(str_1560281164)]; + } + + result_1560281154 = nimCopy(null, Temporary4, NTI1509949514); + + return result_1560281154; + +} + +function concat_1560281201(seqs_1560281203) { + var result_1560281204 = []; + + var L_1560281205 = 0; + Label1: do { + var seqitm_1560281218 = null; + var seqitm_1560281218_Idx = 0; + var i_788529540 = 0; + Label2: do { + Label3: while (true) { + if (!(i_788529540 < (seqs_1560281203).length)) break Label3; + seqitm_1560281218 = seqs_1560281203; seqitm_1560281218_Idx = chckIndx(i_788529540, 0, (seqs_1560281203).length - 1); + L_1560281205 = addInt(L_1560281205, (seqitm_1560281218[seqitm_1560281218_Idx]).length); + i_788529540 = addInt(i_788529540, 1); + } + } while (false); + } while (false); + result_1560281204 = new Array(chckRange(L_1560281205, 0, 2147483647)); for (var i = 0 ; i < chckRange(L_1560281205, 0, 2147483647) ; ++i) { result_1560281204[i] = null; } var i_1560281230 = 0; + Label4: do { + var s_1560281234 = null; + var s_1560281234_Idx = 0; + var i_788529547 = 0; + Label5: do { + Label6: while (true) { + if (!(i_788529547 < (seqs_1560281203).length)) break Label6; + s_1560281234 = seqs_1560281203; s_1560281234_Idx = chckIndx(i_788529547, 0, (seqs_1560281203).length - 1); + Label7: do { + var itm_1560281238 = null; + var itm_1560281238_Idx = 0; + var i_788529544 = 0; + var L_788529545 = (s_1560281234[s_1560281234_Idx]).length; + Label8: do { + Label9: while (true) { + if (!(i_788529544 < L_788529545)) break Label9; + itm_1560281238 = s_1560281234[s_1560281234_Idx]; itm_1560281238_Idx = chckIndx(i_788529544, 0, (s_1560281234[s_1560281234_Idx]).length - 1); + result_1560281204[chckIndx(i_1560281230, 0, (result_1560281204).length - 1)] = itm_1560281238[itm_1560281238_Idx]; + i_1560281230 = addInt(i_1560281230, 1); + i_788529544 = addInt(i_788529544, 1); + if (!(((s_1560281234[s_1560281234_Idx]).length == L_788529545))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + i_788529547 = addInt(i_788529547, 1); + } + } while (false); + } while (false); + + return result_1560281204; + +} + +function tryBuildInline_1560281173(content_1560281174) { + +function HEX3Aanonymous_1560281182(builder_1560281183) { + var result_1560281184 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_1560281184 = nimCopy(result_1560281184, tryParseBuild_1560281188(builder_1560281183, orgStyledTextBuilders_1560281120, makeRawTokenOrEmpty_1560281152, newline_1275069329, concat_1560281201), NTI1509949465); + + return result_1560281184; + + } + + var result_1560281175 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_1560281175 = nimCopy(result_1560281175, flatMap_1560281578(initOrgInlineBuilder_1509949457(content_1560281174), HEX3Aanonymous_1560281182), NTI1509949465); + + return result_1560281175; + +} + +function HEX3Aanonymous_788529282(tokens_788529283, org_788529284) { + +function HEX3Aanonymous_788529290(x_788529293) { + var result_788529296 = []; + + result_788529296 = nimCopy(null, newSeq_1509949468(0), NTI1509949477); + + return result_788529296; + + } + +function HEX3Aanonymous_788529305(x_788529306) { + var result_788529307 = []; + + result_788529307 = nimCopy(null, x_788529306.Field1, NTI1509949452); + + return result_788529307; + + } + var Temporary1; + + var result_788529285 = null; + + var headlineString_788529286 = tokensToString_1442840757(tokens_788529283); + var tokens_788529465 = fold_788529309(tryBuildInline_1560281173(headlineString_788529286), HEX3Aanonymous_788529290, HEX3Aanonymous_788529305); + var Temporary1 = org_788529284; + if (ConstSet50[Temporary1.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'headlineContent\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary1.kind, NTI1526726794)); } + Temporary1.headlineContent = nimCopy(null, tokens_788529465, NTI1509949477); + result_788529285 = org_788529284; + + return result_788529285; + +} + +function HEX3Aanonymous_788529494(tokens_788529495, org_788529496) { + var result_788529497 = null; + + result_788529497 = org_788529496; + + return result_788529497; + +} + +function HEX3Aanonymous_788529499(tokens_788529500, org_788529501) { + var result_788529502 = null; + + result_788529502 = org_788529501; + + return result_788529502; + +} +var todoKeywords_788529228 = [makeNimstrLit("TODO")]; +var doneKeywords_788529233 = [makeNimstrLit("DONE")]; +var parseTodoKeyword_788529234 = createTodoKeywordParser_788529172(todoKeywords_788529228); +var parseDoneKeyword_788529235 = createTodoKeywordParser_788529172(doneKeywords_788529233); +var parseContentText_788529244 = [anyUntilPerformant_1275068808(choice_1275068886([endOfStream_1275069241, str_1275068547(makeNimstrLit("\x0A*"))]))]; +var parseHeadlineNewline_788529249 = [ignore_1275068608(newline_1275069329)]; +var parseHeadingText_788529254 = [anyUntilPerformant_1275068808(newline_1275069329)]; +var buildStars_788529262 = HEX3Aanonymous_788529255; +var buildTodo_788529281 = HEX3Aanonymous_788529263; +var buildHeadlineContent_788529493 = HEX3Aanonymous_788529282; +var buildHeadlineChildren_788529498 = HEX3Aanonymous_788529494; +var buildHeadlineNewline_788529503 = HEX3Aanonymous_788529499; + +function newSeq_1509949597(len_1509949599) { + var result_1509949600 = []; + + result_1509949600 = new Array(len_1509949599); for (var i = 0 ; i < len_1509949599 ; ++i) { result_1509949600[i] = null; } + return result_1509949600; + +} + +function initOrgBuilder_1509949586(content_1509949587) { + var result_1509949588 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + BeforeRet: do { + result_1509949588 = nimCopy(result_1509949588, {o: true, v: nimCopy(null, {Field0: initParser_1442840670(content_1509949587), Field1: newSeq_1509949597(0)}, NTI1509949555), e: {Field0: {Field0: null, Field1: []}, Field1: []}}, NTI1509949571); + break BeforeRet; + } while (false); + + return result_1509949588; + +} + +function flatMap_788530125(self_788530129, f_788530131) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_788530132 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + if (self_788530129.o) { + var Temporary2 = self_788530129; + if (ConstSet51[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = f_788530131(Temporary2.v); + } + else { + var Temporary3 = self_788530129; + if (ConstSet52[Temporary3.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary3.o, NTI33554466)); } + Temporary1 = {o: false, e: nimCopy(null, Temporary3.e, NTI1509949569), v: {Field0: null, Field1: []}}; + } + + result_788530132 = nimCopy(result_788530132, Temporary1, NTI1509949571); + + return result_788530132; + +} + +function foldTokens_788530078(parserResult_788530080, onError_788530082, onSuccess_788530084) { + var Temporary1; + var Temporary2; + + var result_788530085 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + if (parserResult_788530080.o) { + if (!(parserResult_788530080.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `parserResult.o` ")); + } + + var Temporary2 = parserResult_788530080; + if (ConstSet53[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = onSuccess_788530084(Temporary2.v.tokens); + } + else { + var err_788530105 = error_1275069001(parserResult_788530080); + Temporary1 = onError_788530082(err_788530105); + } + + result_788530085 = nimCopy(result_788530085, Temporary1, NTI1509949571); + + return result_788530085; + +} + +function tryParser_788530234(builder_788530236, parser_788530237) { + builder_788530236 = nimCopy(null, builder_788530236, NTI1509949555); + +function HEX3Aanonymous_788530268(err_788530269) { + var result_788530270 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530270 = nimCopy(result_788530270, {o: false, e: nimCopy(null, {Field0: nimCopy(null, builder_788530236, NTI1509949555), Field1: makeNimstrLit("Error")}, NTI1509949569), v: {Field0: null, Field1: []}}, NTI1509949571); + + return result_788530270; + + } + +function HEX3Aanonymous_788530276(newTokens_788530277) { + var result_788530278 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530278 = nimCopy(result_788530278, {o: true, v: nimCopy(null, builder_788530236, NTI1509949555), e: {Field0: {Field0: null, Field1: []}, Field1: []}}, NTI1509949571); + + return result_788530278; + + } + + var result_788530238 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530238 = nimCopy(result_788530238, foldTokens_788530078(flatMap_1275068576({o: true, v: {state: builder_788530236["Field0"].state, tokens: []}, e: null}, parser_788530237), HEX3Aanonymous_788530268, HEX3Aanonymous_788530276), NTI1509949571); + + return result_788530238; + +} + +function tryParser_788530210(builder_788530212, parser_788530213) { + +function HEX3Aanonymous_788530221(x_788530223) { + var result_788530224 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530224 = nimCopy(result_788530224, tryParser_788530234(x_788530223, parser_788530213), NTI1509949571); + + return result_788530224; + + } + + var result_788530214 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530214 = nimCopy(result_788530214, flatMap_788530125(builder_788530212, HEX3Aanonymous_788530221), NTI1509949571); + + return result_788530214; + +} + +function parseSeq_1275069204(parser_1275069205, xs_1275069208) { + var result_1275069209 = ({o: false, e: null, v: null}); + + var resultHEX60gensym42_1275069212 = nimCopy(null, parser_1275069205, NTI1442840603); + Label1: do { + var xHEX60gensym42_1275069216 = null; + var xHEX60gensym42_1275069216_Idx = 0; + var i_788530578 = 0; + var L_788530579 = (xs_1275069208).length; + Label2: do { + Label3: while (true) { + if (!(i_788530578 < L_788530579)) break Label3; + xHEX60gensym42_1275069216 = xs_1275069208; xHEX60gensym42_1275069216_Idx = chckIndx(i_788530578, 0, (xs_1275069208).length - 1); + var a_1275069217 = nimCopy(null, resultHEX60gensym42_1275069212, NTI1442840603); + var b_1275069218 = xHEX60gensym42_1275069216[xHEX60gensym42_1275069216_Idx]; + resultHEX60gensym42_1275069212 = nimCopy(resultHEX60gensym42_1275069212, flatMap_1275068576(a_1275069217, b_1275069218), NTI1442840603); + i_788530578 = addInt(i_788530578, 1); + if (!(((xs_1275069208).length == L_788530579))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1275069209 = nimCopy(result_1275069209, resultHEX60gensym42_1275069212, NTI1442840603); + + return result_1275069209; + +} + +function initBuilder_788530060(t_788530062, parser_788530063, tree_788530064) { + var result_788530065 = {Field0: null, Field1: []}; + + result_788530065 = nimCopy(result_788530065, {Field0: parser_788530063, Field1: nimCopy(null, tree_788530064, NTI788529845)}, NTI1509949555); + + return result_788530065; + +} + +function isEmpty_788530052(o_788530054) { + var result_788530055 = false; + + result_788530055 = (o_788530054.kind == 0); + + return result_788530055; + +} + +function isDefined_788530046(o_788530048) { + var result_788530049 = false; + + result_788530049 = !(isEmpty_788530052(o_788530048)); + + return result_788530049; + +} + +function getOrElse_788530039(o_788530041, d_788530042) { + var Temporary1; + var Temporary2; + + var result_788530043 = []; + + if (isDefined_788530046(o_788530041)) { + var Temporary2 = o_788530041; + if (ConstSet56[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1291845635)); } + Temporary1 = Temporary2.value; + } + else { + Temporary1 = d_788530042; + } + + result_788530043 = nimCopy(null, Temporary1, NTI788529769); + + return result_788530043; + +} + +function isEmpty_788529908(o_788529910) { + var result_788529911 = false; + + result_788529911 = (o_788529910.kind == 0); + + return result_788529911; + +} + +function isDefined_788529902(o_788529904) { + var result_788529905 = false; + + result_788529905 = !(isEmpty_788529908(o_788529904)); + + return result_788529905; + +} + +function Just_788530008(value_788530010) { + var result_788530011 = null; + + result_788530011 = {kind: 1, value: nimCopy(null, value_788530010, NTI788529769)}; + + return result_788530011; + +} + +function just_788530004(value_788530006) { + var result_788530007 = null; + + result_788530007 = Just_788530008(value_788530006); + + return result_788530007; + +} + +function Nothing_788530028() { + var result_788530030 = null; + + result_788530030 = {kind: 0, value: []}; + + return result_788530030; + +} + +function nothing_788530022() { + var result_788530027 = null; + + result_788530027 = Nothing_788530028(); + + return result_788530027; + +} + +function map_788529990(o_788529993, f_788529995) { + var Temporary1; + var Temporary2; + + var result_788529998 = null; + + if (isDefined_788529902(o_788529993)) { + var Temporary2 = o_788529993; + if (ConstSet57[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1291845635)); } + Temporary1 = just_788530004(f_788529995(Temporary2.value)); + } + else { + Temporary1 = nothing_788530022(); + } + + result_788529998 = Temporary1; + + return result_788529998; + +} + +function orElse_788529928(o_788529930, d_788529931) { + var Temporary1; + + var result_788529932 = null; + + if (isDefined_788529902(o_788529930)) { + Temporary1 = o_788529930; + } + else { + Temporary1 = d_788529931; + } + + result_788529932 = Temporary1; + + return result_788529932; + +} + +function Nothing_788529815() { + var result_788529817 = null; + + result_788529817 = {kind: 0, value: null}; + + return result_788529817; + +} + +function nothing_788529809() { + var result_788529814 = null; + + result_788529814 = Nothing_788529815(); + + return result_788529814; + +} + +function filter_788529894(o_788529896, p_788529898) { + var Temporary1; + var Temporary2; + var Temporary3; + + var result_788529899 = null; + + if (!isDefined_788529902(o_788529896)) Temporary2 = false; else { var Temporary3 = o_788529896; + if (ConstSet58[Temporary3.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'value\' is not accessible for type \'Maybe\' using \'kind = "), reprDiscriminant(Temporary3.kind, NTI1291845635)); } + Temporary2 = p_788529898(Temporary3.value); } if (Temporary2) { + Temporary1 = o_788529896; + } + else { + Temporary1 = nothing_788529809(); + } + + result_788529899 = Temporary1; + + return result_788529899; + +} + +function Just_788529841(value_788529843) { + var result_788529844 = null; + + result_788529844 = {kind: 1, value: value_788529843}; + + return result_788529844; + +} + +function just_788529837(value_788529839) { + var result_788529840 = null; + + result_788529840 = Just_788529841(value_788529839); + + return result_788529840; + +} + +function HEX5BHEX5D_788529828(s_788529830, i_788529831) { + var result_788529832 = null; + + result_788529832 = s_788529830[chckIndx(subInt((s_788529830).length, i_788529831), 0, (s_788529830).length - 1)]; + + return result_788529832; + +} + +function last_788529800(xs_788529802) { + var Temporary1; + + var result_788529805 = null; + + if (((xs_788529802).length == 0)) { + Temporary1 = nothing_788529809(); + } + else { + Temporary1 = just_788529837(HEX5BHEX5D_788529828(xs_788529802, 1)); + } + + result_788529805 = Temporary1; + + return result_788529805; + +} + +function applyParsersToSingle_788529735(builder_788529737, parsers_788529738, tokenFoldFn_788529741, optional_788529742, initT_788529743, isFirst_788529744) { + builder_788529737 = nimCopy(null, builder_788529737, NTI1509949555); + +function HEX3Aanonymous_788529754(err_788529755) { + var result_788529756 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788529756 = nimCopy(result_788529756, {o: false, e: nimCopy(null, {Field0: nimCopy(null, builder_788529737, NTI1509949555), Field1: makeNimstrLit("foo")}, NTI1509949569), v: {Field0: null, Field1: []}}, NTI1509949571); + + return result_788529756; + + } + +function HEX3Aanonymous_788529771(newTokens_788529772) { + var Temporary1; + var Temporary2; + +function HEX3Aanonymous_788529866(x_788529885) { + var result_788529888 = false; + + result_788529888 = !(isFirst_788529744); + + return result_788529888; + + } + newTokens_788529772 = nimCopy(null, newTokens_788529772, NTI788529624); + +function HEX3Aanonymous_788529952(x_788529953) { + var result_788529954 = []; + + result_788529954 = nimCopy(null, [tokenFoldFn_788529741(newTokens_788529772, x_788529953)], NTI788529769); + + return result_788529954; + + } + + var result_788529773 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + if ((optional_788529742 && ((newTokens_788529772).length == 0))) { + Temporary1 = {o: true, v: nimCopy(null, builder_788529737, NTI1509949555), e: {Field0: {Field0: null, Field1: []}, Field1: []}}; + } + else { + if (!(newParser_788529753.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `newParser.o` ")); + } + + var Temporary2 = newParser_788529753; + if (ConstSet55[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = {o: true, v: nimCopy(null, initBuilder_788530060(builder_788529737, Temporary2.v, getOrElse_788530039(map_788529990(orElse_788529928(filter_788529894(last_788529800(builder_788529737.Field1), HEX3Aanonymous_788529866), just_788529837(initT_788529743)), HEX3Aanonymous_788529952), newSeq_1509949597(0))), NTI1509949555), e: {Field0: {Field0: null, Field1: []}, Field1: []}}; + } + + result_788529773 = nimCopy(result_788529773, Temporary1, NTI1509949571); + + return result_788529773; + + } + + var result_788529745 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + var newParser_788529753 = parseSeq_1275069204({o: true, v: {state: builder_788529737["Field0"].state, tokens: []}, e: null}, parsers_788529738); + result_788529745 = nimCopy(result_788529745, foldTokens_788530078(newParser_788529753, HEX3Aanonymous_788529754, HEX3Aanonymous_788529771), NTI1509949571); + + return result_788529745; + +} + +function HEX3DHEX3D_788529678(x_788529680, y_788529681) { + var result_788529682 = false; + + BeforeRet: do { + var sameObject_788529689 = false; + sameObject_788529689 = x_788529680 === y_788529681 + if (sameObject_788529689) { + result_788529682 = true; + break BeforeRet; + } + + if (!(((x_788529680).length == (y_788529681).length))) { + result_788529682 = false; + break BeforeRet; + } + + Label1: do { + var i_788529703 = 0; + var colontmp__788530582 = 0; + colontmp__788530582 = subInt((x_788529680).length, 1); + var res_788530583 = 0; + Label2: do { + Label3: while (true) { + if (!(res_788530583 <= colontmp__788530582)) break Label3; + i_788529703 = res_788530583; + if (!((x_788529680[chckIndx(i_788529703, 0, (x_788529680).length - 1)] == y_788529681[chckIndx(i_788529703, 0, (y_788529681).length - 1)]))) { + result_788529682 = false; + break BeforeRet; + } + + res_788530583 = addInt(res_788530583, 1); + } + } while (false); + } while (false); + result_788529682 = true; + break BeforeRet; + } while (false); + + return result_788529682; + +} + +function HEX3DHEX3D_788529664(x_788529666, y_788529667) { + var result_788529668 = false; + + BeforeRet: do { + if (!((x_788529666["Field0"] == y_788529667["Field0"]))) { + result_788529668 = false; + break BeforeRet; + } + + if (!(HEX3DHEX3D_788529678(x_788529666["Field1"], y_788529667["Field1"]))) { + result_788529668 = false; + break BeforeRet; + } + + result_788529668 = true; + break BeforeRet; + } while (false); + + return result_788529668; + +} + +function HEX3DHEX3D_788529708(x_788529710, y_788529711) { + var result_788529712 = false; + + BeforeRet: do { + if (!(HEX3DHEX3D_788529664(x_788529710["Field0"], y_788529711["Field0"]))) { + result_788529712 = false; + break BeforeRet; + } + + if (!(eqStrings(x_788529710["Field1"], y_788529711["Field1"]))) { + result_788529712 = false; + break BeforeRet; + } + + result_788529712 = true; + break BeforeRet; + } while (false); + + return result_788529712; + +} + +function HEX3DHEX3D_788529643(lhs_788529648, rhs_788529649) { + var Temporary1; + var Temporary2; + var Temporary3; + var Temporary4; + var Temporary5; + + var result_788529650 = false; + + if (!((lhs_788529648.o == rhs_788529649.o))) { + Temporary1 = false; + } + else { + if (lhs_788529648.o) { + var Temporary2 = lhs_788529648; + if (ConstSet59[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + var Temporary3 = rhs_788529649; + if (ConstSet60[Temporary3.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary3.o, NTI33554466)); } + Temporary1 = HEX3DHEX3D_788529664(Temporary2.v, Temporary3.v); + } + else { + var Temporary4 = lhs_788529648; + if (ConstSet61[Temporary4.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary4.o, NTI33554466)); } + var Temporary5 = rhs_788529649; + if (ConstSet62[Temporary5.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary5.o, NTI33554466)); } + Temporary1 = HEX3DHEX3D_788529708(Temporary4.e, Temporary5.e); + } + } + result_788529650 = Temporary1; + + return result_788529650; + +} + +function applyParsersSeqToSingle_788529571(builderResult_788529573, initT_788529574, xs_788529584) { + builderResult_788529573 = nimCopy(null, builderResult_788529573, NTI1509949571); + +function HEX3Aanonymous_788529619(builder_788529621) { + var result_788529622 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788529622 = nimCopy(result_788529622, applyParsersToSingle_788529735(builder_788529621, b_788529612.Field0, b_788529612.Field1, b_788529612.Field2, initT_788529574, HEX3DHEX3D_788529643(a_788529611, builderResult_788529573)), NTI1509949571); + + return result_788529622; + + } + + var result_788529585 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + var resultHEX60gensym4_788529588 = nimCopy(null, builderResult_788529573, NTI1509949571); + Label1: do { + var xHEX60gensym4_788529610 = null; + var i_788530574 = 0; + var L_788530575 = (xs_788529584).length; + Label2: do { + Label3: while (true) { + if (!(i_788530574 < L_788530575)) break Label3; + xHEX60gensym4_788529610 = xs_788529584[chckIndx(i_788530574, 0, (xs_788529584).length - 1)]; + var a_788529611 = nimCopy(null, resultHEX60gensym4_788529588, NTI1509949571); + var b_788529612 = nimCopy(null, xHEX60gensym4_788529610, NTI788529496); + resultHEX60gensym4_788529588 = nimCopy(resultHEX60gensym4_788529588, flatMap_788530125(a_788529611, HEX3Aanonymous_788529619), NTI1509949571); + i_788530574 = addInt(i_788530574, 1); + if (!(((xs_788529584).length == L_788530575))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_788529585 = nimCopy(result_788529585, resultHEX60gensym4_788529588, NTI1509949571); + + return result_788529585; + +} + +function tryBuildHeading_788529549(builder_788529550) { + var result_788529551 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788529551 = nimCopy(result_788529551, applyParsersSeqToSingle_788529571(builder_788529550, {kind: 0, children: [], level: 0, todo: ({val: [], has: false}), headlineContent: [], headlineChildrenText: []}, [nimCopy(null, {Field0: nimCopy(null, parseHeadingStars_788529171, NTI1275069021), Field1: buildStars_788529262, Field2: false}, NTI788529466), nimCopy(null, {Field0: [optional_1275068592(parseTodoKeyword_788529234)], Field1: buildTodo_788529281, Field2: true}, NTI788529466), nimCopy(null, {Field0: [optional_1275068592(parseDoneKeyword_788529235)], Field1: buildTodo_788529281, Field2: true}, NTI788529466), nimCopy(null, {Field0: nimCopy(null, parseHeadingText_788529254, NTI1275069021), Field1: buildHeadlineContent_788529493, Field2: false}, NTI788529466), nimCopy(null, {Field0: nimCopy(null, parseContentText_788529244, NTI1275069021), Field1: buildHeadlineChildren_788529498, Field2: true}, NTI788529466), nimCopy(null, {Field0: nimCopy(null, parseHeadlineNewline_788529249, NTI1275069021), Field1: buildHeadlineNewline_788529503, Field2: true}, NTI788529466), nimCopy(null, {Field0: nimCopy(null, parseHeadlineNewline_788529249, NTI1275069021), Field1: buildHeadlineNewline_788529503, Field2: false}, NTI788529466)]), NTI1509949571); + + return result_788529551; + +} + +function HEX26_788530346(x_788530348, y_788530349) { + var result_788530350 = []; + + result_788530350 = new Array(chckRange(addInt((x_788530348).length, (y_788530349).length), 0, 2147483647)); for (var i = 0 ; i < chckRange(addInt((x_788530348).length, (y_788530349).length), 0, 2147483647) ; ++i) { result_788530350[i] = null; } Label1: do { + var i_788530368 = 0; + var colontmp__788530586 = 0; + colontmp__788530586 = subInt((x_788530348).length, 1); + var res_788530587 = 0; + Label2: do { + Label3: while (true) { + if (!(res_788530587 <= colontmp__788530586)) break Label3; + i_788530368 = res_788530587; + result_788530350[chckIndx(i_788530368, 0, (result_788530350).length - 1)] = x_788530348[chckIndx(i_788530368, 0, (x_788530348).length - 1)]; + res_788530587 = addInt(res_788530587, 1); + } + } while (false); + } while (false); + Label4: do { + var i_788530376 = 0; + var colontmp__788530590 = 0; + colontmp__788530590 = subInt((y_788530349).length, 1); + var res_788530591 = 0; + Label5: do { + Label6: while (true) { + if (!(res_788530591 <= colontmp__788530590)) break Label6; + i_788530376 = res_788530591; + result_788530350[chckIndx(addInt(i_788530376, (x_788530348).length), 0, (result_788530350).length - 1)] = y_788530349[chckIndx(i_788530376, 0, (y_788530349).length - 1)]; + res_788530591 = addInt(res_788530591, 1); + } + } while (false); + } while (false); + + return result_788530350; + +} + +function formatValue_1526727035(result_1526727037, result_1526727037_Idx, value_1526727038, specifier_1526727039) { + formatValue_1107296418(result_1526727037, result_1526727037_Idx, reprEnum(value_1526727038, NTI1526726794), specifier_1526727039); + + +} + +function isSome_1526726886(self_1526726888) { + var result_1526726889 = false; + + result_1526726889 = self_1526726888.has; + + return result_1526726889; + +} + +function HEX24_1526726878(self_1526726880) { + var result_1526726881 = [[]]; + + if (isSome_1526726886(self_1526726880)) { + result_1526726881[0] = nimCopy(null, makeNimstrLit("some("), NTI33554439); + addQuoted_922747567(result_1526726881, 0, self_1526726880.val); + result_1526726881[0].push.apply(result_1526726881[0], makeNimstrLit(")"));; + } + else { + result_1526726881[0] = nimCopy(null, makeNimstrLit("none(string)"), NTI33554439); + } + + + return result_1526726881[0]; + +} + +function formatValue_1526726865(result_1526726867, result_1526726867_Idx, value_1526726868, specifier_1526726869) { + formatValue_1107296418(result_1526726867, result_1526726867_Idx, HEX24_1526726878(value_1526726868), specifier_1526726869); + + +} + +function formatValue_1526726899(result_1526726901, result_1526726901_Idx, value_1526726902, specifier_1526726903) { + formatValue_1107296418(result_1526726901, result_1526726901_Idx, HEX24_1526726904(value_1526726902), specifier_1526726903); + + +} + +function stringifySpecialFields_1526726856(x_1526726857) { + var Temporary1; + var Temporary2; + var Temporary3; + var Temporary4; + var Temporary5; + +function HEX3Aanonymous_1526726985(x_1526726988) { + var result_1526726991 = []; + + result_1526726991 = nimCopy(null, nsuIndent(x_1526726988, 2, makeNimstrLit(" ")), NTI33554439); + + return result_1526726991; + + } + +function HEX3Aanonymous_1526727009(x_1526727012) { + var result_1526727015 = []; + + result_1526727015 = nimCopy(null, (makeNimstrLit("\x0A") || []).concat(x_1526727012 || [],makeNimstrLit("\x0A") || []), NTI33554439); + + return result_1526727015; + + } + + var result_1526726858 = []; + + switch (x_1526726857.kind) { + case 0: + var fmtRes_1526726859 = [mnewString(0)]; + fmtRes_1526726859[0].push.apply(fmtRes_1526726859[0], makeNimstrLit("level: "));; + var Temporary2 = x_1526726857; + if (ConstSet64[Temporary2.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'level\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary2.kind, NTI1526726794)); } + formatValue_922747076(fmtRes_1526726859, 0, Temporary2.level, []); + fmtRes_1526726859[0].push.apply(fmtRes_1526726859[0], makeNimstrLit("\x0Atodo: "));; + var Temporary3 = x_1526726857; + if (ConstSet65[Temporary3.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'todo\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary3.kind, NTI1526726794)); } + formatValue_1526726865(fmtRes_1526726859, 0, Temporary3.todo, []); + fmtRes_1526726859[0].push.apply(fmtRes_1526726859[0], makeNimstrLit("\x0AheadlineContent: "));; + var Temporary4 = x_1526726857; + if (ConstSet66[Temporary4.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'headlineContent\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary4.kind, NTI1526726794)); } + formatValue_1526726899(fmtRes_1526726859, 0, Temporary4.headlineContent, []); + fmtRes_1526726859[0].push.apply(fmtRes_1526726859[0], makeNimstrLit("\x0AheadlineChildrenText: "));; + var Temporary5 = x_1526726857; + if (ConstSet67[Temporary5.kind]===undefined) { raiseFieldError2(makeNimstrLit("field \'headlineChildrenText\' is not accessible for type \'OrgBlock\' using \'kind = "), reprDiscriminant(Temporary5.kind, NTI1526726794)); } + formatValue_1107296418(fmtRes_1526726859, 0, Temporary5.headlineChildrenText, []); + Temporary1 = fmtRes_1526726859[0]; + break; + default: + Temporary1 = []; + break; + } + var specialFields_1526726971 = nimCopy(null, Temporary1, NTI33554439); + result_1526726858 = nimCopy(null, getOrElse_1526726750(map_1526726709(map_1526726709(notEmpty_1291845673(just_1526726732(specialFields_1526726971)), HEX3Aanonymous_1526726985), HEX3Aanonymous_1526727009), []), NTI33554439); + + return result_1526726858; + +} + +function HEX24_1526727031(x_1526727032) { + var result_1526727033 = []; + + var fmtRes_1526727034 = [mnewString(0)]; + fmtRes_1526727034[0].push.apply(fmtRes_1526727034[0], makeNimstrLit("OrgBlock(\x0A kind: "));; + formatValue_1526727035(fmtRes_1526727034, 0, x_1526727032.kind, []); + var fmtRes_1526727043 = [mnewString(0)]; + fmtRes_1526727043[0].push.apply(fmtRes_1526727043[0], makeNimstrLit(" children: "));; + formatValue_1526726899(fmtRes_1526727043, 0, x_1526727032.children, []); + fmtRes_1526727043[0].push.apply(fmtRes_1526727043[0], makeNimstrLit("\x0A)\x0A"));; + result_1526727033 = nimCopy(null, (fmtRes_1526727034[0] || []).concat(stringifySpecialFields_1526726856(x_1526727032) || [],fmtRes_1526727043[0] || []), NTI33554439); + + return result_1526727033; + +} + +function addQuoted_1526727104(s_1526727106, s_1526727106_Idx, x_1526727107) { + s_1526727106[s_1526727106_Idx].push.apply(s_1526727106[s_1526727106_Idx], HEX24_1526727031(x_1526727107));; + + +} + +function collectionToString_1526727065(x_1526727067, prefix_1526727068, separator_1526727069, suffix_1526727070) { + var result_1526727071 = [[]]; + + result_1526727071[0] = nimCopy(null, prefix_1526727068, NTI33554439); + var firstElement_1526727072 = true; + Label1: do { + var value_1526727094 = null; + var value_1526727094_Idx = 0; + var i_788530595 = 0; + var L_788530596 = (x_1526727067).length; + Label2: do { + Label3: while (true) { + if (!(i_788530595 < L_788530596)) break Label3; + value_1526727094 = x_1526727067; value_1526727094_Idx = i_788530595; + if (firstElement_1526727072) { + firstElement_1526727072 = false; + } + else { + result_1526727071[0].push.apply(result_1526727071[0], separator_1526727069);; + } + + if ((value_1526727094[value_1526727094_Idx] == null)) { + result_1526727071[0].push.apply(result_1526727071[0], makeNimstrLit("nil"));; + } + else { + addQuoted_1526727104(result_1526727071, 0, value_1526727094[value_1526727094_Idx]); + } + + i_788530595 += 1; + if (!(((x_1526727067).length == L_788530596))) { + failedAssertImpl_218103864(makeNimstrLit("iterators.nim:240:11 `len(a) == L` the length of the seq changed while iterating over it")); + } + + } + } while (false); + } while (false); + result_1526727071[0].push.apply(result_1526727071[0], suffix_1526727070);; + + return result_1526727071[0]; + +} + +function HEX24_1526727061(x_1526727063) { + var result_1526727064 = []; + + result_1526727064 = nimCopy(null, collectionToString_1526727065(x_1526727063, makeNimstrLit("@["), makeNimstrLit(", "), makeNimstrLit("]")), NTI33554439); + + return result_1526727064; + +} + +function addQuoted_788530455(s_788530457, s_788530457_Idx, x_788530458) { + s_788530457[s_788530457_Idx].push.apply(s_788530457[s_788530457_Idx], HEX24_1526727061(x_788530458));; + + +} + +function HEX24_788530412(x_788530414) { + var result_788530415 = [[]]; + + result_788530415[0] = nimCopy(null, makeNimstrLit("("), NTI33554439); + var count_788530421 = 0; + if ((0 < count_788530421)) { + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit(", "));; + } + + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit("parser"));; + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit(": "));; + count_788530421 += 1; + if ((x_788530414["Field0"] == null)) { + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit("nil"));; + } + else { + addQuoted_788529437(result_788530415, 0, x_788530414["Field0"]); + } + + if ((0 < count_788530421)) { + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit(", "));; + } + + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit("tree"));; + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit(": "));; + count_788530421 += 1; + addQuoted_788530455(result_788530415, 0, x_788530414["Field1"]); + result_788530415[0].push.apply(result_788530415[0], makeNimstrLit(")"));; + + return result_788530415[0]; + +} + +function raiseResultDefect_788530498(m_788530500, v_788530501) { + raiseException({message: (m_788530500 || []).concat(makeNimstrLit(": ") || [],HEX24_788530412(v_788530501) || []), m_type: NTI1224736772, parent: null, name: null, trace: [], up: null}, "ResultDefect"); + + +} + +function error_788530493(self_788530496) { + var Temporary1; + var Temporary2; + + var result_788530497 = {Field0: {Field0: null, Field1: []}, Field1: []}; + + if (self_788530496.o) { + var Temporary1 = self_788530496; + if (ConstSet68[Temporary1.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary1.o, NTI33554466)); } + raiseResultDefect_788530498(makeNimstrLit("Trying to access error when value is set"), Temporary1.v); + } + + var Temporary2 = self_788530496; + if (ConstSet69[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'e\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + result_788530497 = nimCopy(result_788530497, Temporary2.e, NTI1509949569); + + return result_788530497; + +} + +function fold_788530472(self_788530476, onError_788530478, onSuccess_788530480) { + var Temporary1; + var Temporary2; + + var result_788530481 = []; + + if (self_788530476.o) { + if (!(self_788530476.o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `self.o` ")); + } + + var Temporary2 = self_788530476; + if (ConstSet63[Temporary2.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary2.o, NTI33554466)); } + Temporary1 = onSuccess_788530480(Temporary2.v); + } + else { + Temporary1 = onError_788530478(error_788530493(self_788530476)); + } + + result_788530481 = nimCopy(null, Temporary1, NTI33554439); + + return result_788530481; + +} + var Temporary53; + +function HEX3Aanonymous_788530339(x_788530340) { + var result_788530341 = ({o: false, e: {Field0: {Field0: null, Field1: []}, Field1: []}, v: {Field0: null, Field1: []}}); + + result_788530341 = nimCopy(result_788530341, {o: true, v: nimCopy(null, {Field0: x_788530340.Field0, Field1: HEX26_788530346(unsafeAcc_788530328.Field1, x_788530340.Field1)}, NTI1509949555), e: {Field0: {Field0: null, Field1: []}, Field1: []}}, NTI1509949571); + + return result_788530341; + +} + +function HEX3Aanonymous_788530396(err_788530399) { + var result_788530402 = []; + + result_788530402 = nimCopy(null, (err_788530399["Field1"] || []).concat(makeNimstrLit("\x0A") || [],HEX24_788530412(err_788530399["Field0"]) || []), NTI33554439); + + return result_788530402; + +} + +function HEX3Aanonymous_788530465(builder_788530466) { + var result_788530467 = []; + + result_788530467 = nimCopy(null, HEX24_1526727061(builder_788530466.Field1), NTI33554439); + + return result_788530467; + +} +var test1_788530197 = makeNimstrLit("* TODO Level 1\x0ASome stuff inbetween\x0A\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A** DONE Level 2\x0A"); +var test1_2_788530198 = makeNimstrLit("* TODO Failing\x0A\x0A*\x0A** Level 2"); +var acc_788530199 = [initOrgBuilder_1509949586(test1_788530197)]; +Label51: do { + Label52: while (true) { + if (!(acc_788530199[0].o && !(tryParser_788530210(acc_788530199[0], endOfStream_1275069241).o))) break Label52; + if (!(acc_788530199[0].o)) { + failedAssertImpl_218103864(makeNimstrLit("results.nim:725:10 `acc.o` ")); + } + + var Temporary53 = acc_788530199[0]; + if (ConstSet54[Temporary53.o]===undefined) { raiseFieldError2(makeNimstrLit("field \'v\' is not accessible for type \'Result\' using \'o = "), reprDiscriminant(Temporary53.o, NTI33554466)); } + var unsafeAcc_788530328 = nimCopy(null, Temporary53.v, NTI1509949555); + var item_788530392 = flatMap_788530125(tryBuildHeading_788529549(acc_788530199[0]), HEX3Aanonymous_788530339); + acc_788530199[0] = nimCopy(acc_788530199[0], item_788530392, NTI1509949571); + } +} while (false); +rawEcho(fold_788530472(acc_788530199[0], HEX3Aanonymous_788530396, HEX3Aanonymous_788530465)); diff --git a/src/org/org_block_heading.nim b/src/org/org_block_heading.nim index e51adcb..90ef254 100644 --- a/src/org/org_block_heading.nim +++ b/src/org/org_block_heading.nim @@ -32,7 +32,7 @@ let parseTodoKeyword = todoKeywords.createTodoKeywordParser() let parseDoneKeyword = doneKeywords.createTodoKeywordParser() let parseContentText = @[ - anyUntil(choice(@[endOfStream, str("\n*")])), + anyUntilPerformant(choice(@[endOfStream, str("\n*")])), ] let parseHeadlineNewline = @[ @@ -40,7 +40,7 @@ let parseHeadlineNewline = @[ ] let parseHeadingText = @[ - anyUntil(newline), + anyUntilPerformant(newline), ] # func buildStars(token: seq[ParserToken]): seq[ParserToken] = @@ -71,7 +71,7 @@ let buildHeadlineContent = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlo let buildHeadlineChildren = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}= # let headlineString = tokens.tokensToString() - org.headlineChildrenText = tokens.tokensToString() + # org.headlineChildrenText = tokens.tokensToString() org let buildHeadlineNewline = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}= @@ -92,26 +92,20 @@ proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult = (parseContentText, buildHeadlineChildren, true), - (parseHeadlineNewline, buildHeadlineContent, true), - + (parseHeadlineNewline, buildHeadlineNewline, true), (parseHeadlineNewline, buildHeadlineNewline, false), ] ) -when isMainModule: - - - var acc = initOrgBuilder("""* TODO Level 1 -** TODO Level 2 -""") +proc makeOrg*(x: string): OrgBuilderResult = + var acc = initOrgBuilder(x) while acc.isOk() and acc.tryParser(endOfStream).isErr(): let unsafeAcc = acc.unsafeGet() let item = acc .tryBuildHeading() - .fold( - err => OrgBuilderResult.err((unsafeAcc, "Error")), + .flatMap( (x: OrgBuilder) => OrgBuilderResult.ok(OrgBuilder(( parser: x.parser, tree: unsafeAcc.tree & x.tree, @@ -120,35 +114,34 @@ when isMainModule: acc = item - echo acc + acc -# let sampleBuilder = StringBuilderResult -# .ok(StringBuilder(( -# parser: initParser("""**** TODO Some stars -# :PROPERTIES: -# :PROP_NAME: Value -# :PROP_NAME: Value -# :PROP_NAME: Value -# :PROP_NAME: Value -# :PROPERTIES_END: +proc foldOrg*(x: OrgBuilderResult): seq[string] = + x + .fold( + (err) => @["Error"], + (builder: OrgBuilder) => builder.tree.map((x: OrgBlock) => $x.headlineContent), + ) + # echo acc.unsafeGet().tree[^1] -# Foo -# """), -# tree: newSeq[StringBuilderT](), -# ))) -# .applyParsersSeq(@[ -# (parseHeadingStars, stringConcat("Stars: ")), +when isMainModule: + # import nimprof + # import timeit + + let test1 = """* TODO Level 1 +Some stuff inbetween -# (@[optional(parseTodoKeyword)], stringConcat("TODO: ")), -# (@[optional(parseDoneKeyword)], stringConcat("DONE: ")), +** DONE Level 2 """ -# (parseHeadingText, stringConcat("Text: ")), -# (parseProperties, stringConcat("Properties: ", seperator = ", ")), -# # (@[optional(choice(parseProperties))], stringConcat("Properties: ")), -# ]) -# .foldBuilder( -# err => &"Error Parsing: {err}", -# xs => "Parser Succesfull:\n" & xs.join("\n"), -# ) + let test1_2 = """* TODO Failing -# echo sampleBuilder +* +** Level 2""" + + # let test2 = readFile("/home/floscr/Documents/Org/Bookmarks/bookmarks.org") + # let test2 = readFile("/tmp/gtd.org") + + var acc = makeOrg(test1) + + echo acc .foldOrg() + # echo acc.unsafeGet().tree[^1] diff --git a/src/parser/parser_internals.nim b/src/parser/parser_internals.nim index bde6c2e..cc54e92 100644 --- a/src/parser/parser_internals.nim +++ b/src/parser/parser_internals.nim @@ -108,6 +108,32 @@ func ignore*(parserFn: Parser -> ParserResult): (Parser -> ParserResult) {.inlin tokens: parser.tokens, )) +func manyUntilPerformant*(acceptFn: Parser -> ParserResult, stopFn: Parser -> ParserResult): (Parser -> ParserResult) {.inline.} = + ## Parse characters but throw success tokens away + return proc(parser: Parser): ParserResult = + let startPosition = parser.state.position + var res: ParserResult = parser.ok() + + while res.isOk() and res.flatMap(stopFn).isErr(): + res = res.flatMap(acceptFn) + + return res.map((p: Parser) => Parser( + state: ParserState( + stream: p.state.stream, + position: p.state.position, + lastPosition: p.state.lastPosition, + ), + tokens: @[ + ParserToken( + kind: parserTokenString, + stringValue: p.state.stream[(startPosition - 1)..p.state.position], + ) + ] + )) + +proc anyUntilPerformant*(stopFn: Parser -> ParserResult): (Parser -> ParserResult) {.inline.} = + manyUntilPerformant(anyCh, stopFn) + func manyUntil*(acceptFn: Parser -> ParserResult, stopFn: Parser -> ParserResult): (Parser -> ParserResult) {.inline.} = ## Parse characters but throw success tokens away return proc(parser: Parser): ParserResult =