├── docs
├── dochack.js
├── nimdoc.out.css
└── patgraph.html
├── patgraph.nim
├── patgraph.nimble
└── readme.md
/docs/dochack.js:
--------------------------------------------------------------------------------
1 | /* Generated by the Nim Compiler v1.9.1 */
2 | var framePtr = null;
3 | var excHandler = 0;
4 | var lastJSError = null;
5 | var NTI687865870 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
6 | var NTI536871446 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
7 | var NTI671088733 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
8 | var NTI671088732 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
9 | var NTI671088731 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
10 | var NTI671088730 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
11 | var NTI671088729 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
12 | var NTI671088728 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
13 | var NTI671088727 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
14 | var NTI671088726 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
15 | var NTI671088725 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
16 | var NTI671088724 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
17 | var NTI671088723 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
18 | var NTI671088722 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
19 | var NTI671088721 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
20 | var NTI671088720 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
21 | var NTI671088719 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
22 | var NTI671088718 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
23 | var NTI671088717 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
24 | var NTI671088716 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
25 | var NTI671088715 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
26 | var NTI671088714 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
27 | var NTI671088713 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
28 | var NTI671088712 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
29 | var NTI671088711 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
30 | var NTI671088710 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
31 | var NTI671088709 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
32 | var NTI671088782 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
33 | var NTI671088670 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
34 | var NTI671088829 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
35 | var NTI671088826 = {size: 0,kind: 25,base: null,node: null,finalizer: null};
36 | var NTI671088825 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
37 | var NTI671088705 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
38 | var NTI671088828 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
39 | var NTI671088706 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
40 | var NTI671088775 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
41 | var NTI671088664 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
42 | var NTI671088764 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
43 | var NTI671088776 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
44 | var NTI671088665 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
45 | var NTI671088763 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
46 | var NTI671088762 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
47 | var NTI671088781 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
48 | var NTI671088669 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
49 | var NTI671088761 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
50 | var NTI671088760 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
51 | var NTI671088777 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
52 | var NTI671088666 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
53 | var NTI671088759 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
54 | var NTI671088767 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
55 | var NTI671088778 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
56 | var NTI671088667 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
57 | var NTI671088766 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
58 | var NTI33554435 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
59 | var NTI671088780 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
60 | var NTI671088779 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
61 | var NTI671088668 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
62 | var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
63 | var NTI671088751 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
64 | var NTI671088654 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
65 | var NTI671088765 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
66 | var NTI671088658 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
67 | var NTI671088758 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
68 | var NTI671088657 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
69 | var NTI671088655 = {size: 0, kind: 14, base: null, node: null, finalizer: null};
70 | var NTI671088757 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
71 | var NTI671088756 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
72 | var NTI671088755 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
73 | var NTI671088754 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
74 | var NTI671088656 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
75 | var NTI671089087 = {size: 0, kind: 24, base: null, node: null, finalizer: null};
76 | var NTI134217745 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
77 | var NTI134217749 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
78 | var NTI134217751 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
79 | var NTI33555171 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
80 | var NTI33555179 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
81 | var NTI33554449 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
82 | var NTI33554450 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
83 | var NTI33555178 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
84 | var NTI33555175 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
85 | var NTI33555176 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
86 | var NTI134217741 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
87 | var NTI134217743 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
88 | var NNI134217743 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
89 | NTI134217743.node = NNI134217743;
90 | var NNI134217741 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
91 | NTI134217741.node = NNI134217741;
92 | var NNI33555176 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
93 | NTI33555176.node = NNI33555176;
94 | NTI33555178.base = NTI33555175;
95 | NTI33555179.base = NTI33555175;
96 | var NNI33555175 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555178, name: "parent", sons: null},
97 | {kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null},
98 | {kind: 1, offset: "message", len: 0, typ: NTI33554449, name: "msg", sons: null},
99 | {kind: 1, offset: "trace", len: 0, typ: NTI33554449, name: "trace", sons: null},
100 | {kind: 1, offset: "up", len: 0, typ: NTI33555179, name: "up", sons: null}]};
101 | NTI33555175.node = NNI33555175;
102 | var NNI33555171 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
103 | NTI33555171.node = NNI33555171;
104 | NTI33555175.base = NTI33555171;
105 | NTI33555176.base = NTI33555175;
106 | NTI134217741.base = NTI33555176;
107 | NTI134217743.base = NTI134217741;
108 | var NNI134217751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
109 | NTI134217751.node = NNI134217751;
110 | NTI134217751.base = NTI33555176;
111 | var NNI134217749 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
112 | NTI134217749.node = NNI134217749;
113 | NTI134217749.base = NTI33555176;
114 | var NNI134217745 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
115 | NTI134217745.node = NNI134217745;
116 | NTI134217745.base = NTI33555176;
117 | NTI671088755.base = NTI671088656;
118 | NTI671088756.base = NTI671088656;
119 | NTI671088757.base = NTI671088656;
120 | var NNI671088655 = {kind: 2, offset: 0, typ: null, name: null, len: 12, sons: {"1": {kind: 1, offset: 1, typ: NTI671088655, name: "ElementNode", len: 0, sons: null},
121 | "2": {kind: 1, offset: 2, typ: NTI671088655, name: "AttributeNode", len: 0, sons: null},
122 | "3": {kind: 1, offset: 3, typ: NTI671088655, name: "TextNode", len: 0, sons: null},
123 | "4": {kind: 1, offset: 4, typ: NTI671088655, name: "CDATANode", len: 0, sons: null},
124 | "5": {kind: 1, offset: 5, typ: NTI671088655, name: "EntityRefNode", len: 0, sons: null},
125 | "6": {kind: 1, offset: 6, typ: NTI671088655, name: "EntityNode", len: 0, sons: null},
126 | "7": {kind: 1, offset: 7, typ: NTI671088655, name: "ProcessingInstructionNode", len: 0, sons: null},
127 | "8": {kind: 1, offset: 8, typ: NTI671088655, name: "CommentNode", len: 0, sons: null},
128 | "9": {kind: 1, offset: 9, typ: NTI671088655, name: "DocumentNode", len: 0, sons: null},
129 | "10": {kind: 1, offset: 10, typ: NTI671088655, name: "DocumentTypeNode", len: 0, sons: null},
130 | "11": {kind: 1, offset: 11, typ: NTI671088655, name: "DocumentFragmentNode", len: 0, sons: null},
131 | "12": {kind: 1, offset: 12, typ: NTI671088655, name: "NotationNode", len: 0, sons: null}}};
132 | NTI671088655.node = NNI671088655;
133 | var NNI671088751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
134 | NTI671088751.node = NNI671088751;
135 | NTI671088751.base = NTI33555171;
136 | NTI671088654.base = NTI671088751;
137 | NTI671088780.base = NTI671088658;
138 | var NNI671088779 = {kind: 2, len: 10, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "acceptCharset", len: 0, typ: NTI33554450, name: "acceptCharset", sons: null},
139 | {kind: 1, offset: "action", len: 0, typ: NTI33554450, name: "action", sons: null},
140 | {kind: 1, offset: "autocomplete", len: 0, typ: NTI33554450, name: "autocomplete", sons: null},
141 | {kind: 1, offset: "elements", len: 0, typ: NTI671088780, name: "elements", sons: null},
142 | {kind: 1, offset: "encoding", len: 0, typ: NTI33554450, name: "encoding", sons: null},
143 | {kind: 1, offset: "enctype", len: 0, typ: NTI33554450, name: "enctype", sons: null},
144 | {kind: 1, offset: "length", len: 0, typ: NTI33554435, name: "length", sons: null},
145 | {kind: 1, offset: "method", len: 0, typ: NTI33554450, name: "method", sons: null},
146 | {kind: 1, offset: "noValidate", len: 0, typ: NTI33554466, name: "noValidate", sons: null},
147 | {kind: 1, offset: "target", len: 0, typ: NTI33554450, name: "target", sons: null}]};
148 | NTI671088779.node = NNI671088779;
149 | NTI671088779.base = NTI671088765;
150 | NTI671088668.base = NTI671088779;
151 | var NNI671088778 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "defaultSelected", len: 0, typ: NTI33554466, name: "defaultSelected", sons: null},
152 | {kind: 1, offset: "selected", len: 0, typ: NTI33554466, name: "selected", sons: null},
153 | {kind: 1, offset: "selectedIndex", len: 0, typ: NTI33554435, name: "selectedIndex", sons: null},
154 | {kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null},
155 | {kind: 1, offset: "value", len: 0, typ: NTI33554450, name: "value", sons: null}]};
156 | NTI671088778.node = NNI671088778;
157 | NTI671088778.base = NTI671088765;
158 | NTI671088667.base = NTI671088778;
159 | NTI671088766.base = NTI671088667;
160 | NTI671088767.base = NTI671088667;
161 | var NNI671088765 = {kind: 2, len: 20, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "className", len: 0, typ: NTI33554450, name: "className", sons: null},
162 | {kind: 1, offset: "classList", len: 0, typ: NTI671088654, name: "classList", sons: null},
163 | {kind: 1, offset: "checked", len: 0, typ: NTI33554466, name: "checked", sons: null},
164 | {kind: 1, offset: "defaultChecked", len: 0, typ: NTI33554466, name: "defaultChecked", sons: null},
165 | {kind: 1, offset: "defaultValue", len: 0, typ: NTI33554450, name: "defaultValue", sons: null},
166 | {kind: 1, offset: "disabled", len: 0, typ: NTI33554466, name: "disabled", sons: null},
167 | {kind: 1, offset: "form", len: 0, typ: NTI671088668, name: "form", sons: null},
168 | {kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null},
169 | {kind: 1, offset: "readOnly", len: 0, typ: NTI33554466, name: "readOnly", sons: null},
170 | {kind: 1, offset: "options", len: 0, typ: NTI671088766, name: "options", sons: null},
171 | {kind: 1, offset: "selectedOptions", len: 0, typ: NTI671088767, name: "selectedOptions", sons: null},
172 | {kind: 1, offset: "clientWidth", len: 0, typ: NTI33554435, name: "clientWidth", sons: null},
173 | {kind: 1, offset: "clientHeight", len: 0, typ: NTI33554435, name: "clientHeight", sons: null},
174 | {kind: 1, offset: "contentEditable", len: 0, typ: NTI33554450, name: "contentEditable", sons: null},
175 | {kind: 1, offset: "isContentEditable", len: 0, typ: NTI33554466, name: "isContentEditable", sons: null},
176 | {kind: 1, offset: "dir", len: 0, typ: NTI33554450, name: "dir", sons: null},
177 | {kind: 1, offset: "offsetHeight", len: 0, typ: NTI33554435, name: "offsetHeight", sons: null},
178 | {kind: 1, offset: "offsetWidth", len: 0, typ: NTI33554435, name: "offsetWidth", sons: null},
179 | {kind: 1, offset: "offsetLeft", len: 0, typ: NTI33554435, name: "offsetLeft", sons: null},
180 | {kind: 1, offset: "offsetTop", len: 0, typ: NTI33554435, name: "offsetTop", sons: null}]};
181 | NTI671088765.node = NNI671088765;
182 | NTI671088765.base = NTI671088754;
183 | NTI671088658.base = NTI671088765;
184 | var NNI671088777 = {kind: 2, len: 3, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null},
185 | {kind: 1, offset: "x", len: 0, typ: NTI33554435, name: "x", sons: null},
186 | {kind: 1, offset: "y", len: 0, typ: NTI33554435, name: "y", sons: null}]};
187 | NTI671088777.node = NNI671088777;
188 | NTI671088777.base = NTI671088765;
189 | NTI671088666.base = NTI671088777;
190 | NTI671088759.base = NTI671088666;
191 | NTI671088760.base = NTI671088668;
192 | var NNI671088781 = {kind: 2, len: 8, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "border", len: 0, typ: NTI33554435, name: "border", sons: null},
193 | {kind: 1, offset: "complete", len: 0, typ: NTI33554466, name: "complete", sons: null},
194 | {kind: 1, offset: "height", len: 0, typ: NTI33554435, name: "height", sons: null},
195 | {kind: 1, offset: "hspace", len: 0, typ: NTI33554435, name: "hspace", sons: null},
196 | {kind: 1, offset: "lowsrc", len: 0, typ: NTI33554450, name: "lowsrc", sons: null},
197 | {kind: 1, offset: "src", len: 0, typ: NTI33554450, name: "src", sons: null},
198 | {kind: 1, offset: "vspace", len: 0, typ: NTI33554435, name: "vspace", sons: null},
199 | {kind: 1, offset: "width", len: 0, typ: NTI33554435, name: "width", sons: null}]};
200 | NTI671088781.node = NNI671088781;
201 | NTI671088781.base = NTI671088765;
202 | NTI671088669.base = NTI671088781;
203 | NTI671088761.base = NTI671088669;
204 | NTI671088762.base = NTI671088658;
205 | var NNI671088776 = {kind: 2, len: 6, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "height", len: 0, typ: NTI33554435, name: "height", sons: null},
206 | {kind: 1, offset: "hspace", len: 0, typ: NTI33554435, name: "hspace", sons: null},
207 | {kind: 1, offset: "src", len: 0, typ: NTI33554450, name: "src", sons: null},
208 | {kind: 1, offset: "width", len: 0, typ: NTI33554435, name: "width", sons: null},
209 | {kind: 1, offset: "type", len: 0, typ: NTI33554450, name: "type", sons: null},
210 | {kind: 1, offset: "vspace", len: 0, typ: NTI33554435, name: "vspace", sons: null}]};
211 | NTI671088776.node = NNI671088776;
212 | NTI671088776.base = NTI671088765;
213 | NTI671088665.base = NTI671088776;
214 | NTI671088763.base = NTI671088665;
215 | var NNI671088775 = {kind: 2, len: 4, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "target", len: 0, typ: NTI33554450, name: "target", sons: null},
216 | {kind: 1, offset: "text", len: 0, typ: NTI33554450, name: "text", sons: null},
217 | {kind: 1, offset: "x", len: 0, typ: NTI33554435, name: "x", sons: null},
218 | {kind: 1, offset: "y", len: 0, typ: NTI33554435, name: "y", sons: null}]};
219 | NTI671088775.node = NNI671088775;
220 | NTI671088775.base = NTI671088765;
221 | NTI671088664.base = NTI671088775;
222 | NTI671088764.base = NTI671088664;
223 | var NNI671088825 = {kind: 1, offset: "then", len: 0, typ: NTI671088826, name: "then", sons: null};
224 | NTI671088825.node = NNI671088825;
225 | NTI671088705.base = NTI671088825;
226 | var NNI671088828 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "ready", len: 0, typ: NTI671088705, name: "ready", sons: null},
227 | {kind: 1, offset: "onloadingdone", len: 0, typ: NTI671088829, name: "onloadingdone", sons: null}]};
228 | NTI671088828.node = NNI671088828;
229 | NTI671088706.base = NTI671088828;
230 | var NNI671088758 = {kind: 2, len: 25, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "activeElement", len: 0, typ: NTI671088658, name: "activeElement", sons: null},
231 | {kind: 1, offset: "documentElement", len: 0, typ: NTI671088658, name: "documentElement", sons: null},
232 | {kind: 1, offset: "alinkColor", len: 0, typ: NTI33554450, name: "alinkColor", sons: null},
233 | {kind: 1, offset: "bgColor", len: 0, typ: NTI33554450, name: "bgColor", sons: null},
234 | {kind: 1, offset: "body", len: 0, typ: NTI671088658, name: "body", sons: null},
235 | {kind: 1, offset: "charset", len: 0, typ: NTI33554450, name: "charset", sons: null},
236 | {kind: 1, offset: "cookie", len: 0, typ: NTI33554450, name: "cookie", sons: null},
237 | {kind: 1, offset: "defaultCharset", len: 0, typ: NTI33554450, name: "defaultCharset", sons: null},
238 | {kind: 1, offset: "fgColor", len: 0, typ: NTI33554450, name: "fgColor", sons: null},
239 | {kind: 1, offset: "head", len: 0, typ: NTI671088658, name: "head", sons: null},
240 | {kind: 1, offset: "hidden", len: 0, typ: NTI33554466, name: "hidden", sons: null},
241 | {kind: 1, offset: "lastModified", len: 0, typ: NTI33554450, name: "lastModified", sons: null},
242 | {kind: 1, offset: "linkColor", len: 0, typ: NTI33554450, name: "linkColor", sons: null},
243 | {kind: 1, offset: "referrer", len: 0, typ: NTI33554450, name: "referrer", sons: null},
244 | {kind: 1, offset: "title", len: 0, typ: NTI33554450, name: "title", sons: null},
245 | {kind: 1, offset: "URL", len: 0, typ: NTI33554450, name: "URL", sons: null},
246 | {kind: 1, offset: "visibilityState", len: 0, typ: NTI33554450, name: "visibilityState", sons: null},
247 | {kind: 1, offset: "vlinkColor", len: 0, typ: NTI33554450, name: "vlinkColor", sons: null},
248 | {kind: 1, offset: "anchors", len: 0, typ: NTI671088759, name: "anchors", sons: null},
249 | {kind: 1, offset: "forms", len: 0, typ: NTI671088760, name: "forms", sons: null},
250 | {kind: 1, offset: "images", len: 0, typ: NTI671088761, name: "images", sons: null},
251 | {kind: 1, offset: "applets", len: 0, typ: NTI671088762, name: "applets", sons: null},
252 | {kind: 1, offset: "embeds", len: 0, typ: NTI671088763, name: "embeds", sons: null},
253 | {kind: 1, offset: "links", len: 0, typ: NTI671088764, name: "links", sons: null},
254 | {kind: 1, offset: "fonts", len: 0, typ: NTI671088706, name: "fonts", sons: null}]};
255 | NTI671088758.node = NNI671088758;
256 | NTI671088758.base = NTI671088754;
257 | NTI671088657.base = NTI671088758;
258 | var NNI671088782 = {kind: 2, len: 368, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "alignContent", len: 0, typ: NTI33554450, name: "alignContent", sons: null},
259 | {kind: 1, offset: "alignItems", len: 0, typ: NTI33554450, name: "alignItems", sons: null},
260 | {kind: 1, offset: "alignSelf", len: 0, typ: NTI33554450, name: "alignSelf", sons: null},
261 | {kind: 1, offset: "all", len: 0, typ: NTI33554450, name: "all", sons: null},
262 | {kind: 1, offset: "animation", len: 0, typ: NTI33554450, name: "animation", sons: null},
263 | {kind: 1, offset: "animationDelay", len: 0, typ: NTI33554450, name: "animationDelay", sons: null},
264 | {kind: 1, offset: "animationDirection", len: 0, typ: NTI33554450, name: "animationDirection", sons: null},
265 | {kind: 1, offset: "animationDuration", len: 0, typ: NTI33554450, name: "animationDuration", sons: null},
266 | {kind: 1, offset: "animationFillMode", len: 0, typ: NTI33554450, name: "animationFillMode", sons: null},
267 | {kind: 1, offset: "animationIterationCount", len: 0, typ: NTI33554450, name: "animationIterationCount", sons: null},
268 | {kind: 1, offset: "animationName", len: 0, typ: NTI33554450, name: "animationName", sons: null},
269 | {kind: 1, offset: "animationPlayState", len: 0, typ: NTI33554450, name: "animationPlayState", sons: null},
270 | {kind: 1, offset: "animationTimingFunction", len: 0, typ: NTI33554450, name: "animationTimingFunction", sons: null},
271 | {kind: 1, offset: "backdropFilter", len: 0, typ: NTI33554450, name: "backdropFilter", sons: null},
272 | {kind: 1, offset: "backfaceVisibility", len: 0, typ: NTI33554450, name: "backfaceVisibility", sons: null},
273 | {kind: 1, offset: "background", len: 0, typ: NTI33554450, name: "background", sons: null},
274 | {kind: 1, offset: "backgroundAttachment", len: 0, typ: NTI33554450, name: "backgroundAttachment", sons: null},
275 | {kind: 1, offset: "backgroundBlendMode", len: 0, typ: NTI33554450, name: "backgroundBlendMode", sons: null},
276 | {kind: 1, offset: "backgroundClip", len: 0, typ: NTI33554450, name: "backgroundClip", sons: null},
277 | {kind: 1, offset: "backgroundColor", len: 0, typ: NTI33554450, name: "backgroundColor", sons: null},
278 | {kind: 1, offset: "backgroundImage", len: 0, typ: NTI33554450, name: "backgroundImage", sons: null},
279 | {kind: 1, offset: "backgroundOrigin", len: 0, typ: NTI33554450, name: "backgroundOrigin", sons: null},
280 | {kind: 1, offset: "backgroundPosition", len: 0, typ: NTI33554450, name: "backgroundPosition", sons: null},
281 | {kind: 1, offset: "backgroundRepeat", len: 0, typ: NTI33554450, name: "backgroundRepeat", sons: null},
282 | {kind: 1, offset: "backgroundSize", len: 0, typ: NTI33554450, name: "backgroundSize", sons: null},
283 | {kind: 1, offset: "blockSize", len: 0, typ: NTI33554450, name: "blockSize", sons: null},
284 | {kind: 1, offset: "border", len: 0, typ: NTI33554450, name: "border", sons: null},
285 | {kind: 1, offset: "borderBlock", len: 0, typ: NTI33554450, name: "borderBlock", sons: null},
286 | {kind: 1, offset: "borderBlockColor", len: 0, typ: NTI33554450, name: "borderBlockColor", sons: null},
287 | {kind: 1, offset: "borderBlockEnd", len: 0, typ: NTI33554450, name: "borderBlockEnd", sons: null},
288 | {kind: 1, offset: "borderBlockEndColor", len: 0, typ: NTI33554450, name: "borderBlockEndColor", sons: null},
289 | {kind: 1, offset: "borderBlockEndStyle", len: 0, typ: NTI33554450, name: "borderBlockEndStyle", sons: null},
290 | {kind: 1, offset: "borderBlockEndWidth", len: 0, typ: NTI33554450, name: "borderBlockEndWidth", sons: null},
291 | {kind: 1, offset: "borderBlockStart", len: 0, typ: NTI33554450, name: "borderBlockStart", sons: null},
292 | {kind: 1, offset: "borderBlockStartColor", len: 0, typ: NTI33554450, name: "borderBlockStartColor", sons: null},
293 | {kind: 1, offset: "borderBlockStartStyle", len: 0, typ: NTI33554450, name: "borderBlockStartStyle", sons: null},
294 | {kind: 1, offset: "borderBlockStartWidth", len: 0, typ: NTI33554450, name: "borderBlockStartWidth", sons: null},
295 | {kind: 1, offset: "borderBlockStyle", len: 0, typ: NTI33554450, name: "borderBlockStyle", sons: null},
296 | {kind: 1, offset: "borderBlockWidth", len: 0, typ: NTI33554450, name: "borderBlockWidth", sons: null},
297 | {kind: 1, offset: "borderBottom", len: 0, typ: NTI33554450, name: "borderBottom", sons: null},
298 | {kind: 1, offset: "borderBottomColor", len: 0, typ: NTI33554450, name: "borderBottomColor", sons: null},
299 | {kind: 1, offset: "borderBottomLeftRadius", len: 0, typ: NTI33554450, name: "borderBottomLeftRadius", sons: null},
300 | {kind: 1, offset: "borderBottomRightRadius", len: 0, typ: NTI33554450, name: "borderBottomRightRadius", sons: null},
301 | {kind: 1, offset: "borderBottomStyle", len: 0, typ: NTI33554450, name: "borderBottomStyle", sons: null},
302 | {kind: 1, offset: "borderBottomWidth", len: 0, typ: NTI33554450, name: "borderBottomWidth", sons: null},
303 | {kind: 1, offset: "borderCollapse", len: 0, typ: NTI33554450, name: "borderCollapse", sons: null},
304 | {kind: 1, offset: "borderColor", len: 0, typ: NTI33554450, name: "borderColor", sons: null},
305 | {kind: 1, offset: "borderEndEndRadius", len: 0, typ: NTI33554450, name: "borderEndEndRadius", sons: null},
306 | {kind: 1, offset: "borderEndStartRadius", len: 0, typ: NTI33554450, name: "borderEndStartRadius", sons: null},
307 | {kind: 1, offset: "borderImage", len: 0, typ: NTI33554450, name: "borderImage", sons: null},
308 | {kind: 1, offset: "borderImageOutset", len: 0, typ: NTI33554450, name: "borderImageOutset", sons: null},
309 | {kind: 1, offset: "borderImageRepeat", len: 0, typ: NTI33554450, name: "borderImageRepeat", sons: null},
310 | {kind: 1, offset: "borderImageSlice", len: 0, typ: NTI33554450, name: "borderImageSlice", sons: null},
311 | {kind: 1, offset: "borderImageSource", len: 0, typ: NTI33554450, name: "borderImageSource", sons: null},
312 | {kind: 1, offset: "borderImageWidth", len: 0, typ: NTI33554450, name: "borderImageWidth", sons: null},
313 | {kind: 1, offset: "borderInline", len: 0, typ: NTI33554450, name: "borderInline", sons: null},
314 | {kind: 1, offset: "borderInlineColor", len: 0, typ: NTI33554450, name: "borderInlineColor", sons: null},
315 | {kind: 1, offset: "borderInlineEnd", len: 0, typ: NTI33554450, name: "borderInlineEnd", sons: null},
316 | {kind: 1, offset: "borderInlineEndColor", len: 0, typ: NTI33554450, name: "borderInlineEndColor", sons: null},
317 | {kind: 1, offset: "borderInlineEndStyle", len: 0, typ: NTI33554450, name: "borderInlineEndStyle", sons: null},
318 | {kind: 1, offset: "borderInlineEndWidth", len: 0, typ: NTI33554450, name: "borderInlineEndWidth", sons: null},
319 | {kind: 1, offset: "borderInlineStart", len: 0, typ: NTI33554450, name: "borderInlineStart", sons: null},
320 | {kind: 1, offset: "borderInlineStartColor", len: 0, typ: NTI33554450, name: "borderInlineStartColor", sons: null},
321 | {kind: 1, offset: "borderInlineStartStyle", len: 0, typ: NTI33554450, name: "borderInlineStartStyle", sons: null},
322 | {kind: 1, offset: "borderInlineStartWidth", len: 0, typ: NTI33554450, name: "borderInlineStartWidth", sons: null},
323 | {kind: 1, offset: "borderInlineStyle", len: 0, typ: NTI33554450, name: "borderInlineStyle", sons: null},
324 | {kind: 1, offset: "borderInlineWidth", len: 0, typ: NTI33554450, name: "borderInlineWidth", sons: null},
325 | {kind: 1, offset: "borderLeft", len: 0, typ: NTI33554450, name: "borderLeft", sons: null},
326 | {kind: 1, offset: "borderLeftColor", len: 0, typ: NTI33554450, name: "borderLeftColor", sons: null},
327 | {kind: 1, offset: "borderLeftStyle", len: 0, typ: NTI33554450, name: "borderLeftStyle", sons: null},
328 | {kind: 1, offset: "borderLeftWidth", len: 0, typ: NTI33554450, name: "borderLeftWidth", sons: null},
329 | {kind: 1, offset: "borderRadius", len: 0, typ: NTI33554450, name: "borderRadius", sons: null},
330 | {kind: 1, offset: "borderRight", len: 0, typ: NTI33554450, name: "borderRight", sons: null},
331 | {kind: 1, offset: "borderRightColor", len: 0, typ: NTI33554450, name: "borderRightColor", sons: null},
332 | {kind: 1, offset: "borderRightStyle", len: 0, typ: NTI33554450, name: "borderRightStyle", sons: null},
333 | {kind: 1, offset: "borderRightWidth", len: 0, typ: NTI33554450, name: "borderRightWidth", sons: null},
334 | {kind: 1, offset: "borderSpacing", len: 0, typ: NTI33554450, name: "borderSpacing", sons: null},
335 | {kind: 1, offset: "borderStartEndRadius", len: 0, typ: NTI33554450, name: "borderStartEndRadius", sons: null},
336 | {kind: 1, offset: "borderStartStartRadius", len: 0, typ: NTI33554450, name: "borderStartStartRadius", sons: null},
337 | {kind: 1, offset: "borderStyle", len: 0, typ: NTI33554450, name: "borderStyle", sons: null},
338 | {kind: 1, offset: "borderTop", len: 0, typ: NTI33554450, name: "borderTop", sons: null},
339 | {kind: 1, offset: "borderTopColor", len: 0, typ: NTI33554450, name: "borderTopColor", sons: null},
340 | {kind: 1, offset: "borderTopLeftRadius", len: 0, typ: NTI33554450, name: "borderTopLeftRadius", sons: null},
341 | {kind: 1, offset: "borderTopRightRadius", len: 0, typ: NTI33554450, name: "borderTopRightRadius", sons: null},
342 | {kind: 1, offset: "borderTopStyle", len: 0, typ: NTI33554450, name: "borderTopStyle", sons: null},
343 | {kind: 1, offset: "borderTopWidth", len: 0, typ: NTI33554450, name: "borderTopWidth", sons: null},
344 | {kind: 1, offset: "borderWidth", len: 0, typ: NTI33554450, name: "borderWidth", sons: null},
345 | {kind: 1, offset: "bottom", len: 0, typ: NTI33554450, name: "bottom", sons: null},
346 | {kind: 1, offset: "boxDecorationBreak", len: 0, typ: NTI33554450, name: "boxDecorationBreak", sons: null},
347 | {kind: 1, offset: "boxShadow", len: 0, typ: NTI33554450, name: "boxShadow", sons: null},
348 | {kind: 1, offset: "boxSizing", len: 0, typ: NTI33554450, name: "boxSizing", sons: null},
349 | {kind: 1, offset: "breakAfter", len: 0, typ: NTI33554450, name: "breakAfter", sons: null},
350 | {kind: 1, offset: "breakBefore", len: 0, typ: NTI33554450, name: "breakBefore", sons: null},
351 | {kind: 1, offset: "breakInside", len: 0, typ: NTI33554450, name: "breakInside", sons: null},
352 | {kind: 1, offset: "captionSide", len: 0, typ: NTI33554450, name: "captionSide", sons: null},
353 | {kind: 1, offset: "caretColor", len: 0, typ: NTI33554450, name: "caretColor", sons: null},
354 | {kind: 1, offset: "clear", len: 0, typ: NTI33554450, name: "clear", sons: null},
355 | {kind: 1, offset: "clip", len: 0, typ: NTI33554450, name: "clip", sons: null},
356 | {kind: 1, offset: "clipPath", len: 0, typ: NTI33554450, name: "clipPath", sons: null},
357 | {kind: 1, offset: "color", len: 0, typ: NTI33554450, name: "color", sons: null},
358 | {kind: 1, offset: "colorAdjust", len: 0, typ: NTI33554450, name: "colorAdjust", sons: null},
359 | {kind: 1, offset: "columnCount", len: 0, typ: NTI33554450, name: "columnCount", sons: null},
360 | {kind: 1, offset: "columnFill", len: 0, typ: NTI33554450, name: "columnFill", sons: null},
361 | {kind: 1, offset: "columnGap", len: 0, typ: NTI33554450, name: "columnGap", sons: null},
362 | {kind: 1, offset: "columnRule", len: 0, typ: NTI33554450, name: "columnRule", sons: null},
363 | {kind: 1, offset: "columnRuleColor", len: 0, typ: NTI33554450, name: "columnRuleColor", sons: null},
364 | {kind: 1, offset: "columnRuleStyle", len: 0, typ: NTI33554450, name: "columnRuleStyle", sons: null},
365 | {kind: 1, offset: "columnRuleWidth", len: 0, typ: NTI33554450, name: "columnRuleWidth", sons: null},
366 | {kind: 1, offset: "columnSpan", len: 0, typ: NTI33554450, name: "columnSpan", sons: null},
367 | {kind: 1, offset: "columnWidth", len: 0, typ: NTI33554450, name: "columnWidth", sons: null},
368 | {kind: 1, offset: "columns", len: 0, typ: NTI33554450, name: "columns", sons: null},
369 | {kind: 1, offset: "contain", len: 0, typ: NTI33554450, name: "contain", sons: null},
370 | {kind: 1, offset: "content", len: 0, typ: NTI33554450, name: "content", sons: null},
371 | {kind: 1, offset: "counterIncrement", len: 0, typ: NTI33554450, name: "counterIncrement", sons: null},
372 | {kind: 1, offset: "counterReset", len: 0, typ: NTI33554450, name: "counterReset", sons: null},
373 | {kind: 1, offset: "counterSet", len: 0, typ: NTI33554450, name: "counterSet", sons: null},
374 | {kind: 1, offset: "cursor", len: 0, typ: NTI33554450, name: "cursor", sons: null},
375 | {kind: 1, offset: "direction", len: 0, typ: NTI33554450, name: "direction", sons: null},
376 | {kind: 1, offset: "display", len: 0, typ: NTI33554450, name: "display", sons: null},
377 | {kind: 1, offset: "emptyCells", len: 0, typ: NTI33554450, name: "emptyCells", sons: null},
378 | {kind: 1, offset: "filter", len: 0, typ: NTI33554450, name: "filter", sons: null},
379 | {kind: 1, offset: "flex", len: 0, typ: NTI33554450, name: "flex", sons: null},
380 | {kind: 1, offset: "flexBasis", len: 0, typ: NTI33554450, name: "flexBasis", sons: null},
381 | {kind: 1, offset: "flexDirection", len: 0, typ: NTI33554450, name: "flexDirection", sons: null},
382 | {kind: 1, offset: "flexFlow", len: 0, typ: NTI33554450, name: "flexFlow", sons: null},
383 | {kind: 1, offset: "flexGrow", len: 0, typ: NTI33554450, name: "flexGrow", sons: null},
384 | {kind: 1, offset: "flexShrink", len: 0, typ: NTI33554450, name: "flexShrink", sons: null},
385 | {kind: 1, offset: "flexWrap", len: 0, typ: NTI33554450, name: "flexWrap", sons: null},
386 | {kind: 1, offset: "cssFloat", len: 0, typ: NTI33554450, name: "cssFloat", sons: null},
387 | {kind: 1, offset: "font", len: 0, typ: NTI33554450, name: "font", sons: null},
388 | {kind: 1, offset: "fontFamily", len: 0, typ: NTI33554450, name: "fontFamily", sons: null},
389 | {kind: 1, offset: "fontFeatureSettings", len: 0, typ: NTI33554450, name: "fontFeatureSettings", sons: null},
390 | {kind: 1, offset: "fontKerning", len: 0, typ: NTI33554450, name: "fontKerning", sons: null},
391 | {kind: 1, offset: "fontLanguageOverride", len: 0, typ: NTI33554450, name: "fontLanguageOverride", sons: null},
392 | {kind: 1, offset: "fontOpticalSizing", len: 0, typ: NTI33554450, name: "fontOpticalSizing", sons: null},
393 | {kind: 1, offset: "fontSize", len: 0, typ: NTI33554450, name: "fontSize", sons: null},
394 | {kind: 1, offset: "fontSizeAdjust", len: 0, typ: NTI33554450, name: "fontSizeAdjust", sons: null},
395 | {kind: 1, offset: "fontStretch", len: 0, typ: NTI33554450, name: "fontStretch", sons: null},
396 | {kind: 1, offset: "fontStyle", len: 0, typ: NTI33554450, name: "fontStyle", sons: null},
397 | {kind: 1, offset: "fontSynthesis", len: 0, typ: NTI33554450, name: "fontSynthesis", sons: null},
398 | {kind: 1, offset: "fontVariant", len: 0, typ: NTI33554450, name: "fontVariant", sons: null},
399 | {kind: 1, offset: "fontVariantAlternates", len: 0, typ: NTI33554450, name: "fontVariantAlternates", sons: null},
400 | {kind: 1, offset: "fontVariantCaps", len: 0, typ: NTI33554450, name: "fontVariantCaps", sons: null},
401 | {kind: 1, offset: "fontVariantEastAsian", len: 0, typ: NTI33554450, name: "fontVariantEastAsian", sons: null},
402 | {kind: 1, offset: "fontVariantLigatures", len: 0, typ: NTI33554450, name: "fontVariantLigatures", sons: null},
403 | {kind: 1, offset: "fontVariantNumeric", len: 0, typ: NTI33554450, name: "fontVariantNumeric", sons: null},
404 | {kind: 1, offset: "fontVariantPosition", len: 0, typ: NTI33554450, name: "fontVariantPosition", sons: null},
405 | {kind: 1, offset: "fontVariationSettings", len: 0, typ: NTI33554450, name: "fontVariationSettings", sons: null},
406 | {kind: 1, offset: "fontWeight", len: 0, typ: NTI33554450, name: "fontWeight", sons: null},
407 | {kind: 1, offset: "gap", len: 0, typ: NTI33554450, name: "gap", sons: null},
408 | {kind: 1, offset: "grid", len: 0, typ: NTI33554450, name: "grid", sons: null},
409 | {kind: 1, offset: "gridArea", len: 0, typ: NTI33554450, name: "gridArea", sons: null},
410 | {kind: 1, offset: "gridAutoColumns", len: 0, typ: NTI33554450, name: "gridAutoColumns", sons: null},
411 | {kind: 1, offset: "gridAutoFlow", len: 0, typ: NTI33554450, name: "gridAutoFlow", sons: null},
412 | {kind: 1, offset: "gridAutoRows", len: 0, typ: NTI33554450, name: "gridAutoRows", sons: null},
413 | {kind: 1, offset: "gridColumn", len: 0, typ: NTI33554450, name: "gridColumn", sons: null},
414 | {kind: 1, offset: "gridColumnEnd", len: 0, typ: NTI33554450, name: "gridColumnEnd", sons: null},
415 | {kind: 1, offset: "gridColumnStart", len: 0, typ: NTI33554450, name: "gridColumnStart", sons: null},
416 | {kind: 1, offset: "gridRow", len: 0, typ: NTI33554450, name: "gridRow", sons: null},
417 | {kind: 1, offset: "gridRowEnd", len: 0, typ: NTI33554450, name: "gridRowEnd", sons: null},
418 | {kind: 1, offset: "gridRowStart", len: 0, typ: NTI33554450, name: "gridRowStart", sons: null},
419 | {kind: 1, offset: "gridTemplate", len: 0, typ: NTI33554450, name: "gridTemplate", sons: null},
420 | {kind: 1, offset: "gridTemplateAreas", len: 0, typ: NTI33554450, name: "gridTemplateAreas", sons: null},
421 | {kind: 1, offset: "gridTemplateColumns", len: 0, typ: NTI33554450, name: "gridTemplateColumns", sons: null},
422 | {kind: 1, offset: "gridTemplateRows", len: 0, typ: NTI33554450, name: "gridTemplateRows", sons: null},
423 | {kind: 1, offset: "hangingPunctuation", len: 0, typ: NTI33554450, name: "hangingPunctuation", sons: null},
424 | {kind: 1, offset: "height", len: 0, typ: NTI33554450, name: "height", sons: null},
425 | {kind: 1, offset: "hyphens", len: 0, typ: NTI33554450, name: "hyphens", sons: null},
426 | {kind: 1, offset: "imageOrientation", len: 0, typ: NTI33554450, name: "imageOrientation", sons: null},
427 | {kind: 1, offset: "imageRendering", len: 0, typ: NTI33554450, name: "imageRendering", sons: null},
428 | {kind: 1, offset: "inlineSize", len: 0, typ: NTI33554450, name: "inlineSize", sons: null},
429 | {kind: 1, offset: "inset", len: 0, typ: NTI33554450, name: "inset", sons: null},
430 | {kind: 1, offset: "insetBlock", len: 0, typ: NTI33554450, name: "insetBlock", sons: null},
431 | {kind: 1, offset: "insetBlockEnd", len: 0, typ: NTI33554450, name: "insetBlockEnd", sons: null},
432 | {kind: 1, offset: "insetBlockStart", len: 0, typ: NTI33554450, name: "insetBlockStart", sons: null},
433 | {kind: 1, offset: "insetInline", len: 0, typ: NTI33554450, name: "insetInline", sons: null},
434 | {kind: 1, offset: "insetInlineEnd", len: 0, typ: NTI33554450, name: "insetInlineEnd", sons: null},
435 | {kind: 1, offset: "insetInlineStart", len: 0, typ: NTI33554450, name: "insetInlineStart", sons: null},
436 | {kind: 1, offset: "isolation", len: 0, typ: NTI33554450, name: "isolation", sons: null},
437 | {kind: 1, offset: "justifyContent", len: 0, typ: NTI33554450, name: "justifyContent", sons: null},
438 | {kind: 1, offset: "justifyItems", len: 0, typ: NTI33554450, name: "justifyItems", sons: null},
439 | {kind: 1, offset: "justifySelf", len: 0, typ: NTI33554450, name: "justifySelf", sons: null},
440 | {kind: 1, offset: "left", len: 0, typ: NTI33554450, name: "left", sons: null},
441 | {kind: 1, offset: "letterSpacing", len: 0, typ: NTI33554450, name: "letterSpacing", sons: null},
442 | {kind: 1, offset: "lineBreak", len: 0, typ: NTI33554450, name: "lineBreak", sons: null},
443 | {kind: 1, offset: "lineHeight", len: 0, typ: NTI33554450, name: "lineHeight", sons: null},
444 | {kind: 1, offset: "listStyle", len: 0, typ: NTI33554450, name: "listStyle", sons: null},
445 | {kind: 1, offset: "listStyleImage", len: 0, typ: NTI33554450, name: "listStyleImage", sons: null},
446 | {kind: 1, offset: "listStylePosition", len: 0, typ: NTI33554450, name: "listStylePosition", sons: null},
447 | {kind: 1, offset: "listStyleType", len: 0, typ: NTI33554450, name: "listStyleType", sons: null},
448 | {kind: 1, offset: "margin", len: 0, typ: NTI33554450, name: "margin", sons: null},
449 | {kind: 1, offset: "marginBlock", len: 0, typ: NTI33554450, name: "marginBlock", sons: null},
450 | {kind: 1, offset: "marginBlockEnd", len: 0, typ: NTI33554450, name: "marginBlockEnd", sons: null},
451 | {kind: 1, offset: "marginBlockStart", len: 0, typ: NTI33554450, name: "marginBlockStart", sons: null},
452 | {kind: 1, offset: "marginBottom", len: 0, typ: NTI33554450, name: "marginBottom", sons: null},
453 | {kind: 1, offset: "marginInline", len: 0, typ: NTI33554450, name: "marginInline", sons: null},
454 | {kind: 1, offset: "marginInlineEnd", len: 0, typ: NTI33554450, name: "marginInlineEnd", sons: null},
455 | {kind: 1, offset: "marginInlineStart", len: 0, typ: NTI33554450, name: "marginInlineStart", sons: null},
456 | {kind: 1, offset: "marginLeft", len: 0, typ: NTI33554450, name: "marginLeft", sons: null},
457 | {kind: 1, offset: "marginRight", len: 0, typ: NTI33554450, name: "marginRight", sons: null},
458 | {kind: 1, offset: "marginTop", len: 0, typ: NTI33554450, name: "marginTop", sons: null},
459 | {kind: 1, offset: "mask", len: 0, typ: NTI33554450, name: "mask", sons: null},
460 | {kind: 1, offset: "maskBorder", len: 0, typ: NTI33554450, name: "maskBorder", sons: null},
461 | {kind: 1, offset: "maskBorderMode", len: 0, typ: NTI33554450, name: "maskBorderMode", sons: null},
462 | {kind: 1, offset: "maskBorderOutset", len: 0, typ: NTI33554450, name: "maskBorderOutset", sons: null},
463 | {kind: 1, offset: "maskBorderRepeat", len: 0, typ: NTI33554450, name: "maskBorderRepeat", sons: null},
464 | {kind: 1, offset: "maskBorderSlice", len: 0, typ: NTI33554450, name: "maskBorderSlice", sons: null},
465 | {kind: 1, offset: "maskBorderSource", len: 0, typ: NTI33554450, name: "maskBorderSource", sons: null},
466 | {kind: 1, offset: "maskBorderWidth", len: 0, typ: NTI33554450, name: "maskBorderWidth", sons: null},
467 | {kind: 1, offset: "maskClip", len: 0, typ: NTI33554450, name: "maskClip", sons: null},
468 | {kind: 1, offset: "maskComposite", len: 0, typ: NTI33554450, name: "maskComposite", sons: null},
469 | {kind: 1, offset: "maskImage", len: 0, typ: NTI33554450, name: "maskImage", sons: null},
470 | {kind: 1, offset: "maskMode", len: 0, typ: NTI33554450, name: "maskMode", sons: null},
471 | {kind: 1, offset: "maskOrigin", len: 0, typ: NTI33554450, name: "maskOrigin", sons: null},
472 | {kind: 1, offset: "maskPosition", len: 0, typ: NTI33554450, name: "maskPosition", sons: null},
473 | {kind: 1, offset: "maskRepeat", len: 0, typ: NTI33554450, name: "maskRepeat", sons: null},
474 | {kind: 1, offset: "maskSize", len: 0, typ: NTI33554450, name: "maskSize", sons: null},
475 | {kind: 1, offset: "maskType", len: 0, typ: NTI33554450, name: "maskType", sons: null},
476 | {kind: 1, offset: "maxBlockSize", len: 0, typ: NTI33554450, name: "maxBlockSize", sons: null},
477 | {kind: 1, offset: "maxHeight", len: 0, typ: NTI33554450, name: "maxHeight", sons: null},
478 | {kind: 1, offset: "maxInlineSize", len: 0, typ: NTI33554450, name: "maxInlineSize", sons: null},
479 | {kind: 1, offset: "maxWidth", len: 0, typ: NTI33554450, name: "maxWidth", sons: null},
480 | {kind: 1, offset: "minBlockSize", len: 0, typ: NTI33554450, name: "minBlockSize", sons: null},
481 | {kind: 1, offset: "minHeight", len: 0, typ: NTI33554450, name: "minHeight", sons: null},
482 | {kind: 1, offset: "minInlineSize", len: 0, typ: NTI33554450, name: "minInlineSize", sons: null},
483 | {kind: 1, offset: "minWidth", len: 0, typ: NTI33554450, name: "minWidth", sons: null},
484 | {kind: 1, offset: "mixBlendMode", len: 0, typ: NTI33554450, name: "mixBlendMode", sons: null},
485 | {kind: 1, offset: "objectFit", len: 0, typ: NTI33554450, name: "objectFit", sons: null},
486 | {kind: 1, offset: "objectPosition", len: 0, typ: NTI33554450, name: "objectPosition", sons: null},
487 | {kind: 1, offset: "offset", len: 0, typ: NTI33554450, name: "offset", sons: null},
488 | {kind: 1, offset: "offsetAnchor", len: 0, typ: NTI33554450, name: "offsetAnchor", sons: null},
489 | {kind: 1, offset: "offsetDistance", len: 0, typ: NTI33554450, name: "offsetDistance", sons: null},
490 | {kind: 1, offset: "offsetPath", len: 0, typ: NTI33554450, name: "offsetPath", sons: null},
491 | {kind: 1, offset: "offsetRotate", len: 0, typ: NTI33554450, name: "offsetRotate", sons: null},
492 | {kind: 1, offset: "opacity", len: 0, typ: NTI33554450, name: "opacity", sons: null},
493 | {kind: 1, offset: "order", len: 0, typ: NTI33554450, name: "order", sons: null},
494 | {kind: 1, offset: "orphans", len: 0, typ: NTI33554450, name: "orphans", sons: null},
495 | {kind: 1, offset: "outline", len: 0, typ: NTI33554450, name: "outline", sons: null},
496 | {kind: 1, offset: "outlineColor", len: 0, typ: NTI33554450, name: "outlineColor", sons: null},
497 | {kind: 1, offset: "outlineOffset", len: 0, typ: NTI33554450, name: "outlineOffset", sons: null},
498 | {kind: 1, offset: "outlineStyle", len: 0, typ: NTI33554450, name: "outlineStyle", sons: null},
499 | {kind: 1, offset: "outlineWidth", len: 0, typ: NTI33554450, name: "outlineWidth", sons: null},
500 | {kind: 1, offset: "overflow", len: 0, typ: NTI33554450, name: "overflow", sons: null},
501 | {kind: 1, offset: "overflowAnchor", len: 0, typ: NTI33554450, name: "overflowAnchor", sons: null},
502 | {kind: 1, offset: "overflowBlock", len: 0, typ: NTI33554450, name: "overflowBlock", sons: null},
503 | {kind: 1, offset: "overflowInline", len: 0, typ: NTI33554450, name: "overflowInline", sons: null},
504 | {kind: 1, offset: "overflowWrap", len: 0, typ: NTI33554450, name: "overflowWrap", sons: null},
505 | {kind: 1, offset: "overflowX", len: 0, typ: NTI33554450, name: "overflowX", sons: null},
506 | {kind: 1, offset: "overflowY", len: 0, typ: NTI33554450, name: "overflowY", sons: null},
507 | {kind: 1, offset: "overscrollBehavior", len: 0, typ: NTI33554450, name: "overscrollBehavior", sons: null},
508 | {kind: 1, offset: "overscrollBehaviorBlock", len: 0, typ: NTI33554450, name: "overscrollBehaviorBlock", sons: null},
509 | {kind: 1, offset: "overscrollBehaviorInline", len: 0, typ: NTI33554450, name: "overscrollBehaviorInline", sons: null},
510 | {kind: 1, offset: "overscrollBehaviorX", len: 0, typ: NTI33554450, name: "overscrollBehaviorX", sons: null},
511 | {kind: 1, offset: "overscrollBehaviorY", len: 0, typ: NTI33554450, name: "overscrollBehaviorY", sons: null},
512 | {kind: 1, offset: "padding", len: 0, typ: NTI33554450, name: "padding", sons: null},
513 | {kind: 1, offset: "paddingBlock", len: 0, typ: NTI33554450, name: "paddingBlock", sons: null},
514 | {kind: 1, offset: "paddingBlockEnd", len: 0, typ: NTI33554450, name: "paddingBlockEnd", sons: null},
515 | {kind: 1, offset: "paddingBlockStart", len: 0, typ: NTI33554450, name: "paddingBlockStart", sons: null},
516 | {kind: 1, offset: "paddingBottom", len: 0, typ: NTI33554450, name: "paddingBottom", sons: null},
517 | {kind: 1, offset: "paddingInline", len: 0, typ: NTI33554450, name: "paddingInline", sons: null},
518 | {kind: 1, offset: "paddingInlineEnd", len: 0, typ: NTI33554450, name: "paddingInlineEnd", sons: null},
519 | {kind: 1, offset: "paddingInlineStart", len: 0, typ: NTI33554450, name: "paddingInlineStart", sons: null},
520 | {kind: 1, offset: "paddingLeft", len: 0, typ: NTI33554450, name: "paddingLeft", sons: null},
521 | {kind: 1, offset: "paddingRight", len: 0, typ: NTI33554450, name: "paddingRight", sons: null},
522 | {kind: 1, offset: "paddingTop", len: 0, typ: NTI33554450, name: "paddingTop", sons: null},
523 | {kind: 1, offset: "pageBreakAfter", len: 0, typ: NTI33554450, name: "pageBreakAfter", sons: null},
524 | {kind: 1, offset: "pageBreakBefore", len: 0, typ: NTI33554450, name: "pageBreakBefore", sons: null},
525 | {kind: 1, offset: "pageBreakInside", len: 0, typ: NTI33554450, name: "pageBreakInside", sons: null},
526 | {kind: 1, offset: "paintOrder", len: 0, typ: NTI33554450, name: "paintOrder", sons: null},
527 | {kind: 1, offset: "perspective", len: 0, typ: NTI33554450, name: "perspective", sons: null},
528 | {kind: 1, offset: "perspectiveOrigin", len: 0, typ: NTI33554450, name: "perspectiveOrigin", sons: null},
529 | {kind: 1, offset: "placeContent", len: 0, typ: NTI33554450, name: "placeContent", sons: null},
530 | {kind: 1, offset: "placeItems", len: 0, typ: NTI33554450, name: "placeItems", sons: null},
531 | {kind: 1, offset: "placeSelf", len: 0, typ: NTI33554450, name: "placeSelf", sons: null},
532 | {kind: 1, offset: "pointerEvents", len: 0, typ: NTI33554450, name: "pointerEvents", sons: null},
533 | {kind: 1, offset: "position", len: 0, typ: NTI33554450, name: "position", sons: null},
534 | {kind: 1, offset: "quotes", len: 0, typ: NTI33554450, name: "quotes", sons: null},
535 | {kind: 1, offset: "resize", len: 0, typ: NTI33554450, name: "resize", sons: null},
536 | {kind: 1, offset: "right", len: 0, typ: NTI33554450, name: "right", sons: null},
537 | {kind: 1, offset: "rotate", len: 0, typ: NTI33554450, name: "rotate", sons: null},
538 | {kind: 1, offset: "rowGap", len: 0, typ: NTI33554450, name: "rowGap", sons: null},
539 | {kind: 1, offset: "scale", len: 0, typ: NTI33554450, name: "scale", sons: null},
540 | {kind: 1, offset: "scrollBehavior", len: 0, typ: NTI33554450, name: "scrollBehavior", sons: null},
541 | {kind: 1, offset: "scrollMargin", len: 0, typ: NTI33554450, name: "scrollMargin", sons: null},
542 | {kind: 1, offset: "scrollMarginBlock", len: 0, typ: NTI33554450, name: "scrollMarginBlock", sons: null},
543 | {kind: 1, offset: "scrollMarginBlockEnd", len: 0, typ: NTI33554450, name: "scrollMarginBlockEnd", sons: null},
544 | {kind: 1, offset: "scrollMarginBlockStart", len: 0, typ: NTI33554450, name: "scrollMarginBlockStart", sons: null},
545 | {kind: 1, offset: "scrollMarginBottom", len: 0, typ: NTI33554450, name: "scrollMarginBottom", sons: null},
546 | {kind: 1, offset: "scrollMarginInline", len: 0, typ: NTI33554450, name: "scrollMarginInline", sons: null},
547 | {kind: 1, offset: "scrollMarginInlineEnd", len: 0, typ: NTI33554450, name: "scrollMarginInlineEnd", sons: null},
548 | {kind: 1, offset: "scrollMarginInlineStart", len: 0, typ: NTI33554450, name: "scrollMarginInlineStart", sons: null},
549 | {kind: 1, offset: "scrollMarginLeft", len: 0, typ: NTI33554450, name: "scrollMarginLeft", sons: null},
550 | {kind: 1, offset: "scrollMarginRight", len: 0, typ: NTI33554450, name: "scrollMarginRight", sons: null},
551 | {kind: 1, offset: "scrollMarginTop", len: 0, typ: NTI33554450, name: "scrollMarginTop", sons: null},
552 | {kind: 1, offset: "scrollPadding", len: 0, typ: NTI33554450, name: "scrollPadding", sons: null},
553 | {kind: 1, offset: "scrollPaddingBlock", len: 0, typ: NTI33554450, name: "scrollPaddingBlock", sons: null},
554 | {kind: 1, offset: "scrollPaddingBlockEnd", len: 0, typ: NTI33554450, name: "scrollPaddingBlockEnd", sons: null},
555 | {kind: 1, offset: "scrollPaddingBlockStart", len: 0, typ: NTI33554450, name: "scrollPaddingBlockStart", sons: null},
556 | {kind: 1, offset: "scrollPaddingBottom", len: 0, typ: NTI33554450, name: "scrollPaddingBottom", sons: null},
557 | {kind: 1, offset: "scrollPaddingInline", len: 0, typ: NTI33554450, name: "scrollPaddingInline", sons: null},
558 | {kind: 1, offset: "scrollPaddingInlineEnd", len: 0, typ: NTI33554450, name: "scrollPaddingInlineEnd", sons: null},
559 | {kind: 1, offset: "scrollPaddingInlineStart", len: 0, typ: NTI33554450, name: "scrollPaddingInlineStart", sons: null},
560 | {kind: 1, offset: "scrollPaddingLeft", len: 0, typ: NTI33554450, name: "scrollPaddingLeft", sons: null},
561 | {kind: 1, offset: "scrollPaddingRight", len: 0, typ: NTI33554450, name: "scrollPaddingRight", sons: null},
562 | {kind: 1, offset: "scrollPaddingTop", len: 0, typ: NTI33554450, name: "scrollPaddingTop", sons: null},
563 | {kind: 1, offset: "scrollSnapAlign", len: 0, typ: NTI33554450, name: "scrollSnapAlign", sons: null},
564 | {kind: 1, offset: "scrollSnapStop", len: 0, typ: NTI33554450, name: "scrollSnapStop", sons: null},
565 | {kind: 1, offset: "scrollSnapType", len: 0, typ: NTI33554450, name: "scrollSnapType", sons: null},
566 | {kind: 1, offset: "scrollbar3dLightColor", len: 0, typ: NTI33554450, name: "scrollbar3dLightColor", sons: null},
567 | {kind: 1, offset: "scrollbarArrowColor", len: 0, typ: NTI33554450, name: "scrollbarArrowColor", sons: null},
568 | {kind: 1, offset: "scrollbarBaseColor", len: 0, typ: NTI33554450, name: "scrollbarBaseColor", sons: null},
569 | {kind: 1, offset: "scrollbarColor", len: 0, typ: NTI33554450, name: "scrollbarColor", sons: null},
570 | {kind: 1, offset: "scrollbarDarkshadowColor", len: 0, typ: NTI33554450, name: "scrollbarDarkshadowColor", sons: null},
571 | {kind: 1, offset: "scrollbarFaceColor", len: 0, typ: NTI33554450, name: "scrollbarFaceColor", sons: null},
572 | {kind: 1, offset: "scrollbarHighlightColor", len: 0, typ: NTI33554450, name: "scrollbarHighlightColor", sons: null},
573 | {kind: 1, offset: "scrollbarShadowColor", len: 0, typ: NTI33554450, name: "scrollbarShadowColor", sons: null},
574 | {kind: 1, offset: "scrollbarTrackColor", len: 0, typ: NTI33554450, name: "scrollbarTrackColor", sons: null},
575 | {kind: 1, offset: "scrollbarWidth", len: 0, typ: NTI33554450, name: "scrollbarWidth", sons: null},
576 | {kind: 1, offset: "shapeImageThreshold", len: 0, typ: NTI33554450, name: "shapeImageThreshold", sons: null},
577 | {kind: 1, offset: "shapeMargin", len: 0, typ: NTI33554450, name: "shapeMargin", sons: null},
578 | {kind: 1, offset: "shapeOutside", len: 0, typ: NTI33554450, name: "shapeOutside", sons: null},
579 | {kind: 1, offset: "tabSize", len: 0, typ: NTI33554450, name: "tabSize", sons: null},
580 | {kind: 1, offset: "tableLayout", len: 0, typ: NTI33554450, name: "tableLayout", sons: null},
581 | {kind: 1, offset: "textAlign", len: 0, typ: NTI33554450, name: "textAlign", sons: null},
582 | {kind: 1, offset: "textAlignLast", len: 0, typ: NTI33554450, name: "textAlignLast", sons: null},
583 | {kind: 1, offset: "textCombineUpright", len: 0, typ: NTI33554450, name: "textCombineUpright", sons: null},
584 | {kind: 1, offset: "textDecoration", len: 0, typ: NTI33554450, name: "textDecoration", sons: null},
585 | {kind: 1, offset: "textDecorationColor", len: 0, typ: NTI33554450, name: "textDecorationColor", sons: null},
586 | {kind: 1, offset: "textDecorationLine", len: 0, typ: NTI33554450, name: "textDecorationLine", sons: null},
587 | {kind: 1, offset: "textDecorationSkipInk", len: 0, typ: NTI33554450, name: "textDecorationSkipInk", sons: null},
588 | {kind: 1, offset: "textDecorationStyle", len: 0, typ: NTI33554450, name: "textDecorationStyle", sons: null},
589 | {kind: 1, offset: "textDecorationThickness", len: 0, typ: NTI33554450, name: "textDecorationThickness", sons: null},
590 | {kind: 1, offset: "textEmphasis", len: 0, typ: NTI33554450, name: "textEmphasis", sons: null},
591 | {kind: 1, offset: "textEmphasisColor", len: 0, typ: NTI33554450, name: "textEmphasisColor", sons: null},
592 | {kind: 1, offset: "textEmphasisPosition", len: 0, typ: NTI33554450, name: "textEmphasisPosition", sons: null},
593 | {kind: 1, offset: "textEmphasisStyle", len: 0, typ: NTI33554450, name: "textEmphasisStyle", sons: null},
594 | {kind: 1, offset: "textIndent", len: 0, typ: NTI33554450, name: "textIndent", sons: null},
595 | {kind: 1, offset: "textJustify", len: 0, typ: NTI33554450, name: "textJustify", sons: null},
596 | {kind: 1, offset: "textOrientation", len: 0, typ: NTI33554450, name: "textOrientation", sons: null},
597 | {kind: 1, offset: "textOverflow", len: 0, typ: NTI33554450, name: "textOverflow", sons: null},
598 | {kind: 1, offset: "textRendering", len: 0, typ: NTI33554450, name: "textRendering", sons: null},
599 | {kind: 1, offset: "textShadow", len: 0, typ: NTI33554450, name: "textShadow", sons: null},
600 | {kind: 1, offset: "textTransform", len: 0, typ: NTI33554450, name: "textTransform", sons: null},
601 | {kind: 1, offset: "textUnderlineOffset", len: 0, typ: NTI33554450, name: "textUnderlineOffset", sons: null},
602 | {kind: 1, offset: "textUnderlinePosition", len: 0, typ: NTI33554450, name: "textUnderlinePosition", sons: null},
603 | {kind: 1, offset: "top", len: 0, typ: NTI33554450, name: "top", sons: null},
604 | {kind: 1, offset: "touchAction", len: 0, typ: NTI33554450, name: "touchAction", sons: null},
605 | {kind: 1, offset: "transform", len: 0, typ: NTI33554450, name: "transform", sons: null},
606 | {kind: 1, offset: "transformBox", len: 0, typ: NTI33554450, name: "transformBox", sons: null},
607 | {kind: 1, offset: "transformOrigin", len: 0, typ: NTI33554450, name: "transformOrigin", sons: null},
608 | {kind: 1, offset: "transformStyle", len: 0, typ: NTI33554450, name: "transformStyle", sons: null},
609 | {kind: 1, offset: "transition", len: 0, typ: NTI33554450, name: "transition", sons: null},
610 | {kind: 1, offset: "transitionDelay", len: 0, typ: NTI33554450, name: "transitionDelay", sons: null},
611 | {kind: 1, offset: "transitionDuration", len: 0, typ: NTI33554450, name: "transitionDuration", sons: null},
612 | {kind: 1, offset: "transitionProperty", len: 0, typ: NTI33554450, name: "transitionProperty", sons: null},
613 | {kind: 1, offset: "transitionTimingFunction", len: 0, typ: NTI33554450, name: "transitionTimingFunction", sons: null},
614 | {kind: 1, offset: "translate", len: 0, typ: NTI33554450, name: "translate", sons: null},
615 | {kind: 1, offset: "unicodeBidi", len: 0, typ: NTI33554450, name: "unicodeBidi", sons: null},
616 | {kind: 1, offset: "verticalAlign", len: 0, typ: NTI33554450, name: "verticalAlign", sons: null},
617 | {kind: 1, offset: "visibility", len: 0, typ: NTI33554450, name: "visibility", sons: null},
618 | {kind: 1, offset: "whiteSpace", len: 0, typ: NTI33554450, name: "whiteSpace", sons: null},
619 | {kind: 1, offset: "widows", len: 0, typ: NTI33554450, name: "widows", sons: null},
620 | {kind: 1, offset: "width", len: 0, typ: NTI33554450, name: "width", sons: null},
621 | {kind: 1, offset: "willChange", len: 0, typ: NTI33554450, name: "willChange", sons: null},
622 | {kind: 1, offset: "wordBreak", len: 0, typ: NTI33554450, name: "wordBreak", sons: null},
623 | {kind: 1, offset: "wordSpacing", len: 0, typ: NTI33554450, name: "wordSpacing", sons: null},
624 | {kind: 1, offset: "writingMode", len: 0, typ: NTI33554450, name: "writingMode", sons: null},
625 | {kind: 1, offset: "zIndex", len: 0, typ: NTI33554450, name: "zIndex", sons: null}]};
626 | NTI671088782.node = NNI671088782;
627 | NTI671088782.base = NTI33555171;
628 | NTI671088670.base = NTI671088782;
629 | var NNI671088754 = {kind: 2, len: 22, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "attributes", len: 0, typ: NTI671088755, name: "attributes", sons: null},
630 | {kind: 1, offset: "childNodes", len: 0, typ: NTI671088756, name: "childNodes", sons: null},
631 | {kind: 1, offset: "children", len: 0, typ: NTI671088757, name: "children", sons: null},
632 | {kind: 1, offset: "data", len: 0, typ: NTI33554450, name: "data", sons: null},
633 | {kind: 1, offset: "firstChild", len: 0, typ: NTI671088656, name: "firstChild", sons: null},
634 | {kind: 1, offset: "lastChild", len: 0, typ: NTI671088656, name: "lastChild", sons: null},
635 | {kind: 1, offset: "nextSibling", len: 0, typ: NTI671088656, name: "nextSibling", sons: null},
636 | {kind: 1, offset: "nodeName", len: 0, typ: NTI33554450, name: "nodeName", sons: null},
637 | {kind: 1, offset: "nodeType", len: 0, typ: NTI671088655, name: "nodeType", sons: null},
638 | {kind: 1, offset: "nodeValue", len: 0, typ: NTI33554450, name: "nodeValue", sons: null},
639 | {kind: 1, offset: "parentNode", len: 0, typ: NTI671088656, name: "parentNode", sons: null},
640 | {kind: 1, offset: "content", len: 0, typ: NTI671088656, name: "content", sons: null},
641 | {kind: 1, offset: "previousSibling", len: 0, typ: NTI671088656, name: "previousSibling", sons: null},
642 | {kind: 1, offset: "ownerDocument", len: 0, typ: NTI671088657, name: "ownerDocument", sons: null},
643 | {kind: 1, offset: "innerHTML", len: 0, typ: NTI33554450, name: "innerHTML", sons: null},
644 | {kind: 1, offset: "outerHTML", len: 0, typ: NTI33554450, name: "outerHTML", sons: null},
645 | {kind: 1, offset: "innerText", len: 0, typ: NTI33554450, name: "innerText", sons: null},
646 | {kind: 1, offset: "textContent", len: 0, typ: NTI33554450, name: "textContent", sons: null},
647 | {kind: 1, offset: "style", len: 0, typ: NTI671088670, name: "style", sons: null},
648 | {kind: 1, offset: "baseURI", len: 0, typ: NTI33554450, name: "baseURI", sons: null},
649 | {kind: 1, offset: "parentElement", len: 0, typ: NTI671088658, name: "parentElement", sons: null},
650 | {kind: 1, offset: "isConnected", len: 0, typ: NTI33554466, name: "isConnected", sons: null}]};
651 | NTI671088754.node = NNI671088754;
652 | var NNI671088709 = {kind: 2, len: 24, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "onabort", len: 0, typ: NTI671088710, name: "onabort", sons: null},
653 | {kind: 1, offset: "onblur", len: 0, typ: NTI671088711, name: "onblur", sons: null},
654 | {kind: 1, offset: "onchange", len: 0, typ: NTI671088712, name: "onchange", sons: null},
655 | {kind: 1, offset: "onclick", len: 0, typ: NTI671088713, name: "onclick", sons: null},
656 | {kind: 1, offset: "ondblclick", len: 0, typ: NTI671088714, name: "ondblclick", sons: null},
657 | {kind: 1, offset: "onerror", len: 0, typ: NTI671088715, name: "onerror", sons: null},
658 | {kind: 1, offset: "onfocus", len: 0, typ: NTI671088716, name: "onfocus", sons: null},
659 | {kind: 1, offset: "onkeydown", len: 0, typ: NTI671088717, name: "onkeydown", sons: null},
660 | {kind: 1, offset: "onkeypress", len: 0, typ: NTI671088718, name: "onkeypress", sons: null},
661 | {kind: 1, offset: "onkeyup", len: 0, typ: NTI671088719, name: "onkeyup", sons: null},
662 | {kind: 1, offset: "onload", len: 0, typ: NTI671088720, name: "onload", sons: null},
663 | {kind: 1, offset: "onmousedown", len: 0, typ: NTI671088721, name: "onmousedown", sons: null},
664 | {kind: 1, offset: "onmousemove", len: 0, typ: NTI671088722, name: "onmousemove", sons: null},
665 | {kind: 1, offset: "onmouseout", len: 0, typ: NTI671088723, name: "onmouseout", sons: null},
666 | {kind: 1, offset: "onmouseover", len: 0, typ: NTI671088724, name: "onmouseover", sons: null},
667 | {kind: 1, offset: "onmouseup", len: 0, typ: NTI671088725, name: "onmouseup", sons: null},
668 | {kind: 1, offset: "onreset", len: 0, typ: NTI671088726, name: "onreset", sons: null},
669 | {kind: 1, offset: "onselect", len: 0, typ: NTI671088727, name: "onselect", sons: null},
670 | {kind: 1, offset: "onstorage", len: 0, typ: NTI671088728, name: "onstorage", sons: null},
671 | {kind: 1, offset: "onsubmit", len: 0, typ: NTI671088729, name: "onsubmit", sons: null},
672 | {kind: 1, offset: "onunload", len: 0, typ: NTI671088730, name: "onunload", sons: null},
673 | {kind: 1, offset: "onloadstart", len: 0, typ: NTI671088731, name: "onloadstart", sons: null},
674 | {kind: 1, offset: "onprogress", len: 0, typ: NTI671088732, name: "onprogress", sons: null},
675 | {kind: 1, offset: "onloadend", len: 0, typ: NTI671088733, name: "onloadend", sons: null}]};
676 | NTI671088709.node = NNI671088709;
677 | NTI671088709.base = NTI33555171;
678 | NTI671088754.base = NTI671088709;
679 | NTI671088656.base = NTI671088754;
680 | NTI671089087.base = NTI671088656;
681 | NTI536871446.base = NTI33554450;
682 | var NNI687865870 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554435, name: "Field0", sons: null},
683 | {kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]};
684 | NTI687865870.node = NNI687865870;
685 |
686 | function mnewString(len_33556826) {
687 | return new Array(len_33556826);
688 |
689 |
690 |
691 | }
692 |
693 | function toJSStr(s_33556737) {
694 | var result_33556738 = null;
695 |
696 | var res_33556772 = newSeq_33556755((s_33556737).length);
697 | var i_33556773 = 0;
698 | var j_33556774 = 0;
699 | Label1: {
700 | Label2: while (true) {
701 | if (!(i_33556773 < (s_33556737).length)) break Label2;
702 | var c_33556775 = s_33556737[i_33556773];
703 | if ((c_33556775 < 128)) {
704 | res_33556772[j_33556774] = String.fromCharCode(c_33556775);
705 | i_33556773 += 1;
706 | }
707 | else {
708 | var helper_33556788 = newSeq_33556755(0);
709 | Label3: {
710 | Label4: while (true) {
711 | if (!true) break Label4;
712 | var code_33556789 = c_33556775.toString(16);
713 | if ((((code_33556789) == null ? 0 : (code_33556789).length) == 1)) {
714 | helper_33556788.push("%0");;
715 | }
716 | else {
717 | helper_33556788.push("%");;
718 | }
719 |
720 | helper_33556788.push(code_33556789);;
721 | i_33556773 += 1;
722 | if ((((s_33556737).length <= i_33556773) || (s_33556737[i_33556773] < 128))) {
723 | break Label3;
724 | }
725 |
726 | c_33556775 = s_33556737[i_33556773];
727 | }
728 | };
729 | ++excHandler;
730 | try {
731 | res_33556772[j_33556774] = decodeURIComponent(helper_33556788.join(""));
732 | --excHandler;
733 | } catch (EXCEPTION) {
734 | var prevJSError = lastJSError;
735 | lastJSError = EXCEPTION;
736 | --excHandler;
737 | res_33556772[j_33556774] = helper_33556788.join("");
738 | lastJSError = prevJSError;
739 | } finally {
740 | }
741 | }
742 |
743 | j_33556774 += 1;
744 | }
745 | };
746 | if (res_33556772.length < j_33556774) { for (var i = res_33556772.length ; i < j_33556774 ; ++i) res_33556772.push(null); }
747 | else { res_33556772.length = j_33556774; };
748 | result_33556738 = res_33556772.join("");
749 |
750 | return result_33556738;
751 |
752 | }
753 |
754 | function raiseException(e_33556597, ename_33556598) {
755 | e_33556597.name = ename_33556598;
756 | if ((excHandler == 0)) {
757 | unhandledException(e_33556597);
758 | }
759 |
760 | throw e_33556597;
761 |
762 |
763 | }
764 |
765 | function addInt(a_33556873, b_33556874) {
766 | var result = a_33556873 + b_33556874;
767 | checkOverflowInt(result);
768 | return result;
769 |
770 |
771 |
772 | }
773 |
774 | function chckRange(i_33557122, a_33557123, b_33557124) {
775 | var result_33557125 = 0;
776 |
777 | BeforeRet: {
778 | if (((a_33557123 <= i_33557122) && (i_33557122 <= b_33557124))) {
779 | result_33557125 = i_33557122;
780 | break BeforeRet;
781 | }
782 | else {
783 | raiseRangeError();
784 | }
785 |
786 | };
787 |
788 | return result_33557125;
789 |
790 | }
791 |
792 | function setConstr() {
793 | var result = {};
794 | for (var i = 0; i < arguments.length; ++i) {
795 | var x = arguments[i];
796 | if (typeof(x) == "object") {
797 | for (var j = x[0]; j <= x[1]; ++j) {
798 | result[j] = true;
799 | }
800 | } else {
801 | result[x] = true;
802 | }
803 | }
804 | return result;
805 |
806 |
807 |
808 | }
809 | var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21);
810 |
811 | function nimCopy(dest_33557073, src_33557074, ti_33557075) {
812 | var result_33557084 = null;
813 |
814 | switch (ti_33557075.kind) {
815 | case 21:
816 | case 22:
817 | case 23:
818 | case 5:
819 | if (!(isFatPointer_33557064(ti_33557075))) {
820 | result_33557084 = src_33557074;
821 | }
822 | else {
823 | result_33557084 = [src_33557074[0], src_33557074[1]];
824 | }
825 |
826 | break;
827 | case 19:
828 | if (dest_33557073 === null || dest_33557073 === undefined) {
829 | dest_33557073 = {};
830 | }
831 | else {
832 | for (var key in dest_33557073) { delete dest_33557073[key]; }
833 | }
834 | for (var key in src_33557074) { dest_33557073[key] = src_33557074[key]; }
835 | result_33557084 = dest_33557073;
836 |
837 | break;
838 | case 18:
839 | case 17:
840 | if (!((ti_33557075.base == null))) {
841 | result_33557084 = nimCopy(dest_33557073, src_33557074, ti_33557075.base);
842 | }
843 | else {
844 | if ((ti_33557075.kind == 17)) {
845 | result_33557084 = (dest_33557073 === null || dest_33557073 === undefined) ? {m_type: ti_33557075} : dest_33557073;
846 | }
847 | else {
848 | result_33557084 = (dest_33557073 === null || dest_33557073 === undefined) ? {} : dest_33557073;
849 | }
850 | }
851 | nimCopyAux(result_33557084, src_33557074, ti_33557075.node);
852 | break;
853 | case 4:
854 | case 16:
855 | if(ArrayBuffer.isView(src_33557074)) {
856 | if(dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) {
857 | dest_33557073 = new src_33557074.constructor(src_33557074);
858 | } else {
859 | dest_33557073.set(src_33557074, 0);
860 | }
861 | result_33557084 = dest_33557073;
862 | } else {
863 | if (src_33557074 === null) {
864 | result_33557084 = null;
865 | }
866 | else {
867 | if (dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) {
868 | dest_33557073 = new Array(src_33557074.length);
869 | }
870 | result_33557084 = dest_33557073;
871 | for (var i = 0; i < src_33557074.length; ++i) {
872 | result_33557084[i] = nimCopy(result_33557084[i], src_33557074[i], ti_33557075.base);
873 | }
874 | }
875 | }
876 |
877 | break;
878 | case 24:
879 | case 27:
880 | if (src_33557074 === null) {
881 | result_33557084 = null;
882 | }
883 | else {
884 | if (dest_33557073 === null || dest_33557073 === undefined || dest_33557073.length != src_33557074.length) {
885 | dest_33557073 = new Array(src_33557074.length);
886 | }
887 | result_33557084 = dest_33557073;
888 | for (var i = 0; i < src_33557074.length; ++i) {
889 | result_33557084[i] = nimCopy(result_33557084[i], src_33557074[i], ti_33557075.base);
890 | }
891 | }
892 |
893 | break;
894 | case 28:
895 | if (src_33557074 !== null) {
896 | result_33557084 = src_33557074.slice(0);
897 | }
898 |
899 | break;
900 | default:
901 | result_33557084 = src_33557074;
902 | break;
903 | }
904 |
905 | return result_33557084;
906 |
907 | }
908 |
909 | function chckIndx(i_33557117, a_33557118, b_33557119) {
910 | var result_33557120 = 0;
911 |
912 | BeforeRet: {
913 | if (((a_33557118 <= i_33557117) && (i_33557117 <= b_33557119))) {
914 | result_33557120 = i_33557117;
915 | break BeforeRet;
916 | }
917 | else {
918 | raiseIndexError(i_33557117, a_33557118, b_33557119);
919 | }
920 |
921 | };
922 |
923 | return result_33557120;
924 |
925 | }
926 |
927 | function makeNimstrLit(c_33556731) {
928 | var result = [];
929 | for (var i = 0; i < c_33556731.length; ++i) {
930 | result[i] = c_33556731.charCodeAt(i);
931 | }
932 | return result;
933 |
934 |
935 |
936 | }
937 |
938 | function subInt(a_33556877, b_33556878) {
939 | var result = a_33556877 - b_33556878;
940 | checkOverflowInt(result);
941 | return result;
942 |
943 |
944 |
945 | }
946 | var ConstSet2 = setConstr([65, 90]);
947 | var ConstSet3 = setConstr(95, 32, 46);
948 | var ConstSet4 = setConstr(95, 32, 46);
949 |
950 | function mulInt(a_33556881, b_33556882) {
951 | var result = a_33556881 * b_33556882;
952 | checkOverflowInt(result);
953 | return result;
954 |
955 |
956 |
957 | }
958 | var ConstSet5 = setConstr([97, 122]);
959 | var ConstSet6 = setConstr([65, 90], [97, 122]);
960 | var ConstSet7 = setConstr([97, 122]);
961 | var ConstSet8 = setConstr([65, 90]);
962 | var ConstSet9 = setConstr([65, 90], [97, 122]);
963 |
964 | function nimMax(a_33556931, b_33556932) {
965 | var Temporary1;
966 |
967 | var result_33556933 = 0;
968 |
969 | BeforeRet: {
970 | if ((b_33556932 <= a_33556931)) {
971 | Temporary1 = a_33556931;
972 | }
973 | else {
974 | Temporary1 = b_33556932;
975 | }
976 |
977 | result_33556933 = Temporary1;
978 | break BeforeRet;
979 | };
980 |
981 | return result_33556933;
982 |
983 | }
984 |
985 | function nimMin(a_33556927, b_33556928) {
986 | var Temporary1;
987 |
988 | var result_33556929 = 0;
989 |
990 | BeforeRet: {
991 | if ((a_33556927 <= b_33556928)) {
992 | Temporary1 = a_33556927;
993 | }
994 | else {
995 | Temporary1 = b_33556928;
996 | }
997 |
998 | result_33556929 = Temporary1;
999 | break BeforeRet;
1000 | };
1001 |
1002 | return result_33556929;
1003 |
1004 | }
1005 |
1006 | function addChar(x_33557188, c_33557189) {
1007 | x_33557188.push(c_33557189);
1008 |
1009 |
1010 | }
1011 |
1012 | function setTheme(theme_536870916) {
1013 | document.documentElement.setAttribute("data-theme", theme_536870916);
1014 | window.localStorage.setItem("theme", theme_536870916);
1015 |
1016 |
1017 | }
1018 | var Temporary1;
1019 | var t_536870935 = window.localStorage.getItem("theme");
1020 | if ((t_536870935 == null)) {
1021 | Temporary1 = "auto";
1022 | }
1023 | else {
1024 | Temporary1 = t_536870935;
1025 | }
1026 |
1027 | setTheme(Temporary1);
1028 |
1029 | function add_33556385(x_33556386, x_33556386_Idx, y_33556387) {
1030 | if (x_33556386[x_33556386_Idx] === null) { x_33556386[x_33556386_Idx] = []; }
1031 | var off = x_33556386[x_33556386_Idx].length;
1032 | x_33556386[x_33556386_Idx].length += y_33556387.length;
1033 | for (var i = 0; i < y_33556387.length; ++i) {
1034 | x_33556386[x_33556386_Idx][off+i] = y_33556387.charCodeAt(i);
1035 | }
1036 |
1037 |
1038 |
1039 | }
1040 |
1041 | function newSeq_33556755(len_33556757) {
1042 | var result_33556758 = [];
1043 |
1044 | result_33556758 = new Array(len_33556757); for (var i = 0 ; i < len_33556757 ; ++i) { result_33556758[i] = null; }
1045 | return result_33556758;
1046 |
1047 | }
1048 |
1049 | function unhandledException(e_33556593) {
1050 | var buf_33556594 = [[]];
1051 | if (!(((e_33556593.message).length == 0))) {
1052 | buf_33556594[0].push.apply(buf_33556594[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110,58,32]);;
1053 | buf_33556594[0].push.apply(buf_33556594[0], e_33556593.message);;
1054 | }
1055 | else {
1056 | buf_33556594[0].push.apply(buf_33556594[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110]);;
1057 | }
1058 |
1059 | buf_33556594[0].push.apply(buf_33556594[0], [32,91]);;
1060 | add_33556385(buf_33556594, 0, e_33556593.name);
1061 | buf_33556594[0].push.apply(buf_33556594[0], [93,10]);;
1062 | var cbuf_33556595 = toJSStr(buf_33556594[0]);
1063 | if (typeof(Error) !== "undefined") {
1064 | throw new Error(cbuf_33556595);
1065 | }
1066 | else {
1067 | throw cbuf_33556595;
1068 | }
1069 |
1070 |
1071 |
1072 | }
1073 |
1074 | function raiseOverflow() {
1075 | raiseException({message: [111,118,101,114,45,32,111,114,32,117,110,100,101,114,102,108,111,119], parent: null, m_type: NTI134217743, name: null, trace: [], up: null}, "OverflowDefect");
1076 |
1077 |
1078 | }
1079 |
1080 | function checkOverflowInt(a_33556871) {
1081 | if (a_33556871 > 2147483647 || a_33556871 < -2147483648) raiseOverflow();
1082 |
1083 |
1084 |
1085 | }
1086 |
1087 | function raiseRangeError() {
1088 | raiseException({message: [118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101], parent: null, m_type: NTI134217751, name: null, trace: [], up: null}, "RangeDefect");
1089 |
1090 |
1091 | }
1092 |
1093 | function addChars_285212850(result_285212852, result_285212852_Idx, x_285212853, start_285212854, n_285212855) {
1094 | var Temporary1;
1095 |
1096 | var old_285212856 = (result_285212852[result_285212852_Idx]).length;
1097 | if (result_285212852[result_285212852_Idx].length < (Temporary1 = chckRange(addInt(old_285212856, n_285212855), 0, 2147483647), Temporary1)) { for (var i = result_285212852[result_285212852_Idx].length; i < Temporary1; ++i) result_285212852[result_285212852_Idx].push(0); }
1098 | else {result_285212852[result_285212852_Idx].length = Temporary1; };
1099 | Label2: {
1100 | var iHEX60gensym4_285212870 = 0;
1101 | var i_536871009 = 0;
1102 | Label3: {
1103 | Label4: while (true) {
1104 | if (!(i_536871009 < n_285212855)) break Label4;
1105 | iHEX60gensym4_285212870 = i_536871009;
1106 | result_285212852[result_285212852_Idx][chckIndx(addInt(old_285212856, iHEX60gensym4_285212870), 0, (result_285212852[result_285212852_Idx]).length - 1)] = x_285212853.charCodeAt(chckIndx(addInt(start_285212854, iHEX60gensym4_285212870), 0, (x_285212853).length - 1));
1107 | i_536871009 = addInt(i_536871009, 1);
1108 | }
1109 | };
1110 | };
1111 |
1112 |
1113 | }
1114 |
1115 | function addChars_285212846(result_285212848, result_285212848_Idx, x_285212849) {
1116 | addChars_285212850(result_285212848, result_285212848_Idx, x_285212849, 0, ((x_285212849) == null ? 0 : (x_285212849).length));
1117 |
1118 |
1119 | }
1120 |
1121 | function addInt_285212871(result_285212872, result_285212872_Idx, x_285212873) {
1122 | addChars_285212846(result_285212872, result_285212872_Idx, ((x_285212873) + ""));
1123 |
1124 |
1125 | }
1126 |
1127 | function addInt_285212892(result_285212893, result_285212893_Idx, x_285212894) {
1128 | addInt_285212871(result_285212893, result_285212893_Idx, x_285212894);
1129 |
1130 |
1131 | }
1132 |
1133 | function HEX24_369098760(x_369098761) {
1134 | var result_369098762 = [[]];
1135 |
1136 | addInt_285212892(result_369098762, 0, x_369098761);
1137 |
1138 | return result_369098762[0];
1139 |
1140 | }
1141 |
1142 | function isFatPointer_33557064(ti_33557065) {
1143 | var result_33557066 = false;
1144 |
1145 | BeforeRet: {
1146 | result_33557066 = !((ConstSet1[ti_33557065.base.kind] != undefined));
1147 | break BeforeRet;
1148 | };
1149 |
1150 | return result_33557066;
1151 |
1152 | }
1153 |
1154 | function nimCopyAux(dest_33557077, src_33557078, n_33557079) {
1155 | switch (n_33557079.kind) {
1156 | case 0:
1157 | break;
1158 | case 1:
1159 | dest_33557077[n_33557079.offset] = nimCopy(dest_33557077[n_33557079.offset], src_33557078[n_33557079.offset], n_33557079.typ);
1160 |
1161 | break;
1162 | case 2:
1163 | for (var i = 0; i < n_33557079.sons.length; i++) {
1164 | nimCopyAux(dest_33557077, src_33557078, n_33557079.sons[i]);
1165 | }
1166 |
1167 | break;
1168 | case 3:
1169 | dest_33557077[n_33557079.offset] = nimCopy(dest_33557077[n_33557079.offset], src_33557078[n_33557079.offset], n_33557079.typ);
1170 | for (var i = 0; i < n_33557079.sons.length; ++i) {
1171 | nimCopyAux(dest_33557077, src_33557078, n_33557079.sons[i][1]);
1172 | }
1173 |
1174 | break;
1175 | }
1176 |
1177 |
1178 | }
1179 |
1180 | function raiseIndexError(i_33556684, a_33556685, b_33556686) {
1181 | var Temporary1;
1182 |
1183 | if ((b_33556686 < a_33556685)) {
1184 | Temporary1 = [105,110,100,101,120,32,111,117,116,32,111,102,32,98,111,117,110,100,115,44,32,116,104,101,32,99,111,110,116,97,105,110,101,114,32,105,115,32,101,109,112,116,121];
1185 | }
1186 | else {
1187 | Temporary1 = ([105,110,100,101,120,32] || []).concat(HEX24_369098760(i_33556684) || [],[32,110,111,116,32,105,110,32] || [],HEX24_369098760(a_33556685) || [],[32,46,46,32] || [],HEX24_369098760(b_33556686) || []);
1188 | }
1189 |
1190 | raiseException({message: nimCopy(null, Temporary1, NTI33554449), parent: null, m_type: NTI134217749, name: null, trace: [], up: null}, "IndexDefect");
1191 |
1192 |
1193 | }
1194 |
1195 | function raiseAssert_251658262(msg_251658263) {
1196 | raiseException({message: nimCopy(null, msg_251658263, NTI33554449), parent: null, m_type: NTI134217745, name: null, trace: [], up: null}, "AssertionDefect");
1197 |
1198 |
1199 | }
1200 |
1201 | function failedAssertImpl_251658292(msg_251658293) {
1202 | raiseAssert_251658262(msg_251658293);
1203 |
1204 |
1205 | }
1206 |
1207 | function onDOMLoaded(e_536870937) {
1208 |
1209 | function HEX3Aanonymous_536870961(event_536870962) {
1210 | event_536870962.target.parentNode.style.display = "none";
1211 | event_536870962.target.parentNode.nextSibling.style.display = "inline";
1212 |
1213 |
1214 | }
1215 |
1216 | document.getElementById("theme-select").value = window.localStorage.getItem("theme");
1217 | Label1: {
1218 | var pragmaDots_536870960 = null;
1219 | var colontmp__536871000 = [];
1220 | colontmp__536871000 = document.getElementsByClassName("pragmadots");
1221 | var i_536871002 = 0;
1222 | var L_536871003 = (colontmp__536871000).length;
1223 | Label2: {
1224 | Label3: while (true) {
1225 | if (!(i_536871002 < L_536871003)) break Label3;
1226 | pragmaDots_536870960 = colontmp__536871000[chckIndx(i_536871002, 0, (colontmp__536871000).length - 1)];
1227 | pragmaDots_536870960.onclick = HEX3Aanonymous_536870961;
1228 | i_536871002 = addInt(i_536871002, 1);
1229 | if (!(((colontmp__536871000).length == L_536871003))) {
1230 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1231 | }
1232 |
1233 | }
1234 | };
1235 | };
1236 |
1237 |
1238 | }
1239 | var alternative_536871499 = [null];
1240 |
1241 | function isWhitespace_536871245(x_536871246) {
1242 | var result_536871247 = false;
1243 |
1244 | result_536871247 = (((x_536871246.nodeName == "#text") && !/\S/.test(x_536871246.textContent)) || (x_536871246.nodeName == "#comment"));
1245 |
1246 | return result_536871247;
1247 |
1248 | }
1249 |
1250 | function toToc_536871248(x_536871249, father_536871250) {
1251 | var Temporary5;
1252 | var Temporary6;
1253 | var Temporary7;
1254 | var Temporary8;
1255 | var Temporary15;
1256 |
1257 | if ((x_536871249.nodeName == "UL")) {
1258 | var f_536871258 = {heading: null, kids: [], sortId: (father_536871250.kids).length, doSort: false};
1259 | var i_536871259 = 0;
1260 | Label1: {
1261 | Label2: while (true) {
1262 | if (!(i_536871259 < x_536871249.childNodes.length)) break Label2;
1263 | var nxt_536871260 = addInt(i_536871259, 1);
1264 | Label3: {
1265 | Label4: while (true) {
1266 | if (!(nxt_536871260 < x_536871249.childNodes.length)) Temporary5 = false; else { Temporary5 = isWhitespace_536871245(x_536871249.childNodes[nxt_536871260]); } if (!Temporary5) break Label4;
1267 | nxt_536871260 = addInt(nxt_536871260, 1);
1268 | }
1269 | };
1270 | if (!(nxt_536871260 < x_536871249.childNodes.length)) Temporary8 = false; else { Temporary8 = (x_536871249.childNodes[i_536871259].nodeName == "LI"); } if (!Temporary8) Temporary7 = false; else { Temporary7 = (x_536871249.childNodes[i_536871259].childNodes.length == 1); } if (!Temporary7) Temporary6 = false; else { Temporary6 = (x_536871249.childNodes[nxt_536871260].nodeName == "UL"); } if (Temporary6) {
1271 | var e_536871273 = {heading: x_536871249.childNodes[i_536871259].childNodes[0], kids: [], sortId: (f_536871258.kids).length, doSort: false};
1272 | var it_536871274 = x_536871249.childNodes[nxt_536871260];
1273 | Label9: {
1274 | var j_536871279 = 0;
1275 | var colontmp__536871537 = 0;
1276 | colontmp__536871537 = it_536871274.childNodes.length;
1277 | var i_536871538 = 0;
1278 | Label10: {
1279 | Label11: while (true) {
1280 | if (!(i_536871538 < colontmp__536871537)) break Label11;
1281 | j_536871279 = i_536871538;
1282 | toToc_536871248(it_536871274.childNodes[j_536871279], e_536871273);
1283 | i_536871538 = addInt(i_536871538, 1);
1284 | }
1285 | };
1286 | };
1287 | f_536871258.kids.push(e_536871273);;
1288 | i_536871259 = addInt(nxt_536871260, 1);
1289 | }
1290 | else {
1291 | toToc_536871248(x_536871249.childNodes[i_536871259], f_536871258);
1292 | i_536871259 = addInt(i_536871259, 1);
1293 | }
1294 |
1295 | }
1296 | };
1297 | father_536871250.kids.push(f_536871258);;
1298 | }
1299 | else {
1300 | if (isWhitespace_536871245(x_536871249)) {
1301 | }
1302 | else {
1303 | if ((x_536871249.nodeName == "LI")) {
1304 | var idx_536871297 = [];
1305 | Label12: {
1306 | var i_536871302 = 0;
1307 | var colontmp__536871541 = 0;
1308 | colontmp__536871541 = x_536871249.childNodes.length;
1309 | var i_536871542 = 0;
1310 | Label13: {
1311 | Label14: while (true) {
1312 | if (!(i_536871542 < colontmp__536871541)) break Label14;
1313 | i_536871302 = i_536871542;
1314 | if (!(isWhitespace_536871245(x_536871249.childNodes[i_536871302]))) {
1315 | idx_536871297.push(i_536871302);;
1316 | }
1317 |
1318 | i_536871542 = addInt(i_536871542, 1);
1319 | }
1320 | };
1321 | };
1322 | if (!((idx_536871297).length == 2)) Temporary15 = false; else { Temporary15 = (x_536871249.childNodes[idx_536871297[chckIndx(1, 0, (idx_536871297).length - 1)]].nodeName == "UL"); } if (Temporary15) {
1323 | var e_536871318 = {heading: x_536871249.childNodes[idx_536871297[chckIndx(0, 0, (idx_536871297).length - 1)]], kids: [], sortId: (father_536871250.kids).length, doSort: false};
1324 | var it_536871319 = x_536871249.childNodes[idx_536871297[chckIndx(1, 0, (idx_536871297).length - 1)]];
1325 | Label16: {
1326 | var j_536871324 = 0;
1327 | var colontmp__536871545 = 0;
1328 | colontmp__536871545 = it_536871319.childNodes.length;
1329 | var i_536871546 = 0;
1330 | Label17: {
1331 | Label18: while (true) {
1332 | if (!(i_536871546 < colontmp__536871545)) break Label18;
1333 | j_536871324 = i_536871546;
1334 | toToc_536871248(it_536871319.childNodes[j_536871324], e_536871318);
1335 | i_536871546 = addInt(i_536871546, 1);
1336 | }
1337 | };
1338 | };
1339 | father_536871250.kids.push(e_536871318);;
1340 | }
1341 | else {
1342 | Label19: {
1343 | var i_536871333 = 0;
1344 | var colontmp__536871549 = 0;
1345 | colontmp__536871549 = x_536871249.childNodes.length;
1346 | var i_536871550 = 0;
1347 | Label20: {
1348 | Label21: while (true) {
1349 | if (!(i_536871550 < colontmp__536871549)) break Label21;
1350 | i_536871333 = i_536871550;
1351 | toToc_536871248(x_536871249.childNodes[i_536871333], father_536871250);
1352 | i_536871550 = addInt(i_536871550, 1);
1353 | }
1354 | };
1355 | };
1356 | }
1357 |
1358 | }
1359 | else {
1360 | father_536871250.kids.push({heading: x_536871249, kids: [], sortId: (father_536871250.kids).length, doSort: false});;
1361 | }
1362 | }}
1363 |
1364 |
1365 | }
1366 |
1367 | function extractItems_536871082(x_536871083, heading_536871084, items_536871085, items_536871085_Idx) {
1368 | BeforeRet: {
1369 | if ((x_536871083 == null)) {
1370 | break BeforeRet;
1371 | }
1372 |
1373 | if ((!((x_536871083.heading == null)) && (x_536871083.heading.textContent == heading_536871084))) {
1374 | Label1: {
1375 | var i_536871102 = 0;
1376 | var colontmp__536871553 = 0;
1377 | colontmp__536871553 = (x_536871083.kids).length;
1378 | var i_536871554 = 0;
1379 | Label2: {
1380 | Label3: while (true) {
1381 | if (!(i_536871554 < colontmp__536871553)) break Label3;
1382 | i_536871102 = i_536871554;
1383 | items_536871085[items_536871085_Idx].push(x_536871083.kids[chckIndx(i_536871102, 0, (x_536871083.kids).length - 1)].heading);;
1384 | i_536871554 = addInt(i_536871554, 1);
1385 | }
1386 | };
1387 | };
1388 | }
1389 | else {
1390 | Label4: {
1391 | var k_536871128 = null;
1392 | var i_536871558 = 0;
1393 | var L_536871559 = (x_536871083.kids).length;
1394 | Label5: {
1395 | Label6: while (true) {
1396 | if (!(i_536871558 < L_536871559)) break Label6;
1397 | k_536871128 = x_536871083.kids[chckIndx(i_536871558, 0, (x_536871083.kids).length - 1)];
1398 | extractItems_536871082(k_536871128, heading_536871084, items_536871085, items_536871085_Idx);
1399 | i_536871558 = addInt(i_536871558, 1);
1400 | if (!(((x_536871083.kids).length == L_536871559))) {
1401 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1402 | }
1403 |
1404 | }
1405 | };
1406 | };
1407 | }
1408 |
1409 | };
1410 |
1411 |
1412 | }
1413 |
1414 | function tree_536871013(tag_536871014, kids_536871015) {
1415 | var result_536871016 = null;
1416 |
1417 | result_536871016 = document.createElement(tag_536871014);
1418 | Label1: {
1419 | var k_536871030 = null;
1420 | var i_536871571 = 0;
1421 | Label2: {
1422 | Label3: while (true) {
1423 | if (!(i_536871571 < (kids_536871015).length)) break Label3;
1424 | k_536871030 = kids_536871015[chckIndx(i_536871571, 0, (kids_536871015).length - 1)];
1425 | result_536871016.appendChild(k_536871030);
1426 | i_536871571 = addInt(i_536871571, 1);
1427 | }
1428 | };
1429 | };
1430 |
1431 | return result_536871016;
1432 |
1433 | }
1434 |
1435 | function text_536871038(s_536871039) {
1436 | var result_536871040 = null;
1437 |
1438 | result_536871040 = document.createTextNode(s_536871039);
1439 |
1440 | return result_536871040;
1441 |
1442 | }
1443 |
1444 | function uncovered_536871399(x_536871400) {
1445 | var Temporary1;
1446 |
1447 | var result_536871401 = null;
1448 |
1449 | BeforeRet: {
1450 | if ((((x_536871400.kids).length == 0) && !((x_536871400.heading == null)))) {
1451 | if (!(x_536871400.heading.hasOwnProperty('__karaxMarker__'))) {
1452 | Temporary1 = x_536871400;
1453 | }
1454 | else {
1455 | Temporary1 = null;
1456 | }
1457 |
1458 | result_536871401 = Temporary1;
1459 | break BeforeRet;
1460 | }
1461 |
1462 | result_536871401 = {heading: x_536871400.heading, kids: [], sortId: x_536871400.sortId, doSort: x_536871400.doSort};
1463 | Label2: {
1464 | var k_536871416 = null;
1465 | var i_536871578 = 0;
1466 | var L_536871579 = (x_536871400.kids).length;
1467 | Label3: {
1468 | Label4: while (true) {
1469 | if (!(i_536871578 < L_536871579)) break Label4;
1470 | k_536871416 = x_536871400.kids[chckIndx(i_536871578, 0, (x_536871400.kids).length - 1)];
1471 | var y_536871417 = uncovered_536871399(k_536871416);
1472 | if (!((y_536871417 == null))) {
1473 | result_536871401.kids.push(y_536871417);;
1474 | }
1475 |
1476 | i_536871578 = addInt(i_536871578, 1);
1477 | if (!(((x_536871400.kids).length == L_536871579))) {
1478 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1479 | }
1480 |
1481 | }
1482 | };
1483 | };
1484 | if (((result_536871401.kids).length == 0)) {
1485 | result_536871401 = null;
1486 | }
1487 |
1488 | };
1489 |
1490 | return result_536871401;
1491 |
1492 | }
1493 |
1494 | function mergeTocs_536871429(orig_536871430, news_536871431) {
1495 | var result_536871432 = null;
1496 |
1497 | result_536871432 = uncovered_536871399(orig_536871430);
1498 | if ((result_536871432 == null)) {
1499 | result_536871432 = news_536871431;
1500 | }
1501 | else {
1502 | Label1: {
1503 | var i_536871444 = 0;
1504 | var colontmp__536871574 = 0;
1505 | colontmp__536871574 = (news_536871431.kids).length;
1506 | var i_536871575 = 0;
1507 | Label2: {
1508 | Label3: while (true) {
1509 | if (!(i_536871575 < colontmp__536871574)) break Label3;
1510 | i_536871444 = i_536871575;
1511 | result_536871432.kids.push(news_536871431.kids[chckIndx(i_536871444, 0, (news_536871431.kids).length - 1)]);;
1512 | i_536871575 = addInt(i_536871575, 1);
1513 | }
1514 | };
1515 | };
1516 | }
1517 |
1518 |
1519 | return result_536871432;
1520 |
1521 | }
1522 |
1523 | function buildToc_536871449(orig_536871450, types_536871451, procs_536871452) {
1524 | var result_536871453 = null;
1525 |
1526 | var newStuff_536871458 = {heading: null, kids: [], doSort: true, sortId: 0};
1527 | Label1: {
1528 | var t_536871462 = null;
1529 | var i_536871566 = 0;
1530 | var L_536871567 = (types_536871451).length;
1531 | Label2: {
1532 | Label3: while (true) {
1533 | if (!(i_536871566 < L_536871567)) break Label3;
1534 | t_536871462 = types_536871451[chckIndx(i_536871566, 0, (types_536871451).length - 1)];
1535 | var c_536871467 = {heading: t_536871462.cloneNode(true), kids: [], doSort: true, sortId: 0};
1536 | t_536871462.__karaxMarker__ = true;
1537 | Label4: {
1538 | var p_536871471 = null;
1539 | var i_536871563 = 0;
1540 | var L_536871564 = (procs_536871452).length;
1541 | Label5: {
1542 | Label6: while (true) {
1543 | if (!(i_536871563 < L_536871564)) break Label6;
1544 | p_536871471 = procs_536871452[chckIndx(i_536871563, 0, (procs_536871452).length - 1)];
1545 | if (!(p_536871471.hasOwnProperty('__karaxMarker__'))) {
1546 | var xx_536871472 = p_536871471.parentNode.getElementsByClassName("attachedType");
1547 | if ((((xx_536871472).length == 1) && (xx_536871472[chckIndx(0, 0, (xx_536871472).length - 1)].textContent == t_536871462.textContent))) {
1548 | var q_536871477 = tree_536871013("A", [text_536871038(p_536871471.title)]);
1549 | q_536871477.setAttribute("href", p_536871471.getAttribute("href"));
1550 | c_536871467.kids.push({heading: q_536871477, kids: [], sortId: 0, doSort: false});;
1551 | p_536871471.__karaxMarker__ = true;
1552 | }
1553 |
1554 | }
1555 |
1556 | i_536871563 = addInt(i_536871563, 1);
1557 | if (!(((procs_536871452).length == L_536871564))) {
1558 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1559 | }
1560 |
1561 | }
1562 | };
1563 | };
1564 | newStuff_536871458.kids.push(c_536871467);;
1565 | i_536871566 = addInt(i_536871566, 1);
1566 | if (!(((types_536871451).length == L_536871567))) {
1567 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1568 | }
1569 |
1570 | }
1571 | };
1572 | };
1573 | result_536871453 = mergeTocs_536871429(orig_536871450, newStuff_536871458);
1574 |
1575 | return result_536871453;
1576 |
1577 | }
1578 |
1579 | function add_536871031(parent_536871032, kid_536871033) {
1580 | if (((parent_536871032.nodeName == "TR") && ((kid_536871033.nodeName == "TD") || (kid_536871033.nodeName == "TH")))) {
1581 | var k_536871034 = document.createElement("TD");
1582 | k_536871034.appendChild(kid_536871033);
1583 | parent_536871032.appendChild(k_536871034);
1584 | }
1585 | else {
1586 | parent_536871032.appendChild(kid_536871033);
1587 | }
1588 |
1589 |
1590 |
1591 | }
1592 |
1593 | function setClass_536871035(e_536871036, value_536871037) {
1594 | e_536871036.setAttribute("class", value_536871037);
1595 |
1596 |
1597 | }
1598 |
1599 | function toHtml_536871147(x_536871148, isRoot_536871149) {
1600 |
1601 | function HEX3Aanonymous_536871167(a_536871168, b_536871169) {
1602 | var result_536871170 = 0;
1603 |
1604 | BeforeRet: {
1605 | if ((!((a_536871168.heading == null)) && !((b_536871169.heading == null)))) {
1606 | var x_536871179 = a_536871168.heading.textContent;
1607 | var y_536871180 = b_536871169.heading.textContent;
1608 | if ((x_536871179 < y_536871180)) {
1609 | result_536871170 = -1;
1610 | break BeforeRet;
1611 | }
1612 |
1613 | if ((y_536871180 < x_536871179)) {
1614 | result_536871170 = 1;
1615 | break BeforeRet;
1616 | }
1617 |
1618 | result_536871170 = 0;
1619 | break BeforeRet;
1620 | }
1621 | else {
1622 | result_536871170 = subInt(a_536871168.sortId, b_536871169.sortId);
1623 | break BeforeRet;
1624 | }
1625 |
1626 | };
1627 |
1628 | return result_536871170;
1629 |
1630 | }
1631 |
1632 | var result_536871150 = null;
1633 |
1634 | BeforeRet: {
1635 | if ((x_536871148 == null)) {
1636 | result_536871150 = null;
1637 | break BeforeRet;
1638 | }
1639 |
1640 | if (((x_536871148.kids).length == 0)) {
1641 | if ((x_536871148.heading == null)) {
1642 | result_536871150 = null;
1643 | break BeforeRet;
1644 | }
1645 |
1646 | result_536871150 = x_536871148.heading.cloneNode(true);
1647 | break BeforeRet;
1648 | }
1649 |
1650 | result_536871150 = tree_536871013("DIV", []);
1651 | if ((!((x_536871148.heading == null)) && !(x_536871148.heading.hasOwnProperty('__karaxMarker__')))) {
1652 | add_536871031(result_536871150, x_536871148.heading.cloneNode(true));
1653 | }
1654 |
1655 | var ul_536871166 = tree_536871013("UL", []);
1656 | if (isRoot_536871149) {
1657 | setClass_536871035(ul_536871166, "simple simple-toc");
1658 | }
1659 | else {
1660 | setClass_536871035(ul_536871166, "simple");
1661 | }
1662 |
1663 | if (x_536871148.doSort) {
1664 | x_536871148.kids.sort(HEX3Aanonymous_536871167);
1665 | }
1666 |
1667 | Label1: {
1668 | var k_536871192 = null;
1669 | var i_536871582 = 0;
1670 | var L_536871583 = (x_536871148.kids).length;
1671 | Label2: {
1672 | Label3: while (true) {
1673 | if (!(i_536871582 < L_536871583)) break Label3;
1674 | k_536871192 = x_536871148.kids[chckIndx(i_536871582, 0, (x_536871148.kids).length - 1)];
1675 | var y_536871193 = toHtml_536871147(k_536871192, false);
1676 | if (!((y_536871193 == null))) {
1677 | add_536871031(ul_536871166, tree_536871013("LI", [y_536871193]));
1678 | }
1679 |
1680 | i_536871582 = addInt(i_536871582, 1);
1681 | if (!(((x_536871148.kids).length == L_536871583))) {
1682 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1683 | }
1684 |
1685 | }
1686 | };
1687 | };
1688 | if (!((ul_536871166.childNodes.length == 0))) {
1689 | add_536871031(result_536871150, ul_536871166);
1690 | }
1691 |
1692 | if ((result_536871150.childNodes.length == 0)) {
1693 | result_536871150 = null;
1694 | }
1695 |
1696 | };
1697 |
1698 | return result_536871150;
1699 |
1700 | }
1701 |
1702 | function replaceById_536871041(id_536871042, newTree_536871043) {
1703 | var x_536871044 = document.getElementById(id_536871042);
1704 | x_536871044.parentNode.replaceChild(newTree_536871043, x_536871044);
1705 | newTree_536871043.id = id_536871042;
1706 |
1707 |
1708 | }
1709 |
1710 | function togglevis_536871500(d_536871501) {
1711 | if ((d_536871501.style.display == "none")) {
1712 | d_536871501.style.display = "inline";
1713 | }
1714 | else {
1715 | d_536871501.style.display = "none";
1716 | }
1717 |
1718 |
1719 |
1720 | }
1721 |
1722 | function groupBy(value_536871503) {
1723 | var toc_536871504 = document.getElementById("toc-list");
1724 | if ((alternative_536871499[0] == null)) {
1725 | var tt_536871512 = {heading: null, kids: [], sortId: 0, doSort: false};
1726 | toToc_536871248(toc_536871504, tt_536871512);
1727 | tt_536871512 = tt_536871512.kids[chckIndx(0, 0, (tt_536871512.kids).length - 1)];
1728 | var types_536871517 = [[]];
1729 | var procs_536871522 = [[]];
1730 | extractItems_536871082(tt_536871512, "Types", types_536871517, 0);
1731 | extractItems_536871082(tt_536871512, "Procs", procs_536871522, 0);
1732 | extractItems_536871082(tt_536871512, "Converters", procs_536871522, 0);
1733 | extractItems_536871082(tt_536871512, "Methods", procs_536871522, 0);
1734 | extractItems_536871082(tt_536871512, "Templates", procs_536871522, 0);
1735 | extractItems_536871082(tt_536871512, "Macros", procs_536871522, 0);
1736 | extractItems_536871082(tt_536871512, "Iterators", procs_536871522, 0);
1737 | var ntoc_536871523 = buildToc_536871449(tt_536871512, types_536871517[0], procs_536871522[0]);
1738 | var x_536871524 = toHtml_536871147(ntoc_536871523, true);
1739 | alternative_536871499[0] = tree_536871013("DIV", [x_536871524]);
1740 | }
1741 |
1742 | if ((value_536871503 == "type")) {
1743 | replaceById_536871041("tocRoot", alternative_536871499[0]);
1744 | }
1745 | else {
1746 | replaceById_536871041("tocRoot", tree_536871013("DIV", []));
1747 | }
1748 |
1749 | togglevis_536871500(document.getElementById("toc-list"));
1750 |
1751 |
1752 | }
1753 | var db_536871585 = [[]];
1754 | var contents_536871586 = [[]];
1755 | var oldtoc_536871750 = [null];
1756 | var timer_536871751 = [null];
1757 |
1758 | function nsuToLowerAsciiChar(c_704643156) {
1759 | var result_704643157 = 0;
1760 |
1761 | if ((ConstSet2[c_704643156] != undefined)) {
1762 | result_704643157 = (c_704643156 ^ 32);
1763 | }
1764 | else {
1765 | result_704643157 = c_704643156;
1766 | }
1767 |
1768 |
1769 | return result_704643157;
1770 |
1771 | }
1772 |
1773 | function fuzzyMatch_687865872(pattern_687865873, str_687865874) {
1774 | var Temporary4;
1775 | var Temporary5;
1776 | var Temporary6;
1777 | var Temporary7;
1778 | var Temporary8;
1779 |
1780 | var result_687865877 = {Field0: 0, Field1: false};
1781 |
1782 | var scoreState_687865878 = -100;
1783 | var headerMatched_687865879 = false;
1784 | var unmatchedLeadingCharCount_687865880 = 0;
1785 | var consecutiveMatchCount_687865881 = 0;
1786 | var strIndex_687865882 = 0;
1787 | var patIndex_687865883 = 0;
1788 | var score_687865884 = 0;
1789 | Label1: {
1790 | Label2: while (true) {
1791 | if (!((strIndex_687865882 < ((str_687865874) == null ? 0 : (str_687865874).length)) && (patIndex_687865883 < ((pattern_687865873) == null ? 0 : (pattern_687865873).length)))) break Label2;
1792 | Label3: {
1793 | var patternChar_687865887 = nsuToLowerAsciiChar(pattern_687865873.charCodeAt(chckIndx(patIndex_687865883, 0, (pattern_687865873).length - 1)));
1794 | var strChar_687865888 = nsuToLowerAsciiChar(str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1)));
1795 | if ((ConstSet3[patternChar_687865887] != undefined)) {
1796 | patIndex_687865883 = addInt(patIndex_687865883, 1);
1797 | break Label3;
1798 | }
1799 |
1800 | if ((ConstSet4[strChar_687865888] != undefined)) {
1801 | strIndex_687865882 = addInt(strIndex_687865882, 1);
1802 | break Label3;
1803 | }
1804 |
1805 | if ((!(headerMatched_687865879) && (strChar_687865888 == 58))) {
1806 | headerMatched_687865879 = true;
1807 | scoreState_687865878 = -100;
1808 | score_687865884 = ((Math.floor((0.5 * score_687865884))) | 0);
1809 | patIndex_687865883 = 0;
1810 | strIndex_687865882 = addInt(strIndex_687865882, 1);
1811 | break Label3;
1812 | }
1813 |
1814 | if ((strChar_687865888 == patternChar_687865887)) {
1815 | switch (scoreState_687865878) {
1816 | case -100:
1817 | case 20:
1818 | scoreState_687865878 = 10;
1819 | break;
1820 | case 0:
1821 | scoreState_687865878 = 5;
1822 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1823 | break;
1824 | case 10:
1825 | case 5:
1826 | consecutiveMatchCount_687865881 = addInt(consecutiveMatchCount_687865881, 1);
1827 | scoreState_687865878 = 5;
1828 | score_687865884 = addInt(score_687865884, mulInt(5, consecutiveMatchCount_687865881));
1829 | if ((scoreState_687865878 == 10)) {
1830 | score_687865884 = addInt(score_687865884, 10);
1831 | }
1832 |
1833 | var onBoundary_687865940 = (patIndex_687865883 == ((pattern_687865873) == null ? -1 : (pattern_687865873).length - 1));
1834 | if ((!(onBoundary_687865940) && (strIndex_687865882 < ((str_687865874) == null ? -1 : (str_687865874).length - 1)))) {
1835 | var nextPatternChar_687865941 = nsuToLowerAsciiChar(pattern_687865873.charCodeAt(chckIndx(addInt(patIndex_687865883, 1), 0, (pattern_687865873).length - 1)));
1836 | var nextStrChar_687865942 = nsuToLowerAsciiChar(str_687865874.charCodeAt(chckIndx(addInt(strIndex_687865882, 1), 0, (str_687865874).length - 1)));
1837 | if (!!((ConstSet5[nextStrChar_687865942] != undefined))) Temporary4 = false; else { Temporary4 = !((nextStrChar_687865942 == nextPatternChar_687865941)); } onBoundary_687865940 = Temporary4;
1838 | }
1839 |
1840 | if (onBoundary_687865940) {
1841 | scoreState_687865878 = 20;
1842 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1843 | }
1844 |
1845 | break;
1846 | case -1:
1847 | case -3:
1848 | if (!((ConstSet6[str_687865874.charCodeAt(chckIndx(subInt(strIndex_687865882, 1), 0, (str_687865874).length - 1))] != undefined))) Temporary5 = true; else { if (!(ConstSet7[str_687865874.charCodeAt(chckIndx(subInt(strIndex_687865882, 1), 0, (str_687865874).length - 1))] != undefined)) Temporary6 = false; else { Temporary6 = (ConstSet8[str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1))] != undefined); } Temporary5 = Temporary6; } var isLeadingChar_687865966 = Temporary5;
1849 | if (isLeadingChar_687865966) {
1850 | scoreState_687865878 = 10;
1851 | }
1852 | else {
1853 | scoreState_687865878 = 0;
1854 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1855 | }
1856 |
1857 | break;
1858 | }
1859 | patIndex_687865883 = addInt(patIndex_687865883, 1);
1860 | }
1861 | else {
1862 | switch (scoreState_687865878) {
1863 | case -100:
1864 | scoreState_687865878 = -3;
1865 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1866 | break;
1867 | case 5:
1868 | scoreState_687865878 = -1;
1869 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1870 | consecutiveMatchCount_687865881 = 0;
1871 | break;
1872 | case -3:
1873 | if ((unmatchedLeadingCharCount_687865880 < 3)) {
1874 | scoreState_687865878 = -3;
1875 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1876 | }
1877 |
1878 | unmatchedLeadingCharCount_687865880 = addInt(unmatchedLeadingCharCount_687865880, 1);
1879 | break;
1880 | default:
1881 | scoreState_687865878 = -1;
1882 | score_687865884 = addInt(score_687865884, scoreState_687865878);
1883 | break;
1884 | }
1885 | }
1886 |
1887 | strIndex_687865882 = addInt(strIndex_687865882, 1);
1888 | };
1889 | }
1890 | };
1891 | if (!(patIndex_687865883 == ((pattern_687865873) == null ? 0 : (pattern_687865873).length))) Temporary7 = false; else { if ((strIndex_687865882 == ((str_687865874) == null ? 0 : (str_687865874).length))) Temporary8 = true; else { Temporary8 = !((ConstSet9[str_687865874.charCodeAt(chckIndx(strIndex_687865882, 0, (str_687865874).length - 1))] != undefined)); } Temporary7 = Temporary8; } if (Temporary7) {
1892 | score_687865884 = addInt(score_687865884, 10);
1893 | }
1894 |
1895 | var colontmp__536871811 = nimMax(0, score_687865884);
1896 | var colontmp__536871812 = (0 < score_687865884);
1897 | result_687865877 = nimCopy(result_687865877, {Field0: colontmp__536871811, Field1: colontmp__536871812}, NTI687865870);
1898 |
1899 | return result_687865877;
1900 |
1901 | }
1902 |
1903 | function escapeCString_536871587(x_536871588, x_536871588_Idx) {
1904 | var s_536871589 = [];
1905 | Label1: {
1906 | var c_536871590 = 0;
1907 | var iHEX60gensym6_536871815 = 0;
1908 | var nHEX60gensym6_536871816 = ((x_536871588[x_536871588_Idx]) == null ? 0 : (x_536871588[x_536871588_Idx]).length);
1909 | Label2: {
1910 | Label3: while (true) {
1911 | if (!(iHEX60gensym6_536871815 < nHEX60gensym6_536871816)) break Label3;
1912 | c_536871590 = x_536871588[x_536871588_Idx].charCodeAt(chckIndx(iHEX60gensym6_536871815, 0, (x_536871588[x_536871588_Idx]).length - 1));
1913 | switch (c_536871590) {
1914 | case 60:
1915 | s_536871589.push.apply(s_536871589, [38,108,116,59]);;
1916 | break;
1917 | case 62:
1918 | s_536871589.push.apply(s_536871589, [38,103,116,59]);;
1919 | break;
1920 | default:
1921 | addChar(s_536871589, c_536871590);;
1922 | break;
1923 | }
1924 | iHEX60gensym6_536871815 = addInt(iHEX60gensym6_536871815, 1);
1925 | }
1926 | };
1927 | };
1928 | x_536871588[x_536871588_Idx] = toJSStr(s_536871589);
1929 |
1930 |
1931 | }
1932 |
1933 | function dosearch_536871591(value_536871592) {
1934 |
1935 | function HEX3Aanonymous_536871649(a_536871654, b_536871655) {
1936 | var result_536871660 = 0;
1937 |
1938 | result_536871660 = subInt(b_536871655["Field1"], a_536871654["Field1"]);
1939 |
1940 | return result_536871660;
1941 |
1942 | }
1943 |
1944 | var result_536871593 = null;
1945 |
1946 | if (((db_536871585[0]).length == 0)) {
1947 | var stuff_536871597 = null;
1948 | var request = new XMLHttpRequest();
1949 | request.open("GET", document.getElementById("indexLink").href, false);
1950 | request.send(null);
1951 |
1952 | var doc = document.implementation.createHTMLDocument("theindex");
1953 | doc.documentElement.innerHTML = request.responseText;
1954 |
1955 | stuff_536871597 = doc.documentElement;
1956 |
1957 | db_536871585[0] = nimCopy(null, stuff_536871597.getElementsByClassName("reference"), NTI671089087);
1958 | contents_536871586[0] = nimCopy(null, [], NTI536871446);
1959 | Label1: {
1960 | var ahref_536871623 = null;
1961 | var i_536871796 = 0;
1962 | var L_536871797 = (db_536871585[0]).length;
1963 | Label2: {
1964 | Label3: while (true) {
1965 | if (!(i_536871796 < L_536871797)) break Label3;
1966 | ahref_536871623 = db_536871585[0][chckIndx(i_536871796, 0, (db_536871585[0]).length - 1)];
1967 | contents_536871586[0].push(ahref_536871623.getAttribute("data-doc-search-tag"));;
1968 | i_536871796 = addInt(i_536871796, 1);
1969 | if (!(((db_536871585[0]).length == L_536871797))) {
1970 | failedAssertImpl_251658292(makeNimstrLit("iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it"));
1971 | }
1972 |
1973 | }
1974 | };
1975 | };
1976 | }
1977 |
1978 | var ul_536871628 = tree_536871013("UL", []);
1979 | result_536871593 = tree_536871013("DIV", []);
1980 | setClass_536871035(result_536871593, "search_results");
1981 | var matches_536871633 = [];
1982 | Label4: {
1983 | var i_536871641 = 0;
1984 | var colontmp__536871801 = 0;
1985 | colontmp__536871801 = (db_536871585[0]).length;
1986 | var i_536871802 = 0;
1987 | Label5: {
1988 | Label6: while (true) {
1989 | if (!(i_536871802 < colontmp__536871801)) break Label6;
1990 | i_536871641 = i_536871802;
1991 | Label7: {
1992 | var c_536871642 = contents_536871586[0][chckIndx(i_536871641, 0, (contents_536871586[0]).length - 1)];
1993 | if (((c_536871642 == "Examples") || (c_536871642 == "PEG construction"))) {
1994 | break Label7;
1995 | }
1996 |
1997 | var colontmp__536871808 = fuzzyMatch_687865872(value_536871592, c_536871642);
1998 | var score_536871643 = colontmp__536871808["Field0"];
1999 | var matched_536871644 = colontmp__536871808["Field1"];
2000 | if (matched_536871644) {
2001 | matches_536871633.push({Field0: db_536871585[0][chckIndx(i_536871641, 0, (db_536871585[0]).length - 1)], Field1: score_536871643});;
2002 | }
2003 |
2004 | };
2005 | i_536871802 = addInt(i_536871802, 1);
2006 | }
2007 | };
2008 | };
2009 | matches_536871633.sort(HEX3Aanonymous_536871649);
2010 | Label8: {
2011 | var i_536871677 = 0;
2012 | var colontmp__536871805 = 0;
2013 | colontmp__536871805 = nimMin((matches_536871633).length, 29);
2014 | var i_536871806 = 0;
2015 | Label9: {
2016 | Label10: while (true) {
2017 | if (!(i_536871806 < colontmp__536871805)) break Label10;
2018 | i_536871677 = i_536871806;
2019 | matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"].innerHTML = matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"].getAttribute("data-doc-search-tag");
2020 | escapeCString_536871587(matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"], "innerHTML");
2021 | add_536871031(ul_536871628, tree_536871013("LI", [matches_536871633[chckIndx(i_536871677, 0, (matches_536871633).length - 1)]["Field0"]]));
2022 | i_536871806 = addInt(i_536871806, 1);
2023 | }
2024 | };
2025 | };
2026 | if ((ul_536871628.childNodes.length == 0)) {
2027 | add_536871031(result_536871593, tree_536871013("B", [text_536871038("no search results")]));
2028 | }
2029 | else {
2030 | add_536871031(result_536871593, tree_536871013("B", [text_536871038("search results")]));
2031 | add_536871031(result_536871593, ul_536871628);
2032 | }
2033 |
2034 |
2035 | return result_536871593;
2036 |
2037 | }
2038 |
2039 | function search() {
2040 |
2041 | function wrapper_536871762() {
2042 | var elem_536871763 = document.getElementById("searchInput");
2043 | var value_536871764 = elem_536871763.value;
2044 | if (!((((value_536871764) == null ? 0 : (value_536871764).length) == 0))) {
2045 | if ((oldtoc_536871750[0] == null)) {
2046 | oldtoc_536871750[0] = document.getElementById("tocRoot");
2047 | }
2048 |
2049 | var results_536871768 = dosearch_536871591(value_536871764);
2050 | replaceById_536871041("tocRoot", results_536871768);
2051 | }
2052 | else {
2053 | if (!((oldtoc_536871750[0] == null))) {
2054 | replaceById_536871041("tocRoot", oldtoc_536871750[0]);
2055 | }
2056 | }
2057 |
2058 |
2059 | }
2060 |
2061 | if (!((timer_536871751[0] == null))) {
2062 | clearTimeout(timer_536871751[0]);
2063 | }
2064 |
2065 | timer_536871751[0] = setTimeout(wrapper_536871762, 400);
2066 |
2067 |
2068 | }
2069 |
2070 | function copyToClipboard() {
2071 |
2072 | function updatePreTags() {
2073 |
2074 | const allPreTags = document.querySelectorAll("pre")
2075 |
2076 | allPreTags.forEach((e) => {
2077 |
2078 | const div = document.createElement("div")
2079 | div.classList.add("copyToClipBoard")
2080 |
2081 | const preTag = document.createElement("pre")
2082 | preTag.innerHTML = e.innerHTML
2083 |
2084 | const button = document.createElement("button")
2085 | button.value = e.textContent.replace('...', '')
2086 | button.classList.add("copyToClipBoardBtn")
2087 | button.style.cursor = "pointer"
2088 |
2089 | div.appendChild(preTag)
2090 | div.appendChild(button)
2091 |
2092 | e.outerHTML = div.outerHTML
2093 |
2094 | })
2095 | }
2096 |
2097 |
2098 | function copyTextToClipboard(e) {
2099 | const clipBoardContent = e.target.value
2100 | navigator.clipboard.writeText(clipBoardContent).then(function() {
2101 | e.target.style.setProperty("--clipboard-image", "var(--clipboard-image-selected)")
2102 | }, function(err) {
2103 | console.error("Could not copy text: ", err);
2104 | });
2105 | }
2106 |
2107 | window.addEventListener("click", (e) => {
2108 | if (e.target.classList.contains("copyToClipBoardBtn")) {
2109 | copyTextToClipboard(e)
2110 | }
2111 | })
2112 |
2113 | window.addEventListener("mouseover", (e) => {
2114 | if (e.target.nodeName === "PRE") {
2115 | e.target.nextElementSibling.style.setProperty("--clipboard-image", "var(--clipboard-image-normal)")
2116 | }
2117 | })
2118 |
2119 | window.addEventListener("DOMContentLoaded", updatePreTags)
2120 |
2121 |
2122 |
2123 |
2124 | }
2125 | copyToClipboard();
2126 | window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
2127 |
--------------------------------------------------------------------------------
/docs/nimdoc.out.css:
--------------------------------------------------------------------------------
1 | /*
2 | Stylesheet for use with Docutils/rst2html.
3 |
4 | See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
5 | customize this style sheet.
6 |
7 | Modified from Chad Skeeters' rst2html-style
8 | https://bitbucket.org/cskeeters/rst2html-style/
9 |
10 | Modified by Boyd Greenfield and narimiran
11 | */
12 |
13 | :root {
14 | --primary-background: #fff;
15 | --secondary-background: ghostwhite;
16 | --third-background: #e8e8e8;
17 | --info-background: #50c050;
18 | --warning-background: #c0a000;
19 | --error-background: #e04040;
20 | --border: #dde;
21 | --text: #222;
22 | --anchor: #07b;
23 | --anchor-focus: #607c9f;
24 | --input-focus: #1fa0eb;
25 | --strong: #3c3c3c;
26 | --hint: #9A9A9A;
27 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1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");
28 |
29 | --keyword: #5e8f60;
30 | --identifier: #222;
31 | --comment: #484a86;
32 | --operator: #155da4;
33 | --punctuation: black;
34 | --other: black;
35 | --escapeSequence: #c4891b;
36 | --number: #252dbe;
37 | --literal: #a4255b;
38 | --program: #6060c0;
39 | --option: #508000;
40 | --raw-data: #a4255b;
41 |
42 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
43 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
44 | --clipboard-image: var(--clipboard-image-normal)
45 | }
46 |
47 | [data-theme="dark"] {
48 | --primary-background: #171921;
49 | --secondary-background: #1e202a;
50 | --third-background: #2b2e3b;
51 | --info-background: #008000;
52 | --warning-background: #807000;
53 | --error-background: #c03000;
54 | --border: #0e1014;
55 | --text: #fff;
56 | --anchor: #8be9fd;
57 | --anchor-focus: #8be9fd;
58 | --input-focus: #8be9fd;
59 | --strong: #bd93f9;
60 | --hint: #7A7C85;
61 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
62 |
63 | --keyword: #ff79c6;
64 | --identifier: #f8f8f2;
65 | --comment: #6272a4;
66 | --operator: #ff79c6;
67 | --punctuation: #f8f8f2;
68 | --other: #f8f8f2;
69 | --escapeSequence: #bd93f9;
70 | --number: #bd93f9;
71 | --literal: #f1fa8c;
72 | --program: #9090c0;
73 | --option: #90b010;
74 | --raw-data: #8be9fd;
75 |
76 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
77 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
78 | --clipboard-image: var(--clipboard-image-normal);
79 | }
80 |
81 | @media (prefers-color-scheme: dark) {
82 | [data-theme="auto"] {
83 | --primary-background: #171921;
84 | --secondary-background: #1e202a;
85 | --third-background: #2b2e3b;
86 | --info-background: #008000;
87 | --warning-background: #807000;
88 | --error-background: #c03000;
89 | --border: #0e1014;
90 | --text: #fff;
91 | --anchor: #8be9fd;
92 | --anchor-focus: #8be9fd;
93 | --input-focus: #8be9fd;
94 | --strong: #bd93f9;
95 | --hint: #7A7C85;
96 | --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
97 |
98 | --keyword: #ff79c6;
99 | --identifier: #f8f8f2;
100 | --comment: #6272a4;
101 | --operator: #ff79c6;
102 | --punctuation: #f8f8f2;
103 | --other: #f8f8f2;
104 | --escapeSequence: #bd93f9;
105 | --number: #bd93f9;
106 | --literal: #f1fa8c;
107 | --program: #9090c0;
108 | --option: #90b010;
109 | --raw-data: #8be9fd;
110 |
111 | --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
112 | --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
113 | --clipboard-image: var(--clipboard-image-normal);
114 | }
115 | }
116 |
117 | .theme-select-wrapper {
118 | display: flex;
119 | align-items: center;
120 | }
121 |
122 | html {
123 | font-size: 100%;
124 | -webkit-text-size-adjust: 100%;
125 | -ms-text-size-adjust: 100%; }
126 |
127 | body {
128 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
129 | font-weight: 400;
130 | font-size: 1.125em;
131 | line-height: 1.5;
132 | color: var(--text);
133 | background-color: var(--primary-background); }
134 |
135 | /* Skeleton grid */
136 | .container {
137 | position: relative;
138 | width: 100%;
139 | max-width: 1050px;
140 | margin: 0 auto;
141 | padding: 0;
142 | box-sizing: border-box; }
143 |
144 | .column, .columns {
145 | width: 100%;
146 | float: left;
147 | box-sizing: border-box;
148 | margin-left: 1%; }
149 |
150 | @media print {
151 | #global-links, .link-seesrc, .theme-switch-wrapper, #searchInputDiv, .search-groupby {
152 | display:none;
153 | }
154 | .columns {
155 | width:100% !important;
156 | }
157 | }
158 |
159 | .column:first-child, .columns:first-child {
160 | margin-left: 0; }
161 |
162 | .container .row {
163 | display: flex; }
164 |
165 | .three.columns {
166 | width: 25.0%;
167 | height: 100vh;
168 | position: sticky;
169 | top: 0px;
170 | overflow-y: auto;
171 | padding: 2px;
172 | }
173 |
174 | .nine.columns {
175 | width: 75.0%;
176 | padding-left: 1.5em; }
177 |
178 | .twelve.columns {
179 | width: 100%;
180 | margin-left: 0; }
181 |
182 | @media screen and (max-width: 860px) {
183 | .three.columns {
184 | display: none;
185 | }
186 | .nine.columns {
187 | width: 98.0%;
188 | }
189 | body {
190 | font-size: 1em;
191 | line-height: 1.35;
192 | }
193 | }
194 |
195 | cite {
196 | font-style: italic !important; }
197 |
198 |
199 | /* Nim search input */
200 | div#searchInputDiv {
201 | margin-bottom: 1em;
202 | }
203 | input#searchInput {
204 | width: 80%;
205 | }
206 |
207 | /*
208 | * Some custom formatting for input forms.
209 | * This also fixes input form colors on Firefox with a dark system theme on Linux.
210 | */
211 | input {
212 | -moz-appearance: none;
213 | background-color: var(--secondary-background);
214 | color: var(--text);
215 | border: 1px solid var(--border);
216 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
217 | font-size: 0.9em;
218 | padding: 6px;
219 | }
220 |
221 | input:focus {
222 | border: 1px solid var(--input-focus);
223 | box-shadow: 0 0 3px var(--input-focus);
224 | }
225 |
226 | select {
227 | -moz-appearance: none;
228 | background-color: var(--secondary-background);
229 | color: var(--text);
230 | border: 1px solid var(--border);
231 | font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
232 | font-size: 0.9em;
233 | padding: 6px;
234 | }
235 |
236 | select:focus {
237 | border: 1px solid var(--input-focus);
238 | box-shadow: 0 0 3px var(--input-focus);
239 | }
240 |
241 | /* Docgen styles */
242 |
243 | :target {
244 | border: 2px solid #B5651D;
245 | border-style: dotted;
246 | }
247 |
248 | /* Links */
249 | a {
250 | color: var(--anchor);
251 | text-decoration: none;
252 | }
253 |
254 | a span.Identifier {
255 | text-decoration: underline;
256 | text-decoration-color: #aab;
257 | }
258 |
259 | a.reference-toplevel {
260 | font-weight: bold;
261 | }
262 |
263 | a.nimdoc {
264 | word-spacing: 0.3em;
265 | }
266 |
267 | a.toc-backref {
268 | text-decoration: none;
269 | color: var(--text);
270 | }
271 |
272 | a.link-seesrc {
273 | color: #607c9f;
274 | font-size: 0.9em;
275 | font-style: italic;
276 | }
277 |
278 | a:hover, a:focus {
279 | color: var(--anchor-focus);
280 | text-decoration: underline;
281 | }
282 |
283 | a:hover span.Identifier {
284 | color: var(--anchor);
285 | }
286 |
287 |
288 | sub, sup {
289 | position: relative;
290 | font-size: 75%;
291 | line-height: 0;
292 | vertical-align: baseline; }
293 |
294 | sup {
295 | top: -0.5em; }
296 |
297 | sub {
298 | bottom: -0.25em; }
299 |
300 | img {
301 | width: auto;
302 | height: auto;
303 | max-width: 100%;
304 | vertical-align: middle;
305 | border: 0;
306 | -ms-interpolation-mode: bicubic; }
307 |
308 | @media print {
309 | * {
310 | color: black !important;
311 | text-shadow: none !important;
312 | background: transparent !important;
313 | box-shadow: none !important; }
314 |
315 | a, a:visited {
316 | text-decoration: underline; }
317 |
318 | a[href]:after {
319 | content: " (" attr(href) ")"; }
320 |
321 | abbr[title]:after {
322 | content: " (" attr(title) ")"; }
323 |
324 | .ir a:after,
325 | a[href^="javascript:"]:after,
326 | a[href^="#"]:after {
327 | content: ""; }
328 |
329 | pre, blockquote {
330 | border: 1px solid #999;
331 | page-break-inside: avoid; }
332 |
333 | thead {
334 | display: table-header-group; }
335 |
336 | tr, img {
337 | page-break-inside: avoid; }
338 |
339 | img {
340 | max-width: 100% !important; }
341 |
342 | @page {
343 | margin: 0.5cm; }
344 |
345 | h1 {
346 | page-break-before: always; }
347 |
348 | h1.title {
349 | page-break-before: avoid; }
350 |
351 | p, h2, h3 {
352 | orphans: 3;
353 | widows: 3; }
354 |
355 | h2, h3 {
356 | page-break-after: avoid; }
357 | }
358 |
359 |
360 | p {
361 | margin-top: 0.5em;
362 | margin-bottom: 0.5em; }
363 |
364 | small {
365 | font-size: 85%; }
366 |
367 | strong {
368 | font-weight: 600;
369 | font-size: 0.95em;
370 | color: var(--strong); }
371 |
372 | em {
373 | font-style: italic; }
374 |
375 | h1 {
376 | font-size: 1.8em;
377 | font-weight: 400;
378 | padding-bottom: .25em;
379 | border-bottom: 6px solid var(--third-background);
380 | margin-top: 2.5em;
381 | margin-bottom: 1em;
382 | line-height: 1.2em; }
383 |
384 | h1.title {
385 | padding-bottom: 1em;
386 | border-bottom: 0px;
387 | font-size: 2.5em;
388 | text-align: center;
389 | font-weight: 900;
390 | margin-top: 0.75em;
391 | margin-bottom: 0em; }
392 |
393 | h2 {
394 | font-size: 1.3em;
395 | margin-top: 2em; }
396 |
397 | h2.subtitle {
398 | margin-top: 0em;
399 | text-align: center; }
400 |
401 | h3 {
402 | font-size: 1.125em;
403 | font-style: italic;
404 | margin-top: 1.5em; }
405 |
406 | h4 {
407 | font-size: 1.125em;
408 | margin-top: 1em; }
409 |
410 | h5 {
411 | font-size: 1.125em;
412 | margin-top: 0.75em; }
413 |
414 | h6 {
415 | font-size: 1.1em; }
416 |
417 |
418 | ul, ol {
419 | padding: 0;
420 | margin-top: 0.5em;
421 | margin-left: 0.75em; }
422 |
423 | ul ul, ul ol, ol ol, ol ul {
424 | margin-bottom: 0;
425 | margin-left: 1.25em; }
426 |
427 | ul.simple > li {
428 | list-style-type: circle; }
429 |
430 | ul.simple-boot li {
431 | list-style-type: none;
432 | margin-left: 0em;
433 | margin-bottom: 0.5em; }
434 |
435 | ol.simple > li, ul.simple > li {
436 | margin-bottom: 0.2em;
437 | margin-left: 0.4em }
438 |
439 | ul.simple.simple-toc > li {
440 | margin-top: 1em; }
441 |
442 | ul.simple-toc {
443 | list-style: none;
444 | font-size: 0.9em;
445 | margin-left: -0.3em;
446 | margin-top: 1em; }
447 |
448 | ul.simple-toc > li {
449 | list-style-type: none; }
450 |
451 | ul.simple-toc-section {
452 | list-style-type: circle;
453 | margin-left: 0.8em;
454 | color: #6c9aae; }
455 |
456 | ul.nested-toc-section {
457 | list-style-type: circle;
458 | margin-left: -0.75em;
459 | color: var(--text); }
460 |
461 | ul.nested-toc-section > li {
462 | margin-left: 1.25em; }
463 |
464 |
465 | ol.arabic {
466 | list-style: decimal; }
467 |
468 | ol.loweralpha {
469 | list-style: lower-alpha; }
470 |
471 | ol.upperalpha {
472 | list-style: upper-alpha; }
473 |
474 | ol.lowerroman {
475 | list-style: lower-roman; }
476 |
477 | ol.upperroman {
478 | list-style: upper-roman; }
479 |
480 | ul.auto-toc {
481 | list-style-type: none; }
482 |
483 |
484 | dl {
485 | margin-bottom: 1.5em; }
486 |
487 | dt {
488 | margin-bottom: -0.5em;
489 | margin-left: 0.0em; }
490 |
491 | dd {
492 | margin-left: 2.0em;
493 | margin-bottom: 3.0em;
494 | margin-top: 0.5em; }
495 |
496 |
497 | hr {
498 | margin: 2em 0;
499 | border: 0;
500 | border-top: 1px solid #aaa; }
501 |
502 | hr.footnote {
503 | width: 25%;
504 | border-top: 0.15em solid #999;
505 | margin-bottom: 0.15em;
506 | margin-top: 0.15em;
507 | }
508 | div.footnote-group {
509 | margin-left: 1em;
510 | }
511 | div.footnote-label {
512 | display: inline-block;
513 | min-width: 1.7em;
514 | }
515 |
516 | div.option-list {
517 | border: 0.1em solid var(--border);
518 | }
519 | div.option-list-item {
520 | padding-left: 12em;
521 | padding-right: 0;
522 | padding-bottom: 0.3em;
523 | padding-top: 0.3em;
524 | }
525 | div.odd {
526 | background-color: var(--secondary-background);
527 | }
528 | div.option-list-label {
529 | margin-left: -11.5em;
530 | margin-right: 0em;
531 | min-width: 11.5em;
532 | display: inline-block;
533 | vertical-align: top;
534 | }
535 | div.option-list-description {
536 | width: calc(100% - 1em);
537 | padding-left: 1em;
538 | padding-right: 0;
539 | display: inline-block;
540 | }
541 |
542 | blockquote {
543 | font-size: 0.9em;
544 | font-style: italic;
545 | padding-left: 0.5em;
546 | margin-left: 0;
547 | border-left: 5px solid #bbc;
548 | }
549 |
550 | blockquote.markdown-quote {
551 | font-size: 0.9rem; /* use rem to avoid recursion */
552 | font-style: normal;
553 | }
554 |
555 | .pre, span.tok {
556 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
557 | font-weight: 500;
558 | font-size: 0.85em;
559 | color: var(--text);
560 | background-color: var(--third-background);
561 | padding-left: 3px;
562 | padding-right: 3px;
563 | border-radius: 4px;
564 | }
565 |
566 | span.tok {
567 | border: 1px solid #808080;
568 | padding-bottom: 0.1em;
569 | margin-right: 0.2em;
570 | }
571 |
572 | .copyToClipBoard {
573 | position: relative;
574 | }
575 |
576 | pre {
577 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
578 | color: var(--text);
579 | font-weight: 500;
580 | display: inline-block;
581 | box-sizing: border-box;
582 | min-width: 100%;
583 | padding: 0.5em;
584 | margin-top: 0.5em;
585 | margin-bottom: 0.5em;
586 | font-size: 0.85em;
587 | white-space: pre !important;
588 | overflow-y: hidden;
589 | overflow-x: visible;
590 | background-color: var(--secondary-background);
591 | border: 1px solid var(--border);
592 | -webkit-border-radius: 6px;
593 | -moz-border-radius: 6px;
594 | border-radius: 6px;
595 | }
596 |
597 | .copyToClipBoardBtn {
598 | visibility: hidden;
599 | position: absolute;
600 | width: 24px;
601 | border-radius: 4px;
602 | background-image: var(--clipboard-image);
603 | right: 5px;
604 | top: 13px;
605 | background-color: var(--secondary-background);
606 | padding: 11px;
607 | border: 0;
608 | }
609 |
610 | .copyToClipBoard:hover .copyToClipBoardBtn {
611 | visibility: visible;
612 | }
613 |
614 | .pre-scrollable {
615 | max-height: 340px;
616 | overflow-y: scroll; }
617 |
618 |
619 | /* Nim line-numbered tables */
620 | .line-nums-table {
621 | width: 100%;
622 | table-layout: fixed; }
623 |
624 | table.line-nums-table {
625 | border-radius: 4px;
626 | border: 1px solid #cccccc;
627 | background-color: ghostwhite;
628 | border-collapse: separate;
629 | margin-top: 15px;
630 | margin-bottom: 25px; }
631 |
632 | .line-nums-table tbody {
633 | border: none; }
634 |
635 | .line-nums-table td pre {
636 | border: none;
637 | background-color: transparent; }
638 |
639 | .line-nums-table td.blob-line-nums {
640 | width: 28px; }
641 |
642 | .line-nums-table td.blob-line-nums pre {
643 | color: #b0b0b0;
644 | -webkit-filter: opacity(75%);
645 | filter: opacity(75%);
646 | text-align: right;
647 | border-color: transparent;
648 | background-color: transparent;
649 | padding-left: 0px;
650 | margin-left: 0px;
651 | padding-right: 0px;
652 | margin-right: 0px; }
653 |
654 |
655 | table {
656 | max-width: 100%;
657 | background-color: transparent;
658 | margin-top: 0.5em;
659 | margin-bottom: 1.5em;
660 | border-collapse: collapse;
661 | border-color: var(--third-background);
662 | border-spacing: 0;
663 | font-size: 0.9em;
664 | }
665 |
666 | table th, table td {
667 | padding: 0px 0.5em 0px;
668 | border-color: var(--third-background);
669 | }
670 |
671 | table th {
672 | background-color: var(--third-background);
673 | border-color: var(--third-background);
674 | font-weight: bold; }
675 |
676 | table th.docinfo-name {
677 | background-color: transparent;
678 | text-align: right;
679 | }
680 |
681 | table tr:hover {
682 | background-color: var(--third-background); }
683 |
684 |
685 | /* rst2html default used to remove borders from tables and images */
686 | .borderless, table.borderless td, table.borderless th {
687 | border: 0; }
688 |
689 | table.borderless td, table.borderless th {
690 | /* Override padding for "table.docutils td" with "! important".
691 | The right padding separates the table cells. */
692 | padding: 0 0.5em 0 0 !important; }
693 |
694 | .admonition {
695 | padding: 0.3em;
696 | background-color: var(--secondary-background);
697 | border-left: 0.4em solid #7f7f84;
698 | margin-bottom: 0.5em;
699 | -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
700 | -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
701 | box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
702 | }
703 | .admonition-info {
704 | border-color: var(--info-background);
705 | }
706 | .admonition-info-text {
707 | color: var(--info-background);
708 | }
709 | .admonition-warning {
710 | border-color: var(--warning-background);
711 | }
712 | .admonition-warning-text {
713 | color: var(--warning-background);
714 | }
715 | .admonition-error {
716 | border-color: var(--error-background);
717 | }
718 | .admonition-error-text {
719 | color: var(--error-background);
720 | }
721 |
722 | .first {
723 | /* Override more specific margin styles with "! important". */
724 | margin-top: 0 !important; }
725 |
726 | .last, .with-subtitle {
727 | margin-bottom: 0 !important; }
728 |
729 | .hidden {
730 | display: none; }
731 |
732 | blockquote.epigraph {
733 | margin: 2em 5em; }
734 |
735 | dl.docutils dd {
736 | margin-bottom: 0.5em; }
737 |
738 | object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
739 | overflow: hidden; }
740 |
741 |
742 | div.figure {
743 | margin-left: 2em;
744 | margin-right: 2em; }
745 |
746 | div.footer, div.header {
747 | clear: both;
748 | text-align: center;
749 | color: #666;
750 | font-size: smaller; }
751 |
752 | div.footer {
753 | padding-top: 5em; }
754 |
755 | div.line-block {
756 | display: block;
757 | margin-top: 1em;
758 | margin-bottom: 1em; }
759 |
760 | div.line-block div.line-block {
761 | margin-top: 0;
762 | margin-bottom: 0;
763 | margin-left: 1.5em; }
764 |
765 | div.topic {
766 | margin: 2em; }
767 |
768 | div.search_results {
769 | background-color: var(--third-background);
770 | margin: 3em;
771 | padding: 1em;
772 | border: 1px solid #4d4d4d; }
773 |
774 | div#global-links ul {
775 | margin-left: 0;
776 | list-style-type: none; }
777 |
778 | div#global-links > simple-boot {
779 | margin-left: 3em; }
780 |
781 | hr.docutils {
782 | width: 75%; }
783 |
784 | img.align-left, .figure.align-left, object.align-left {
785 | clear: left;
786 | float: left;
787 | margin-right: 1em; }
788 |
789 | img.align-right, .figure.align-right, object.align-right {
790 | clear: right;
791 | float: right;
792 | margin-left: 1em; }
793 |
794 | img.align-center, .figure.align-center, object.align-center {
795 | display: block;
796 | margin-left: auto;
797 | margin-right: auto; }
798 |
799 | .align-left {
800 | text-align: left; }
801 |
802 | .align-center {
803 | clear: both;
804 | text-align: center; }
805 |
806 | .align-right {
807 | text-align: right; }
808 |
809 | /* reset inner alignment in figures */
810 | div.align-right {
811 | text-align: inherit; }
812 |
813 | p.attribution {
814 | text-align: right;
815 | margin-left: 50%; }
816 |
817 | p.caption {
818 | font-style: italic; }
819 |
820 | p.credits {
821 | font-style: italic;
822 | font-size: smaller; }
823 |
824 | p.label {
825 | white-space: nowrap; }
826 |
827 | p.rubric {
828 | font-weight: bold;
829 | font-size: larger;
830 | color: maroon;
831 | text-align: center; }
832 |
833 | p.topic-title {
834 | font-weight: bold; }
835 |
836 | pre.address {
837 | margin-bottom: 0;
838 | margin-top: 0;
839 | font: inherit; }
840 |
841 | pre.literal-block, pre.doctest-block, pre.math, pre.code {
842 | margin-left: 2em;
843 | margin-right: 2em; }
844 |
845 | pre.code .ln {
846 | color: grey; }
847 |
848 | /* line numbers */
849 | pre.code, code {
850 | background-color: #eeeeee; }
851 |
852 | pre.code .comment, code .comment {
853 | color: #5c6576; }
854 |
855 | pre.code .keyword, code .keyword {
856 | color: #3B0D06;
857 | font-weight: bold; }
858 |
859 | pre.code .literal.string, code .literal.string {
860 | color: #0c5404; }
861 |
862 | pre.code .name.builtin, code .name.builtin {
863 | color: #352b84; }
864 |
865 | pre.code .deleted, code .deleted {
866 | background-color: #DEB0A1; }
867 |
868 | pre.code .inserted, code .inserted {
869 | background-color: #A3D289; }
870 |
871 | span.classifier {
872 | font-style: oblique; }
873 |
874 | span.classifier-delimiter {
875 | font-weight: bold; }
876 |
877 | span.problematic {
878 | color: #b30000; }
879 |
880 | span.section-subtitle {
881 | /* font-size relative to parent (h1..h6 element) */
882 | font-size: 80%; }
883 |
884 | span.DecNumber {
885 | color: var(--number); }
886 |
887 | span.BinNumber {
888 | color: var(--number); }
889 |
890 | span.HexNumber {
891 | color: var(--number); }
892 |
893 | span.OctNumber {
894 | color: var(--number); }
895 |
896 | span.FloatNumber {
897 | color: var(--number); }
898 |
899 | span.Identifier {
900 | color: var(--identifier); }
901 |
902 | span.Keyword {
903 | font-weight: 600;
904 | color: var(--keyword); }
905 |
906 | span.StringLit {
907 | color: var(--literal); }
908 |
909 | span.LongStringLit {
910 | color: var(--literal); }
911 |
912 | span.CharLit {
913 | color: var(--literal); }
914 |
915 | span.EscapeSequence {
916 | color: var(--escapeSequence); }
917 |
918 | span.Operator {
919 | color: var(--operator); }
920 |
921 | span.Punctuation {
922 | color: var(--punctuation); }
923 |
924 | span.Comment, span.LongComment {
925 | font-style: italic;
926 | font-weight: 400;
927 | color: var(--comment); }
928 |
929 | span.RegularExpression {
930 | color: darkviolet; }
931 |
932 | span.TagStart {
933 | color: darkviolet; }
934 |
935 | span.TagEnd {
936 | color: darkviolet; }
937 |
938 | span.Key {
939 | color: #252dbe; }
940 |
941 | span.Value {
942 | color: #252dbe; }
943 |
944 | span.RawData {
945 | color: var(--raw-data); }
946 |
947 | span.Assembler {
948 | color: #252dbe; }
949 |
950 | span.Preprocessor {
951 | color: #252dbe; }
952 |
953 | span.Directive {
954 | color: #252dbe; }
955 |
956 | span.option {
957 | font-weight: bold;
958 | font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
959 | color: var(--option); }
960 |
961 | span.Prompt {
962 | font-weight: bold;
963 | color: red; }
964 |
965 | span.ProgramOutput {
966 | font-weight: bold;
967 | color: #808080; }
968 |
969 | span.program {
970 | font-weight: bold;
971 | color: var(--program);
972 | text-decoration: underline;
973 | text-decoration-color: var(--hint);
974 | text-decoration-thickness: 0.05em;
975 | text-underline-offset: 0.15em; }
976 |
977 | span.Command, span.Rule, span.Hyperlink,
978 | span.Label, span.Reference, span.Other {
979 | color: var(--other); }
980 |
981 | /* Pop type, const, proc, and iterator defs in nim def blocks */
982 | dt pre > span.Identifier, dt pre > span.Operator {
983 | color: var(--identifier);
984 | font-weight: 700; }
985 |
986 | dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,
987 | dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {
988 | color: var(--identifier);
989 | font-weight: inherit; }
990 |
991 | /* Nim sprite for the footer (taken from main page favicon) */
992 | .nim-sprite {
993 | display: inline-block;
994 | width: 51px;
995 | height: 14px;
996 | background-position: 0 0;
997 | background-size: 51px 14px;
998 | -webkit-filter: opacity(50%);
999 | filter: opacity(50%);
1000 | background-repeat: no-repeat;
1001 | background-image: var(--nim-sprite-base64);
1002 | margin-bottom: 5px; }
1003 |
1004 | span.pragmadots {
1005 | /* Position: relative frees us up to make the dots
1006 | look really nice without fucking up the layout and
1007 | causing bulging in the parent container */
1008 | position: relative;
1009 | /* 1px down looks slightly nicer */
1010 | top: 1px;
1011 | padding: 2px;
1012 | background-color: var(--third-background);
1013 | border-radius: 4px;
1014 | margin: 0 2px;
1015 | cursor: pointer;
1016 | font-size: 0.8em; }
1017 |
1018 | span.pragmadots:hover {
1019 | background-color: var(--hint); }
1020 |
1021 | span.pragmawrap {
1022 | display: none; }
1023 |
1024 | span.attachedType {
1025 | display: none;
1026 | visibility: hidden; }
1027 |
--------------------------------------------------------------------------------
/docs/patgraph.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | patgraph
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
patgraph
24 |
25 |
26 |
27 | Theme:
28 |
29 | 🌗 Match OS
30 | 🌑 Dark
31 | 🌕 Light
32 |
33 |
34 |
39 |
40 | Search:
41 |
42 |
43 | Group by:
44 |
45 | Section
46 | Type
47 |
48 |
49 |
50 |
51 |
52 | Types
53 |
59 |
60 |
61 |
62 |
63 | Consts
64 |
68 |
69 |
70 |
71 |
72 | Procs
73 |
74 |
79 |
83 |
87 |
91 |
96 |
101 |
105 |
109 |
110 |
111 |
112 |
113 |
114 |
115 | Iterators
116 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
Source
135 |
Edit
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
Direction = enum
145 | Outgoing , Incoming
146 |
147 |
148 |
149 | Source
150 | Edit
151 |
152 |
153 |
154 |
155 |
Graph [ N ; E ] = object
156 |
157 |
158 |
159 | A graph datastructure using an adjacency list representation
160 | Source
161 | Edit
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
invalid = 2147483647'i32
173 |
174 |
175 | An invalid index used to denote absence of an edge, for example to end an adjacency list.
176 | Source
177 | Edit
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
proc `[]` [ N , E ] ( self : Graph [ N , E ] ; a : Natural ) : N
190 |
191 |
192 | Access the weight for node a .
193 | Source
194 | Edit
195 |
196 |
197 |
198 |
199 |
proc `[]` [ N , E ] ( self : var Graph [ N , E ] ; a : Natural ) : var N
200 |
201 |
202 | Access the weight for node a , mutably.
203 | Source
204 | Edit
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
proc `[]=` [ N , E ] ( self : var Graph [ N , E ] ; a : Natural ; v : N )
213 |
214 |
215 | Set the weight for node a .
216 | Source
217 | Edit
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
proc addEdge [ N , E ] ( self : var Graph [ N , E ] ; a , b : Natural ; weight : E )
226 |
227 |
228 | Add an edge from a to b to the graph, with its associated data weight .
229 | Source
230 | Edit
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
proc addNode [ N , E ] ( self : var Graph [ N , E ] ; weight : N ) : int
239 |
240 |
241 | Add a node (also called vertex) with associated data weight to the graph. Return the index of the new node.
242 | Source
243 | Edit
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
proc extendWithEdges [ N , E ] ( self : var Graph [ N , E ] ;
252 | iterable : openArray [ ( int , int ) ] )
253 |
254 |
255 |
256 | Source
257 | Edit
258 |
259 |
260 |
261 |
262 |
proc extendWithEdges [ N , E ] ( self : var Graph [ N , E ] ;
263 | iterable : openArray [ ( int , int , E ) ] )
264 |
265 |
266 | Extend the graph from an iterable of edges.
267 | Node weights N are set to default values. Edge weights E may either be specified in the list, or they are filled with default values.
268 | Nodes are inserted automatically to match the edges.
269 |
270 | Source
271 | Edit
272 |
273 |
274 |
275 |
276 |
277 |
278 |
288 |
289 |
proc graphFromEdges [ N , E ] ( iterable : openArray [ ( int , int , E ) ] ) : Graph [ N , E ]
290 |
291 |
292 | Create a new Graph from an iterable of edges.
293 | Node weights N are set to default values. Edge weights E may either be specified in the list, or they are filled with default values.
294 | Nodes are inserted automatically to match the edges.
295 | import graph
296 |
297 | let graph2 = graphFromEdges [ int , int ] ( @ [
298 | ( 0 , 1 ) , ( 0 , 2 ) , ( 0 , 3 ) ,
299 | ( 1 , 2 ) , ( 1 , 3 ) ,
300 | ( 2 , 3 ) ] )
301 | Source
302 | Edit
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
proc len [ N , E ] ( self : Graph [ N , E ] ) : int
311 |
312 |
313 | Return the number of nodes (vertices) in the graph.
314 | Source
315 | Edit
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
proc updateEdge [ N , E ] ( self : var Graph [ N , E ] ; a , b : Natural ; weight : E )
324 |
325 |
326 | Add or update an edge from a to b . If the edge already exists, its weight is updated.
327 | Return the index of the affected edge.
328 | Computes in O(e') time, where e' is the number of edges connected to a .
329 |
330 | Source
331 | Edit
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
iterator edges [ N , E ] ( self : Graph [ N , E ] ; a : Natural ; dir = Outgoing ) : ( int , E )
346 |
347 |
348 | Return all neighbors that have an edge between them and a , in the specified direction.
349 | Neighbors are listed in reverse order of their addition to the graph, so the most recently added edge's neighbor is listed first.
350 |
351 | Source
352 | Edit
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
iterator neighbors [ N , E ] ( self : Graph [ N , E ] ; a : Natural ; dir = Outgoing ) : int
361 |
362 |
363 | Return all neighbors that have an edge between them and a , in the specified direction.
364 | Neighbors are listed in reverse order of their addition to the graph, so the most recently added edge's neighbor is listed first.
365 |
366 | Source
367 | Edit
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 | Made with Nim. Generated: 2023-02-11 19:12:40 UTC
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
--------------------------------------------------------------------------------
/patgraph.nim:
--------------------------------------------------------------------------------
1 | type
2 | Direction* = enum
3 | Outgoing, Incoming
4 |
5 | Node[N] = object ## The graph's node type.
6 | weight: N ## Associated node data.
7 | next: array[2, int32] ## Next edge in outgoing and incoming edge lists.
8 |
9 | Edge[E] = object ## The graph's edge type.
10 | weight: E ## Associated edge data.
11 | next: array[2, int32] ## Next edge in outgoing and incoming edge lists.
12 | node: array[2, int32] ## Start and End node index
13 |
14 | Graph*[N, E] = object ## A graph datastructure using an adjacency list representation
15 | nodes: seq[Node[N]]
16 | edges: seq[Edge[E]]
17 |
18 | const
19 | invalid* = high(int32) ## An invalid index used to denote absence of an edge, for example
20 | ## to end an adjacency list.
21 |
22 | proc len*[N, E](self: Graph[N, E]): int =
23 | ## Return the number of nodes (vertices) in the graph.
24 | self.nodes.len
25 |
26 | proc addNode*[N, E](self: var Graph[N, E], weight: N): int =
27 | ## Add a node (also called vertex) with associated data `weight` to the graph.
28 | ## Return the index of the new node.
29 | let node = Node[N](weight: weight, next: [invalid, invalid])
30 | result = self.nodes.len
31 | self.nodes.add(node)
32 |
33 | proc `[]`*[N, E](self: Graph[N, E], a: Natural): N =
34 | ## Access the weight for node `a`.
35 | self.nodes[a].weight
36 |
37 | proc `[]`*[N, E](self: var Graph[N, E], a: Natural): var N =
38 | ## Access the weight for node `a`, mutably.
39 | self.nodes[a].weight
40 |
41 | proc `[]=`*[N, E](self: var Graph[N, E], a: Natural, v: N) =
42 | ## Set the weight for node `a`.
43 | self.nodes[a].weight = v
44 |
45 | proc addEdge*[N, E](self: var Graph[N, E], a, b: Natural, weight: E) =
46 | ## Add an edge from `a` to `b` to the graph, with its associated
47 | ## data `weight`.
48 | assert(max(a, b) < self.nodes.len, "node indices out of bounds")
49 | let result = self.edges.len
50 | var edge = Edge[E](
51 | weight: weight,
52 | node: [a.int32, b.int32],
53 | next: [invalid, invalid])
54 | template an: untyped = self.nodes[a]
55 | template bn: untyped = self.nodes[b]
56 | if a == b: # disallow self-loops?
57 | edge.next = an.next
58 | an.next[0] = result.int32
59 | an.next[1] = result.int32
60 | else:
61 | # a and b are different indices
62 | edge.next = [an.next[0], bn.next[1]]
63 | an.next[0] = result.int32
64 | bn.next[1] = result.int32
65 | self.edges.add(edge)
66 |
67 | proc findEdge[N, E](self: Graph[N, E], a, b: Natural): int =
68 | ## Lookup an edge from `a` to `b`.
69 | ##
70 | ## Computes in **O(e')** time, where **e'** is the number of edges
71 | ## connected to `a`.
72 | assert(max(a, b) < self.nodes.len, "node indices out of bounds")
73 | let node = self.nodes[a]
74 | var edix = node.next[0]
75 | while edix < self.edges.len:
76 | let edge = self.edges[int(edix)]
77 | if edge.node[1] == b:
78 | return edix
79 | edix = edge.next[0]
80 | result = invalid
81 |
82 | proc updateEdge*[N, E](self: var Graph[N, E], a, b: Natural, weight: E) =
83 | ## Add or update an edge from `a` to `b`.
84 | ## If the edge already exists, its weight is updated.
85 | ##
86 | ## Return the index of the affected edge.
87 | ##
88 | ## Computes in **O(e')** time, where **e'** is the number of edges
89 | ## connected to `a`.
90 | assert(max(a, b) < self.nodes.len, "node indices out of bounds")
91 | let ix = self.findEdge(a, b)
92 | if ix < self.nodes.len:
93 | self.edges[int(ix)] = weight
94 | else:
95 | self.addEdge(a, b, weight)
96 |
97 | proc extendWithEdges*[N, E](self: var Graph[N, E], iterable: openArray[(int,
98 | int, E)]) =
99 | ## Extend the graph from an iterable of edges.
100 | ##
101 | ## Node weights `N` are set to default values.
102 | ## Edge weights `E` may either be specified in the list,
103 | ## or they are filled with default values.
104 | ##
105 | ## Nodes are inserted automatically to match the edges.
106 | for (source, target, weight) in iterable.items:
107 | let nx = max(source, target)
108 | while nx >= self.nodes.len:
109 | discard self.addNode(default(N))
110 | self.addEdge(source, target, weight)
111 |
112 | proc extendWithEdges*[N, E](self: var Graph[N, E], iterable: openArray[(int, int)]) =
113 | for (source, target) in iterable.items:
114 | let nx = max(source, target)
115 | while nx >= self.nodes.len:
116 | discard self.addNode(default(N))
117 | self.addEdge(source, target, default(E))
118 |
119 | proc graphFromEdges*[N, E](iterable: openArray[(int, int, E)]): Graph[N, E] =
120 | ## Create a new `Graph` from an iterable of edges.
121 | ##
122 | ## Node weights `N` are set to default values.
123 | ## Edge weights `E` may either be specified in the list,
124 | ## or they are filled with default values.
125 | ##
126 | ## Nodes are inserted automatically to match the edges.
127 | ##
128 | ## .. code-block:: Nim
129 | ## import graph
130 | ##
131 | ## let graph2 = graphFromEdges[int, int](@[
132 | ## (0, 1), (0, 2), (0, 3),
133 | ## (1, 2), (1, 3),
134 | ## (2, 3)])
135 | ##
136 | result = Graph[N, E](nodes: @[], edges: @[])
137 | result.extendWithEdges(iterable)
138 |
139 | proc graphFromEdges*[N, E](iterable: openArray[(int, int)]): Graph[N, E] =
140 | result = Graph[N, E](nodes: @[], edges: @[])
141 | result.extendWithEdges(iterable)
142 |
143 | iterator neighbors*[N, E](self: Graph[N, E], a: Natural, dir = Outgoing): int =
144 | ## Return all neighbors that have an edge between them and
145 | ## `a`, in the specified direction.
146 | ##
147 | ## Neighbors are listed in reverse order of their
148 | ## addition to the graph, so the most recently added edge's neighbor is
149 | ## listed first.
150 | assert(a < self.nodes.len, "node index out of bounds")
151 | var edix = self.nodes[a].next[dir.ord]
152 | while edix < self.edges.len:
153 | let edge = self.edges[int(edix)]
154 | yield edge.node[1 - dir.ord].int
155 | edix = edge.next[dir.ord]
156 |
157 | iterator edges*[N, E](self: Graph[N, E], a: Natural, dir = Outgoing): (int, E) =
158 | ## Return all neighbors that have an edge between them and
159 | ## `a`, in the specified direction.
160 | ##
161 | ## Neighbors are listed in reverse order of their
162 | ## addition to the graph, so the most recently added edge's neighbor is
163 | ## listed first.
164 | assert(a < self.nodes.len, "node index out of bounds")
165 | var edix = self.nodes[a].next[dir.ord]
166 | while edix < self.edges.len:
167 | let edge = self.edges[int(edix)]
168 | yield (edge.node[1 - dir.ord].int, edge.weight)
169 | edix = edge.next[dir.ord]
170 |
171 | proc `$`[N, E](self: Graph[N, E]): string =
172 | for i in 0 ..< len(self):
173 | if result.len > 0: result.add("\n")
174 | var row = ""
175 | for (j, w) in edges(self, i):
176 | if row.len > 0: row.add(", ")
177 | row.add($self[j] & ": " & $w)
178 | result.add($self[i] & " -> [" & row & "]")
179 |
180 | when isMainModule:
181 | var graph: Graph[string, float]
182 |
183 | let nodeA = graph.addNode("a")
184 | let nodeB = graph.addNode("b")
185 | let nodeC = graph.addNode("c")
186 | let nodeD = graph.addNode("d")
187 | let nodeE = graph.addNode("e")
188 | let nodeF = graph.addNode("f")
189 | let nodeG = graph.addNode("g")
190 | let nodeH = graph.addNode("h")
191 |
192 | graph.extendWithEdges([
193 | (nodeA, nodeB, 0.0),
194 | (nodeA, nodeC, 0.25),
195 | (nodeB, nodeD, 0.5),
196 | (nodeB, nodeE, 0.75),
197 | (nodeC, nodeF, 1.0),
198 | (nodeC, nodeG, 1.25),
199 | (nodeE, nodeF, 1.5),
200 | (nodeE, nodeH, 1.75),
201 | (nodeF, nodeG, 2.0)])
202 |
203 | block: #a
204 | var nodes: seq[int]
205 | for node in graph.neighbors(nodeA):
206 | nodes.add node
207 | assert nodes == @[nodeC, nodeB]
208 | block: #b
209 | var nodes: seq[int]
210 | for node in graph.neighbors(nodeB):
211 | nodes.add node
212 | assert nodes == @[nodeE, nodeD]
213 | block: #c
214 | var nodes: seq[int]
215 | for node in graph.neighbors(nodeC):
216 | nodes.add node
217 | assert nodes == @[nodeG, nodeF]
218 | block: #e
219 | var edges: seq[(int, float)]
220 | for edge in edges(graph, nodeE):
221 | edges.add edge
222 | assert edges == @[(nodeH, 1.75), (nodeF, 1.5)]
223 | block: #f
224 | var edges: seq[(int, float)]
225 | for edge in edges(graph, nodeF, Incoming):
226 | edges.add edge
227 | assert edges == @[(nodeE, 1.5), (nodeC, 1.0)]
228 |
229 | #echo graph
230 |
231 | const graph2 = graphFromEdges[string, float]({
232 | 0: 1, 0: 2, 1: 3, 1: 4,
233 | 2: 5, 2: 6, 4: 5,
234 | 4: 7, 5: 6})
235 |
236 | #[
237 | (nodes: @[
238 | 0: (weight: "a", next: [1, 2147483647]),
239 | 1: (weight: "b", next: [3, 0]),
240 | 2: (weight: "c", next: [5, 1]),
241 | 3: (weight: "d", next: [2147483647, 2]),
242 | 4: (weight: "e", next: [7, 3]),
243 | 5: (weight: "f", next: [8, 7]),
244 | 6: (weight: "g", next: [2147483647, 8]),
245 | 7: (weight: "h", next: [2147483647, 6])],
246 | edges: @[
247 | 0: (weight: 1.0, next: [2147483647, 2147483647], node: [0, 1]),
248 | 1: (weight: 1.0, next: [0, 2147483647], node: [0, 2]),
249 | 2: (weight: 1.0, next: [2147483647, 2147483647], node: [1, 3]),
250 | 3: (weight: 1.0, next: [2, 2147483647], node: [1, 4]),
251 | 4: (weight: 1.0, next: [2147483647, 2147483647], node: [2, 5]),
252 | 5: (weight: 1.0, next: [4, 2147483647], node: [2, 6]),
253 | 6: (weight: 1.0, next: [2147483647, 2147483647], node: [4, 7]),
254 | 7: (weight: 1.0, next: [6, 4], node: [4, 5]),
255 | 8: (weight: 1.0, next: [2147483647, 5], node: [5, 6])])
256 | ]#
257 |
--------------------------------------------------------------------------------
/patgraph.nimble:
--------------------------------------------------------------------------------
1 | # Package
2 |
3 | version = "0.2.0"
4 | author = "Antonis"
5 | description = "graph data structure library"
6 | license = "MIT"
7 |
8 | # Dependencies
9 |
10 | requires "nim >= 1.0.9"
11 |
12 | import os
13 |
14 | const
15 | ProjectUrl = "https://github.com/planetis-m/patgraph"
16 | PkgDir = thisDir().quoteShell
17 | DocsDir = PkgDir / "docs"
18 |
19 | task docs, "Generate documentation":
20 | # https://nim-lang.github.io/Nim/docgen.html
21 | withDir(PkgDir):
22 | let tmp = "patgraph"
23 | let doc = DocsDir / (tmp & ".html")
24 | let src = tmp & ".nim"
25 | # Generate the docs for {src}
26 | exec("nim doc --verbosity:0 --git.url:" & ProjectUrl &
27 | " --git.devel:master --git.commit:master --out:" & doc & " " & src)
28 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 |
2 | # Patgraph — graph data structure library for Nim
3 |
4 | ## About
5 | This nimble package contains a ``Graph[N, E]`` graph datastructure using an adjacency list representation.
6 | It is based on [petgraph's](https://github.com/petgraph/petgraph/blob/master/src/graph_impl/mod.rs) library.
7 |
8 | [Documentation](https://planetis-m.github.io/patgraph/patgraph.html)
9 |
10 | ### Example
11 |
12 | ```nim
13 | import patgraph
14 |
15 | var graph: Graph[string, float]
16 |
17 | let nodeA = graph.addNode("a")
18 | let nodeB = graph.addNode("b")
19 | let nodeC = graph.addNode("c")
20 | let nodeD = graph.addNode("d")
21 | let nodeE = graph.addNode("e")
22 | let nodeF = graph.addNode("f")
23 | let nodeG = graph.addNode("g")
24 | let nodeH = graph.addNode("h")
25 |
26 | graph.extendWithEdges([
27 | (nodeA, nodeB, 0.0),
28 | (nodeA, nodeC, 0.25),
29 | (nodeB, nodeD, 0.5),
30 | (nodeB, nodeE, 0.75),
31 | (nodeC, nodeF, 1.0),
32 | (nodeC, nodeG, 1.25),
33 | (nodeE, nodeF, 1.5),
34 | (nodeE, nodeH, 1.75),
35 | (nodeF, nodeG, 2.0)])
36 |
37 | echo graph
38 | # a -> [c: 0.25, b: 0.0]
39 | # b -> [e: 0.75, d: 0.5]
40 | # c -> [g: 1.25, f: 1.0]
41 | # d -> []
42 | # e -> [h: 1.75, f: 1.5]
43 | # f -> [g: 2.0]
44 | # g -> []
45 | # h -> []
46 |
47 | for n in graph.neighbors(nodeC):
48 | echo graph[n]
49 | # g
50 | # f
51 | ```
52 |
53 | ### License
54 |
55 | This library is distributed under the MIT license. For more information see `LICENSE`.
56 |
--------------------------------------------------------------------------------