Project

Profile

Help

RE: Performance variations ยป explain.rome-test.xml

Vladimir Nesterovsky, 2020-05-19 14:15

 
1
<stylesheet xmlns:fn="http://www.w3.org/2005/xpath-functions"
2
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
   <globalVariables>
4
      <globalVariable name="Q{xslt:priority-queue:2020}empty"
5
                      as="1FM k[AS] v[1F]"
6
                      line="16"
7
                      module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
8
                      visibility="PRIVATE">
9
         <ifCall baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
10
                 ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
11
                 line="16"
12
                 name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
13
                 type="1FM">
14
            <sequence>
15
               <map size="1">
16
                  <str val="keys"/>
17
                  <map size="0"/>
18
               </map>
19
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
20
                  <str val="items"/>
21
                  <array size="0"/>
22
               </ifCall>
23
            </sequence>
24
            <map size="2">
25
               <str val="duplicates"/>
26
               <str val="reject"/>
27
               <str val="duplicates-error-code"/>
28
               <str val="FOJS0003"/>
29
            </map>
30
         </ifCall>
31
      </globalVariable>
32
   </globalVariables>
33
   <mode onNo="TC" flags="dW" patternSlots="0">
34
      <ruleSet type="document-node()">
35
         <templateRule prec="5"
36
                       prio="-0.5"
37
                       seq="0"
38
                       rank="0"
39
                       minImp="0"
40
                       slots="1"
41
                       matches="ND"
42
                       flags="s"
43
                       line="16"
44
                       module="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt">
45
            <p.nodeTest role="match" test="ND"/>
46
            <let role="action"
47
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
48
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
49
                 line="17"
50
                 var="Q{}g"
51
                 as="1FM"
52
                 slot="0"
53
                 eval="16">
54
               <ufCall name="Q{public:this}create-graph" tailCall="false" bSlot="0"/>
55
               <message line="26">
56
                  <sequence role="select">
57
                     <valueOf>
58
                        <str val="Shortest path:&#xA;"/>
59
                     </valueOf>
60
                     <forEach>
61
                        <ufCall name="Q{xslt:graph-api:2020}dijkstra-search"
62
                                tailCall="false"
63
                                bSlot="1"
64
                                eval="0 0 6">
65
                           <int val="1498"/>
66
                           <int val="351"/>
67
                           <varRef name="Q{}g" slot="0"/>
68
                        </ufCall>
69
                        <sequence line="30">
70
                           <valueOf>
71
                              <fn name="string-join">
72
                                 <convert from="A" to="AS">
73
                                    <data>
74
                                       <mergeAdj>
75
                                          <sequence>
76
                                             <lookup>
77
                                                <dot type="1FM"/>
78
                                                <str val="from"/>
79
                                             </lookup>
80
                                             <str val=" - "/>
81
                                             <lookup>
82
                                                <dot type="1FM"/>
83
                                                <str val="to"/>
84
                                             </lookup>
85
                                             <str val=", distance = "/>
86
                                             <ufCall name="Q{xslt:graph-api:2020}edge-value"
87
                                                     tailCall="false"
88
                                                     bSlot="2"
89
                                                     eval="16 6">
90
                                                <check card="1" diag="0|0||g:edge-value">
91
                                                   <lookup>
92
                                                      <dot type="1FM"/>
93
                                                      <str val="edge"/>
94
                                                   </lookup>
95
                                                </check>
96
                                                <varRef name="Q{}g" slot="0"/>
97
                                             </ufCall>
98
                                             <str val=", total = "/>
99
                                             <lookup>
100
                                                <dot type="1FM"/>
101
                                                <str val="distance"/>
102
                                             </lookup>
103
                                          </sequence>
104
                                       </mergeAdj>
105
                                    </data>
106
                                 </convert>
107
                                 <str val=""/>
108
                              </fn>
109
                           </valueOf>
110
                           <valueOf>
111
                              <str val="&#xA;"/>
112
                           </valueOf>
113
                        </sequence>
114
                     </forEach>
115
                  </sequence>
116
                  <str role="terminate" val="no"/>
117
                  <str role="error" val="Q{http://www.w3.org/2005/xqt-errors}XTMM9000"/>
118
               </message>
119
            </let>
120
         </templateRule>
121
      </ruleSet>
122
   </mode>
123
   <namedTemplates>
124
      <template name="f:repeat"
125
                line="180"
126
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
127
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
128
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
129
                   line="181">
130
            <param name="Q{}state" slot="0">
131
               <empty role="select"/>
132
               <supplied role="conversion" slot="0"/>
133
            </param>
134
            <param line="182"
135
                   name="Q{}condition"
136
                   slot="1"
137
                   flags="i"
138
                   as="1F r[1AB] a[*]">
139
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
140
                  <fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
141
                     <supplied slot="1"/>
142
                  </fnCoercer>
143
               </check>
144
            </param>
145
            <param line="183" name="Q{}action" slot="2" flags="i" as="1F a[*]">
146
               <check role="conversion" card="1" diag="8|0|XTTE0590|action">
147
                  <fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
148
                     <supplied slot="2"/>
149
                  </fnCoercer>
150
               </check>
151
            </param>
152
            <param line="184" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
153
               <check role="conversion" card="1" diag="8|0|XTTE0590|next">
154
                  <fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
155
                     <supplied slot="3"/>
156
                  </fnCoercer>
157
               </check>
158
            </param>
159
            <let line="186" var="Q{}items" slot="4" eval="4">
160
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
161
                  <varRef name="Q{}action" slot="2"/>
162
                  <arrayBlock>
163
                     <varRef name="Q{}state" slot="0"/>
164
                  </arrayBlock>
165
               </ifCall>
166
               <sequence line="188">
167
                  <varRef name="Q{}items" slot="4"/>
168
                  <choose line="190">
169
                     <fn name="not">
170
                        <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
171
                           <varRef name="Q{}condition" slot="1"/>
172
                           <arrayBlock>
173
                              <varRef name="Q{}state" slot="0"/>
174
                           </arrayBlock>
175
                        </ifCall>
176
                     </fn>
177
                     <callT line="191"
178
                            name="Q{xslt:functions:2020}repeat"
179
                            bSlot="0"
180
                            flags="t">
181
                        <withParam name="Q{}state" flags="c">
182
                           <ifCall line="192"
183
                                   name="Q{http://saxon.sf.net/}apply"
184
                                   type="*"
185
                                   dyn="$next">
186
                              <varRef name="Q{}next" slot="3"/>
187
                              <arrayBlock>
188
                                 <varRef name="Q{}state" slot="0"/>
189
                                 <varRef name="Q{}items" slot="4"/>
190
                              </arrayBlock>
191
                           </ifCall>
192
                        </withParam>
193
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
194
                           <varRef line="193" name="Q{}condition" slot="1"/>
195
                        </withParam>
196
                        <withParam name="Q{}action" flags="c" as="1F a[*]">
197
                           <varRef line="194" name="Q{}action" slot="2"/>
198
                        </withParam>
199
                        <withParam name="Q{}next" flags="c" as="1F a[*,*]">
200
                           <varRef line="195" name="Q{}next" slot="3"/>
201
                        </withParam>
202
                     </callT>
203
                  </choose>
204
               </sequence>
205
            </let>
206
         </sequence>
207
      </template>
208
      <template name="f:skip-while"
209
                line="241"
210
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
211
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
212
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
213
                   line="242">
214
            <param name="Q{}items" slot="0">
215
               <empty role="select"/>
216
               <supplied role="conversion" slot="0"/>
217
            </param>
218
            <param line="243" name="Q{}index" slot="1" as="1ADI">
219
               <int role="select" val="1"/>
220
               <treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
221
                  <check card="1" diag="8|0|XTTE0590|index">
222
                     <cvUntyped to="ADI" diag="8|0|XTTE0590|index">
223
                        <data diag="8|0|XTTE0590|index">
224
                           <supplied slot="1"/>
225
                        </data>
226
                     </cvUntyped>
227
                  </check>
228
               </treat>
229
            </param>
230
            <param line="245"
231
                   name="Q{}condition"
232
                   slot="2"
233
                   flags="i"
234
                   as="1F r[1AB] a[1,1ADI]">
235
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
236
                  <fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
237
                     <supplied slot="2"/>
238
                  </fnCoercer>
239
               </check>
240
            </param>
241
            <let line="247" var="Q{}item" as="?" slot="3" eval="7">
242
               <first>
243
                  <varRef name="Q{}items" slot="0"/>
244
               </first>
245
               <let line="248" var="Q{}tail" slot="4" eval="10">
246
                  <tail start="2">
247
                     <varRef name="Q{}items" slot="0"/>
248
                  </tail>
249
                  <choose line="251">
250
                     <and op="and">
251
                        <fn name="exists">
252
                           <varRef name="Q{}item" slot="3"/>
253
                        </fn>
254
                        <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
255
                           <varRef name="Q{}condition" slot="2"/>
256
                           <arrayBlock>
257
                              <varRef name="Q{}item" slot="3"/>
258
                              <varRef name="Q{}index" slot="1"/>
259
                           </arrayBlock>
260
                        </ifCall>
261
                     </and>
262
                     <callT line="252"
263
                            name="Q{xslt:functions:2020}skip-while"
264
                            bSlot="0"
265
                            flags="t">
266
                        <withParam name="Q{}items" flags="c">
267
                           <varRef line="253" name="Q{}tail" slot="4"/>
268
                        </withParam>
269
                        <withParam name="Q{}index" flags="c" as="1ADI">
270
                           <arith line="254" op="+" calc="i+i">
271
                              <varRef name="Q{}index" slot="1"/>
272
                              <int val="1"/>
273
                           </arith>
274
                        </withParam>
275
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
276
                           <varRef line="255" name="Q{}condition" slot="2"/>
277
                        </withParam>
278
                     </callT>
279
                     <true/>
280
                     <varRef line="259" name="Q{}tail" slot="4"/>
281
                  </choose>
282
               </let>
283
            </let>
284
         </sequence>
285
      </template>
286
      <template name="f:take-while"
287
                line="211"
288
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
289
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
290
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
291
                   line="212">
292
            <param name="Q{}items" slot="0">
293
               <empty role="select"/>
294
               <supplied role="conversion" slot="0"/>
295
            </param>
296
            <param line="213" name="Q{}index" slot="1" as="1ADI">
297
               <int role="select" val="1"/>
298
               <treat role="conversion" as="ADI" diag="8|0|XTTE0590|index">
299
                  <check card="1" diag="8|0|XTTE0590|index">
300
                     <cvUntyped to="ADI" diag="8|0|XTTE0590|index">
301
                        <data diag="8|0|XTTE0590|index">
302
                           <supplied slot="1"/>
303
                        </data>
304
                     </cvUntyped>
305
                  </check>
306
               </treat>
307
            </param>
308
            <param line="215"
309
                   name="Q{}condition"
310
                   slot="2"
311
                   flags="i"
312
                   as="1F r[1AB] a[1,1ADI]">
313
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
314
                  <fnCoercer to="1F r[1AB] a[1,1ADI]" diag="8|0|XTTE0590|condition">
315
                     <supplied slot="2"/>
316
                  </fnCoercer>
317
               </check>
318
            </param>
319
            <let line="217" var="Q{}item" as="?" slot="3" eval="7">
320
               <first>
321
                  <varRef name="Q{}items" slot="0"/>
322
               </first>
323
               <choose line="219">
324
                  <and op="and">
325
                     <fn name="exists">
326
                        <varRef name="Q{}item" slot="3"/>
327
                     </fn>
328
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
329
                        <varRef name="Q{}condition" slot="2"/>
330
                        <arrayBlock>
331
                           <varRef name="Q{}item" slot="3"/>
332
                           <varRef name="Q{}index" slot="1"/>
333
                        </arrayBlock>
334
                     </ifCall>
335
                  </and>
336
                  <sequence line="220">
337
                     <varRef name="Q{}item" slot="3"/>
338
                     <callT line="222"
339
                            name="Q{xslt:functions:2020}take-while"
340
                            bSlot="0"
341
                            flags="t">
342
                        <withParam name="Q{}items" flags="c">
343
                           <tail line="223" start="2">
344
                              <varRef name="Q{}items" slot="0"/>
345
                           </tail>
346
                        </withParam>
347
                        <withParam name="Q{}index" flags="c" as="1ADI">
348
                           <arith line="224" op="+" calc="i+i">
349
                              <varRef name="Q{}index" slot="1"/>
350
                              <int val="1"/>
351
                           </arith>
352
                        </withParam>
353
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
354
                           <varRef line="225" name="Q{}condition" slot="2"/>
355
                        </withParam>
356
                     </callT>
357
                  </sequence>
358
               </choose>
359
            </let>
360
         </sequence>
361
      </template>
362
      <template name="f:while"
363
                line="144"
364
                module="file:/C:/projects/git/xslt-graph/functions.xslt">
365
         <sequence baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
366
                   ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
367
                   line="145">
368
            <param name="Q{}state" slot="0">
369
               <empty role="select"/>
370
               <supplied role="conversion" slot="0"/>
371
            </param>
372
            <param line="146"
373
                   name="Q{}condition"
374
                   slot="1"
375
                   flags="i"
376
                   as="1F r[1AB] a[*]">
377
               <check role="conversion" card="1" diag="8|0|XTTE0590|condition">
378
                  <fnCoercer to="1F r[1AB] a[*]" diag="8|0|XTTE0590|condition">
379
                     <supplied slot="1"/>
380
                  </fnCoercer>
381
               </check>
382
            </param>
383
            <param line="147" name="Q{}action" slot="2" flags="i" as="1F a[*]">
384
               <check role="conversion" card="1" diag="8|0|XTTE0590|action">
385
                  <fnCoercer to="1F a[*]" diag="8|0|XTTE0590|action">
386
                     <supplied slot="2"/>
387
                  </fnCoercer>
388
               </check>
389
            </param>
390
            <param line="148" name="Q{}next" slot="3" flags="i" as="1F a[*,*]">
391
               <check role="conversion" card="1" diag="8|0|XTTE0590|next">
392
                  <fnCoercer to="1F a[*,*]" diag="8|0|XTTE0590|next">
393
                     <supplied slot="3"/>
394
                  </fnCoercer>
395
               </check>
396
            </param>
397
            <choose line="150">
398
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
399
                  <varRef name="Q{}condition" slot="1"/>
400
                  <arrayBlock>
401
                     <varRef name="Q{}state" slot="0"/>
402
                  </arrayBlock>
403
               </ifCall>
404
               <let line="151" var="Q{}items" slot="4" eval="4">
405
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$action">
406
                     <varRef name="Q{}action" slot="2"/>
407
                     <arrayBlock>
408
                        <varRef name="Q{}state" slot="0"/>
409
                     </arrayBlock>
410
                  </ifCall>
411
                  <sequence line="153">
412
                     <varRef name="Q{}items" slot="4"/>
413
                     <callT line="155"
414
                            name="Q{xslt:functions:2020}while"
415
                            bSlot="0"
416
                            flags="t">
417
                        <withParam name="Q{}state" flags="c">
418
                           <ifCall line="156"
419
                                   name="Q{http://saxon.sf.net/}apply"
420
                                   type="*"
421
                                   dyn="$next">
422
                              <varRef name="Q{}next" slot="3"/>
423
                              <arrayBlock>
424
                                 <varRef name="Q{}state" slot="0"/>
425
                                 <varRef name="Q{}items" slot="4"/>
426
                              </arrayBlock>
427
                           </ifCall>
428
                        </withParam>
429
                        <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
430
                           <varRef line="157" name="Q{}condition" slot="1"/>
431
                        </withParam>
432
                        <withParam name="Q{}action" flags="c" as="1F a[*]">
433
                           <varRef line="158" name="Q{}action" slot="2"/>
434
                        </withParam>
435
                        <withParam name="Q{}next" flags="c" as="1F a[*,*]">
436
                           <varRef line="159" name="Q{}next" slot="3"/>
437
                        </withParam>
438
                     </callT>
439
                  </sequence>
440
               </let>
441
            </choose>
442
         </sequence>
443
      </template>
444
   </namedTemplates>
445
   <accumulators/>
446
   <functions>
447
      <function name="Q{xslt:functions:2020}while"
448
                line="48"
449
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
450
                eval="8"
451
                flags="pU"
452
                as="*"
453
                slots="3">
454
         <arg name="Q{}state" as="*"/>
455
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
456
         <arg name="Q{}next" as="1F a[*]"/>
457
         <tailCallLoop role="body"
458
                       baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
459
                       ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
460
                       line="57">
461
            <choose>
462
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$condition">
463
                  <varRef name="Q{}condition" slot="1"/>
464
                  <arrayBlock>
465
                     <varRef name="Q{}state" slot="0"/>
466
                  </arrayBlock>
467
               </ifCall>
468
               <ufCall name="Q{xslt:functions:2020}while"
469
                       tailCall="self"
470
                       bSlot="0"
471
                       eval="4 6 6">
472
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$next">
473
                     <varRef name="Q{}next" slot="2"/>
474
                     <arrayBlock>
475
                        <varRef name="Q{}state" slot="0"/>
476
                     </arrayBlock>
477
                  </ifCall>
478
                  <varRef name="Q{}condition" slot="1"/>
479
                  <varRef name="Q{}next" slot="2"/>
480
               </ufCall>
481
               <true/>
482
               <varRef name="Q{}state" slot="0"/>
483
            </choose>
484
         </tailCallLoop>
485
      </function>
486
      <function name="Q{public:this}create-graph"
487
                line="42"
488
                module="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
489
                eval="8"
490
                flags="pU"
491
                as="1FM"
492
                slots="4">
493
         <let role="body"
494
              baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
495
              ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
496
              line="53"
497
              var="Q{}roads"
498
              as="*FM k[AS] v[?ADI]"
499
              slot="0"
500
              eval="4">
501
            <for var="Q{}line" as="AS" slot="1">
502
               <filter role="in" flags="b">
503
                  <fn name="unparsed-text-lines">
504
                     <str val="rome99.gr"/>
505
                  </fn>
506
                  <fn name="starts-with">
507
                     <dot type="1AS"/>
508
                     <str val="a "/>
509
                  </fn>
510
               </filter>
511
               <let role="return" var="Q{}values" slot="2" eval="4">
512
                  <fn name="tokenize">
513
                     <varRef name="Q{}line" slot="1"/>
514
                  </fn>
515
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
516
                     <sequence>
517
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
518
                           <str val="from"/>
519
                           <cast flags="ae" as="?ADI">
520
                              <subscript>
521
                                 <varRef name="Q{}values" slot="2"/>
522
                                 <int val="2"/>
523
                              </subscript>
524
                           </cast>
525
                        </ifCall>
526
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
527
                           <str val="to"/>
528
                           <cast flags="ae" as="?ADI">
529
                              <subscript>
530
                                 <varRef name="Q{}values" slot="2"/>
531
                                 <int val="3"/>
532
                              </subscript>
533
                           </cast>
534
                        </ifCall>
535
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
536
                           <str val="length"/>
537
                           <cast flags="ae" as="?ADI">
538
                              <subscript>
539
                                 <varRef name="Q{}values" slot="2"/>
540
                                 <int val="4"/>
541
                              </subscript>
542
                           </cast>
543
                        </ifCall>
544
                     </sequence>
545
                     <map size="2">
546
                        <str val="duplicates"/>
547
                        <str val="reject"/>
548
                        <str val="duplicates-error-code"/>
549
                        <str val="FOJS0003"/>
550
                     </map>
551
                  </ifCall>
552
               </let>
553
            </for>
554
            <let line="60" var="Q{}vertices" as="1FM" slot="3" eval="8">
555
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
556
                  <forEach>
557
                     <varRef name="Q{}roads" slot="0"/>
558
                     <sequence>
559
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
560
                           <check card="1" diag="0|0||map:entry">
561
                              <lookup>
562
                                 <dot type="1FM k[AS] v[?ADI]"/>
563
                                 <str val="from"/>
564
                              </lookup>
565
                           </check>
566
                           <dot type="1FM k[AS] v[?ADI]"/>
567
                        </ifCall>
568
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
569
                           <check card="1" diag="0|0||map:entry">
570
                              <lookup>
571
                                 <dot type="1FM k[AS] v[?ADI]"/>
572
                                 <str val="to"/>
573
                              </lookup>
574
                           </check>
575
                           <dot type="1FM k[AS] v[?ADI]"/>
576
                        </ifCall>
577
                     </sequence>
578
                  </forEach>
579
                  <map size="2">
580
                     <str val="duplicates"/>
581
                     <str val="combine"/>
582
                     <str val="duplicates-error-code"/>
583
                     <str val="FOJS0003"/>
584
                  </map>
585
               </ifCall>
586
               <ifCall line="73"
587
                       name="Q{http://www.w3.org/2005/xpath-functions/map}merge"
588
                       type="1FM">
589
                  <sequence>
590
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
591
                        <str val="vertices"/>
592
                        <partialApply>
593
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
594
                                  arity="1"
595
                                  bSlot="0"/>
596
                           <varRef name="Q{}vertices" slot="3"/>
597
                        </partialApply>
598
                     </ifCall>
599
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
600
                        <str val="edges"/>
601
                        <partialApply>
602
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
603
                                  arity="1"
604
                                  bSlot="1"/>
605
                           <varRef name="Q{}roads" slot="0"/>
606
                        </partialApply>
607
                     </ifCall>
608
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
609
                        <str val="edge-value"/>
610
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
611
                               arity="1"
612
                               bSlot="2"/>
613
                     </ifCall>
614
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
615
                        <str val="edge-vertices"/>
616
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
617
                               arity="1"
618
                               bSlot="3"/>
619
                     </ifCall>
620
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
621
                        <str val="vertex-edges"/>
622
                        <partialApply>
623
                           <fnCoercer to="1F a[*,1FM]" diag="0|0||saxon:call">
624
                              <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
625
                                     arity="2"
626
                                     bSlot="4"/>
627
                           </fnCoercer>
628
                           <null/>
629
                           <varRef name="Q{}vertices" slot="3"/>
630
                        </partialApply>
631
                     </ifCall>
632
                  </sequence>
633
                  <map size="2">
634
                     <str val="duplicates"/>
635
                     <str val="reject"/>
636
                     <str val="duplicates-error-code"/>
637
                     <str val="FOJS0003"/>
638
                  </map>
639
               </ifCall>
640
            </let>
641
         </let>
642
      </function>
643
      <function name="Q{xslt:functions:2020}while"
644
                line="21"
645
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
646
                eval="9"
647
                flags="pU"
648
                as="*"
649
                slots="4">
650
         <arg name="Q{}state" as="*"/>
651
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
652
         <arg name="Q{}action" as="1F a[*]"/>
653
         <arg name="Q{}next" as="1F a[*,*]"/>
654
         <callT role="body"
655
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
656
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
657
                line="27"
658
                name="Q{xslt:functions:2020}while"
659
                bSlot="0">
660
            <withParam name="Q{}state" flags="c">
661
               <varRef line="28" name="Q{}state" slot="0"/>
662
            </withParam>
663
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
664
               <varRef line="29" name="Q{}condition" slot="1"/>
665
            </withParam>
666
            <withParam name="Q{}action" flags="c" as="1F a[*]">
667
               <varRef line="30" name="Q{}action" slot="2"/>
668
            </withParam>
669
            <withParam name="Q{}next" flags="c" as="1F a[*,*]">
670
               <varRef line="31" name="Q{}next" slot="3"/>
671
            </withParam>
672
         </callT>
673
      </function>
674
      <function name="Q{xslt:functions:2020}take-while"
675
                line="96"
676
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
677
                eval="9"
678
                flags="pU"
679
                as="*"
680
                slots="2">
681
         <arg name="Q{}items" as="*"/>
682
         <arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
683
         <callT role="body"
684
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
685
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
686
                line="101"
687
                name="Q{xslt:functions:2020}take-while"
688
                bSlot="0">
689
            <withParam name="Q{}items" flags="c">
690
               <varRef line="102" name="Q{}items" slot="0"/>
691
            </withParam>
692
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
693
               <varRef line="103" name="Q{}condition" slot="1"/>
694
            </withParam>
695
         </callT>
696
      </function>
697
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
698
                line="0"
699
                eval="4"
700
                flags="pU"
701
                as="*"
702
                slots="1">
703
         <arg name="Q{}state" as="1FM"/>
704
         <filter role="body"
705
                 baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
706
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
707
                 line="79"
708
                 flags="b">
709
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
710
               <treat as="FA" diag="0|0||array:head">
711
                  <check card="1" diag="0|0||array:head">
712
                     <lookup>
713
                        <varRef name="Q{}state" slot="0"/>
714
                        <str val="queue"/>
715
                     </lookup>
716
                  </check>
717
               </treat>
718
            </ifCall>
719
            <fn name="not">
720
               <ifCall name="Q{http://saxon.sf.net/}apply"
721
                       type="*"
722
                       dyn="$state ? &#34;visited&#34;">
723
                  <treat as="F" diag="0|0||saxon:apply">
724
                     <check card="1" diag="0|0||saxon:apply">
725
                        <lookup>
726
                           <varRef name="Q{}state" slot="0"/>
727
                           <str val="visited"/>
728
                        </lookup>
729
                     </check>
730
                  </treat>
731
                  <arrayBlock>
732
                     <lookup>
733
                        <dot/>
734
                        <str val="to"/>
735
                     </lookup>
736
                  </arrayBlock>
737
               </ifCall>
738
            </fn>
739
         </filter>
740
      </function>
741
      <function name="Q{xslt:graph-api:2020}edges"
742
                line="53"
743
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
744
                eval="4"
745
                flags="pU"
746
                as="*"
747
                slots="1">
748
         <arg name="Q{}g" as="1FM"/>
749
         <forEach role="body"
750
                  baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
751
                  ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
752
                  line="56">
753
            <lookup>
754
               <varRef name="Q{}g" slot="0"/>
755
               <str val="edges"/>
756
            </lookup>
757
            <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
758
               <treat as="F" diag="0|0||saxon:apply">
759
                  <dot/>
760
               </treat>
761
               <array size="0"/>
762
            </ifCall>
763
         </forEach>
764
      </function>
765
      <function name="Q{xslt:priority-queue:2020}tail"
766
                line="116"
767
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
768
                eval="8"
769
                flags="pU"
770
                as="1FM"
771
                slots="2">
772
         <arg name="Q{}q" as="1FM"/>
773
         <let role="body"
774
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
775
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
776
              line="125"
777
              var="Q{}items"
778
              slot="1"
779
              eval="4">
780
            <lookup>
781
               <varRef name="Q{}q" slot="0"/>
782
               <str val="items"/>
783
            </lookup>
784
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
785
               <sequence>
786
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
787
                     <str val="keys"/>
788
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
789
                        <treat as="FM" diag="0|0||map:remove">
790
                           <check card="1" diag="0|0||map:remove">
791
                              <lookup>
792
                                 <varRef name="Q{}q" slot="0"/>
793
                                 <str val="keys"/>
794
                              </lookup>
795
                           </check>
796
                        </treat>
797
                        <data diag="0|1||map:remove">
798
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
799
                              <treat as="FA" diag="0|0||array:head">
800
                                 <check card="1" diag="0|0||array:head">
801
                                    <varRef name="Q{}items" slot="1"/>
802
                                 </check>
803
                              </treat>
804
                           </ifCall>
805
                        </data>
806
                     </ifCall>
807
                  </ifCall>
808
                  <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
809
                     <str val="items"/>
810
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
811
                        <treat as="FA" diag="0|0||array:tail">
812
                           <check card="1" diag="0|0||array:tail">
813
                              <varRef name="Q{}items" slot="1"/>
814
                           </check>
815
                        </treat>
816
                     </ifCall>
817
                  </ifCall>
818
               </sequence>
819
               <map size="2">
820
                  <str val="duplicates"/>
821
                  <str val="reject"/>
822
                  <str val="duplicates-error-code"/>
823
                  <str val="FOJS0003"/>
824
               </map>
825
            </ifCall>
826
         </let>
827
      </function>
828
      <function name="Q{xslt:priority-queue:2020}head"
829
                line="105"
830
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
831
                eval="7"
832
                flags="pU"
833
                as="?FM"
834
                slots="2">
835
         <arg name="Q{}q" as="1FM"/>
836
         <let role="body"
837
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
838
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
839
              line="108"
840
              var="Q{http://saxon.sf.net/generated-variable}v0"
841
              as="1F"
842
              slot="1"
843
              eval="13">
844
            <treat as="F" diag="0|0||saxon:apply">
845
               <check card="1" diag="0|0||saxon:apply">
846
                  <lookup>
847
                     <varRef name="Q{}q" slot="0"/>
848
                     <str val="keys"/>
849
                  </lookup>
850
               </check>
851
            </treat>
852
            <treat as="FM" diag="5|0|XTTE0780|q:head#1">
853
               <check card="?" diag="5|0|XTTE0780|q:head#1">
854
                  <forEach>
855
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}head" type="*">
856
                        <treat as="FA" diag="0|0||array:head">
857
                           <check card="1" diag="0|0||array:head">
858
                              <lookup>
859
                                 <varRef name="Q{}q" slot="0"/>
860
                                 <str val="items"/>
861
                              </lookup>
862
                           </check>
863
                        </treat>
864
                     </ifCall>
865
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
866
                        <varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
867
                        <arrayBlock>
868
                           <dot/>
869
                        </arrayBlock>
870
                     </ifCall>
871
                  </forEach>
872
               </check>
873
            </treat>
874
         </let>
875
      </function>
876
      <function name="Q{xslt:priority-queue:2020}size"
877
                line="91"
878
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
879
                eval="8"
880
                flags="pU"
881
                as="1ADI"
882
                slots="1">
883
         <arg name="Q{}q" as="1FM"/>
884
         <ifCall role="body"
885
                 baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
886
                 ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
887
                 line="94"
888
                 name="Q{http://www.w3.org/2005/xpath-functions/array}size"
889
                 type="1ADI">
890
            <treat as="FA" diag="0|0||array:size">
891
               <check card="1" diag="0|0||array:size">
892
                  <lookup>
893
                     <varRef name="Q{}q" slot="0"/>
894
                     <str val="items"/>
895
                  </lookup>
896
               </check>
897
            </treat>
898
         </ifCall>
899
      </function>
900
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
901
                line="0"
902
                eval="4"
903
                flags="pU"
904
                as="*"
905
                slots="10">
906
         <arg name="Q{}state" as="*"/>
907
         <arg name="Q{}g" as="1FM"/>
908
         <arg name="Q{}target" as="?"/>
909
         <let role="body"
910
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
911
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
912
              line="173"
913
              var="Q{}item"
914
              slot="3"
915
              eval="3">
916
            <lookup>
917
               <ufCall name="Q{xslt:priority-queue:2020}head" tailCall="false" bSlot="0">
918
                  <treat as="FM" diag="0|0||q:head">
919
                     <check card="1" diag="0|0||q:head">
920
                        <subscript>
921
                           <varRef name="Q{}state" slot="0"/>
922
                           <int val="2"/>
923
                        </subscript>
924
                     </check>
925
                  </treat>
926
               </ufCall>
927
               <str val="value"/>
928
            </lookup>
929
            <let var="Q{}visited" slot="4" eval="7">
930
               <subscript>
931
                  <varRef name="Q{}state" slot="0"/>
932
                  <int val="3"/>
933
               </subscript>
934
               <let var="Q{}from" slot="5" eval="4">
935
                  <lookup>
936
                     <varRef name="Q{}item" slot="3"/>
937
                     <str val="to"/>
938
                  </lookup>
939
                  <let var="Q{}total" slot="6" eval="4">
940
                     <lookup>
941
                        <varRef name="Q{}item" slot="3"/>
942
                        <str val="distance"/>
943
                     </lookup>
944
                     <choose>
945
                        <gc op="="
946
                            card="M:N"
947
                            comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
948
                           <data diag="1|0||=">
949
                              <varRef name="Q{}target" slot="2"/>
950
                           </data>
951
                           <data diag="1|1||=">
952
                              <varRef name="Q{}from" slot="5"/>
953
                           </data>
954
                        </gc>
955
                        <sequence>
956
                           <int val="0"/>
957
                           <ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="1"/>
958
                           <varRef name="Q{}visited" slot="4"/>
959
                        </sequence>
960
                        <true/>
961
                        <fn name="fold-left">
962
                           <for var="Q{}edge" slot="7">
963
                              <ufCall role="in"
964
                                      name="Q{xslt:graph-api:2020}vertex-edges"
965
                                      tailCall="false"
966
                                      bSlot="2">
967
                                 <check card="1" diag="0|0||g:vertex-edges">
968
                                    <varRef name="Q{}from" slot="5"/>
969
                                 </check>
970
                                 <varRef name="Q{}g" slot="1"/>
971
                              </ufCall>
972
                              <let role="return" var="Q{}distance" slot="8" eval="4">
973
                                 <ufCall name="Q{xslt:graph-api:2020}edge-value" tailCall="false" bSlot="3">
974
                                    <varRef name="Q{}edge" slot="7"/>
975
                                    <varRef name="Q{}g" slot="1"/>
976
                                 </ufCall>
977
                                 <for var="Q{}to" slot="9">
978
                                    <ufCall role="in"
979
                                            name="Q{xslt:graph-api:2020}edge-vertices"
980
                                            tailCall="false"
981
                                            bSlot="4">
982
                                       <varRef name="Q{}edge" slot="7"/>
983
                                       <varRef name="Q{}g" slot="1"/>
984
                                    </ufCall>
985
                                    <choose role="return">
986
                                       <gc op="="
987
                                           card="M:N"
988
                                           comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
989
                                          <data diag="1|0||=">
990
                                             <varRef name="Q{}to" slot="9"/>
991
                                          </data>
992
                                          <data diag="1|1||=">
993
                                             <varRef name="Q{}from" slot="5"/>
994
                                          </data>
995
                                       </gc>
996
                                       <empty/>
997
                                       <true/>
998
                                       <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
999
                                          <sequence>
1000
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1001
                                                <str val="from"/>
1002
                                                <varRef name="Q{}from" slot="5"/>
1003
                                             </ifCall>
1004
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1005
                                                <str val="to"/>
1006
                                                <varRef name="Q{}to" slot="9"/>
1007
                                             </ifCall>
1008
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1009
                                                <str val="edge"/>
1010
                                                <varRef name="Q{}edge" slot="7"/>
1011
                                             </ifCall>
1012
                                             <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1013
                                                <str val="distance"/>
1014
                                                <choose>
1015
                                                   <fn name="empty">
1016
                                                      <varRef name="Q{}total" slot="6"/>
1017
                                                   </fn>
1018
                                                   <varRef name="Q{}distance" slot="8"/>
1019
                                                   <true/>
1020
                                                   <arith op="+" calc="a+a">
1021
                                                      <cvUntyped to="AO">
1022
                                                         <atomSing card="?" diag="1|0||+">
1023
                                                            <varRef name="Q{}total" slot="6"/>
1024
                                                         </atomSing>
1025
                                                      </cvUntyped>
1026
                                                      <cvUntyped to="AO">
1027
                                                         <atomSing card="?" diag="1|1||+">
1028
                                                            <varRef name="Q{}distance" slot="8"/>
1029
                                                         </atomSing>
1030
                                                      </cvUntyped>
1031
                                                   </arith>
1032
                                                </choose>
1033
                                             </ifCall>
1034
                                          </sequence>
1035
                                          <map size="2">
1036
                                             <str val="duplicates"/>
1037
                                             <str val="reject"/>
1038
                                             <str val="duplicates-error-code"/>
1039
                                             <str val="FOJS0003"/>
1040
                                          </map>
1041
                                       </ifCall>
1042
                                    </choose>
1043
                                 </for>
1044
                              </let>
1045
                           </for>
1046
                           <sequence>
1047
                              <int val="0"/>
1048
                              <ufCall name="Q{xslt:priority-queue:2020}tail" tailCall="false" bSlot="5">
1049
                                 <treat as="FM" diag="0|0||q:tail">
1050
                                    <check card="1" diag="0|0||q:tail">
1051
                                       <subscript>
1052
                                          <varRef name="Q{}state" slot="0"/>
1053
                                          <int val="2"/>
1054
                                       </subscript>
1055
                                    </check>
1056
                                 </treat>
1057
                              </ufCall>
1058
                              <varRef name="Q{}visited" slot="4"/>
1059
                           </sequence>
1060
                           <fnCoercer to="1F a[*,1]" diag="0|2||fn:fold-left">
1061
                              <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
1062
                                     arity="2"
1063
                                     bSlot="6"/>
1064
                           </fnCoercer>
1065
                        </fn>
1066
                     </choose>
1067
                  </let>
1068
               </let>
1069
            </let>
1070
         </let>
1071
      </function>
1072
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_769432223"
1073
                line="0"
1074
                eval="4"
1075
                flags="pU"
1076
                as="*"
1077
                slots="1">
1078
         <arg name="Q{}edge" as="1FM"/>
1079
         <lookup role="body"
1080
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
1081
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1082
                 line="73">
1083
            <varRef name="Q{}edge" slot="0"/>
1084
            <str val="length"/>
1085
         </lookup>
1086
      </function>
1087
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_696933920"
1088
                line="0"
1089
                eval="4"
1090
                flags="pU"
1091
                as="*"
1092
                slots="1">
1093
         <arg name="Q{}edge" as="1FM"/>
1094
         <sequence role="body"
1095
                   baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
1096
                   ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1097
                   line="73">
1098
            <lookup>
1099
               <varRef name="Q{}edge" slot="0"/>
1100
               <str val="from"/>
1101
            </lookup>
1102
            <lookup>
1103
               <varRef name="Q{}edge" slot="0"/>
1104
               <str val="to"/>
1105
            </lookup>
1106
         </sequence>
1107
      </function>
1108
      <function name="Q{xslt:graph-api:2020}edge-value"
1109
                line="83"
1110
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
1111
                eval="4"
1112
                flags="pU"
1113
                as="*"
1114
                slots="3">
1115
         <arg name="Q{}edge" as="1"/>
1116
         <arg name="Q{}g" as="1FM"/>
1117
         <let role="body"
1118
              baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
1119
              ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1120
              line="92"
1121
              var="Q{}fn"
1122
              slot="2"
1123
              eval="4">
1124
            <lookup>
1125
               <varRef name="Q{}g" slot="1"/>
1126
               <str val="edge-value"/>
1127
            </lookup>
1128
            <choose>
1129
               <fn name="empty">
1130
                  <varRef name="Q{}fn" slot="2"/>
1131
               </fn>
1132
               <varRef name="Q{}edge" slot="0"/>
1133
               <true/>
1134
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
1135
                  <treat as="F" diag="0|0||saxon:apply">
1136
                     <check card="1" diag="0|0||saxon:apply">
1137
                        <varRef name="Q{}fn" slot="2"/>
1138
                     </check>
1139
                  </treat>
1140
                  <arrayBlock>
1141
                     <varRef name="Q{}edge" slot="0"/>
1142
                  </arrayBlock>
1143
               </ifCall>
1144
            </choose>
1145
         </let>
1146
      </function>
1147
      <function name="Q{xslt:priority-queue:2020}items"
1148
                line="152"
1149
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1150
                eval="4"
1151
                flags="pU"
1152
                as="*FM"
1153
                slots="2">
1154
         <arg name="Q{}q" as="1FM"/>
1155
         <let role="body"
1156
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1157
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1158
              line="155"
1159
              var="Q{http://saxon.sf.net/generated-variable}v0"
1160
              as="1F"
1161
              slot="1"
1162
              eval="13">
1163
            <treat as="F" diag="0|0||saxon:apply">
1164
               <check card="1" diag="0|0||saxon:apply">
1165
                  <lookup>
1166
                     <varRef name="Q{}q" slot="0"/>
1167
                     <str val="keys"/>
1168
                  </lookup>
1169
               </check>
1170
            </treat>
1171
            <treat as="FM" diag="5|0|XTTE0780|q:items#1">
1172
               <forEach>
1173
                  <lookupAll>
1174
                     <lookup>
1175
                        <varRef name="Q{}q" slot="0"/>
1176
                        <str val="items"/>
1177
                     </lookup>
1178
                  </lookupAll>
1179
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
1180
                     <varRef name="Q{http://saxon.sf.net/generated-variable}v0" slot="1"/>
1181
                     <arrayBlock>
1182
                        <dot/>
1183
                     </arrayBlock>
1184
                  </ifCall>
1185
               </forEach>
1186
            </treat>
1187
         </let>
1188
      </function>
1189
      <function name="Q{xslt:priority-queue:2020}remove"
1190
                line="67"
1191
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1192
                eval="16"
1193
                flags="pU"
1194
                as="1FM"
1195
                slots="5">
1196
         <arg name="Q{}q" as="1FM"/>
1197
         <arg name="Q{}key" as="1"/>
1198
         <let role="body"
1199
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1200
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1201
              line="83"
1202
              var="Q{}keys"
1203
              slot="2"
1204
              eval="4">
1205
            <lookup>
1206
               <varRef name="Q{}q" slot="0"/>
1207
               <str val="keys"/>
1208
            </lookup>
1209
            <let var="Q{}items" slot="3" eval="4">
1210
               <lookup>
1211
                  <varRef name="Q{}q" slot="0"/>
1212
                  <str val="items"/>
1213
               </lookup>
1214
               <let var="Q{}item" slot="4" eval="4">
1215
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
1216
                     <treat as="F" diag="0|0||saxon:apply">
1217
                        <check card="1" diag="0|0||saxon:apply">
1218
                           <varRef name="Q{}keys" slot="2"/>
1219
                        </check>
1220
                     </treat>
1221
                     <arrayBlock>
1222
                        <varRef name="Q{}key" slot="1"/>
1223
                     </arrayBlock>
1224
                  </ifCall>
1225
                  <choose>
1226
                     <fn name="empty">
1227
                        <varRef name="Q{}item" slot="4"/>
1228
                     </fn>
1229
                     <varRef name="Q{}q" slot="0"/>
1230
                     <true/>
1231
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1232
                        <sequence>
1233
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1234
                              <str val="keys"/>
1235
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}remove" type="1FM">
1236
                                 <treat as="FM" diag="0|0||map:remove">
1237
                                    <check card="1" diag="0|0||map:remove">
1238
                                       <varRef name="Q{}keys" slot="2"/>
1239
                                    </check>
1240
                                 </treat>
1241
                                 <data diag="0|1||map:remove">
1242
                                    <varRef name="Q{}key" slot="1"/>
1243
                                 </data>
1244
                              </ifCall>
1245
                           </ifCall>
1246
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1247
                              <str val="items"/>
1248
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
1249
                                 <treat as="FA" diag="0|0||array:remove">
1250
                                    <check card="1" diag="0|0||array:remove">
1251
                                       <varRef name="Q{}items" slot="3"/>
1252
                                    </check>
1253
                                 </treat>
1254
                                 <ufCall name="Q{private:xslt:priority-queue:2020}find"
1255
                                         tailCall="false"
1256
                                         bSlot="0"
1257
                                         eval="16 16 8 6">
1258
                                    <treat as="FM" diag="0|0||p:find">
1259
                                       <check card="1" diag="0|0||p:find">
1260
                                          <varRef name="Q{}keys" slot="2"/>
1261
                                       </check>
1262
                                    </treat>
1263
                                    <treat as="FA" diag="0|1||p:find">
1264
                                       <check card="1" diag="0|1||p:find">
1265
                                          <varRef name="Q{}items" slot="3"/>
1266
                                       </check>
1267
                                    </treat>
1268
                                    <check card="?" diag="0|2||p:find">
1269
                                       <lookup>
1270
                                          <varRef name="Q{}item" slot="4"/>
1271
                                          <str val="priority"/>
1272
                                       </lookup>
1273
                                    </check>
1274
                                    <varRef name="Q{}key" slot="1"/>
1275
                                 </ufCall>
1276
                              </ifCall>
1277
                           </ifCall>
1278
                        </sequence>
1279
                        <map size="2">
1280
                           <str val="duplicates"/>
1281
                           <str val="reject"/>
1282
                           <str val="duplicates-error-code"/>
1283
                           <str val="FOJS0003"/>
1284
                        </map>
1285
                     </ifCall>
1286
                  </choose>
1287
               </let>
1288
            </let>
1289
         </let>
1290
      </function>
1291
      <function name="Q{xslt:functions:2020}skip-while"
1292
                line="117"
1293
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
1294
                eval="9"
1295
                flags="pU"
1296
                as="*"
1297
                slots="2">
1298
         <arg name="Q{}items" as="*"/>
1299
         <arg name="Q{}condition" as="1F r[1AB] a[1,1ADI]"/>
1300
         <callT role="body"
1301
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
1302
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
1303
                line="122"
1304
                name="Q{xslt:functions:2020}skip-while"
1305
                bSlot="0">
1306
            <withParam name="Q{}items" flags="c">
1307
               <varRef line="123" name="Q{}items" slot="0"/>
1308
            </withParam>
1309
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[1,1ADI]">
1310
               <varRef line="124" name="Q{}condition" slot="1"/>
1311
            </withParam>
1312
         </callT>
1313
      </function>
1314
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
1315
                line="0"
1316
                eval="16"
1317
                flags="pU"
1318
                as="*"
1319
                slots="1">
1320
         <arg name="Q{}state" as="1FM"/>
1321
         <vc role="body"
1322
             baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
1323
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1324
             line="79"
1325
             op="gt"
1326
             onEmpty="0"
1327
             comp="CAVC">
1328
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
1329
               <treat as="FA" diag="0|0||array:size">
1330
                  <check card="1" diag="0|0||array:size">
1331
                     <lookup>
1332
                        <varRef name="Q{}state" slot="0"/>
1333
                        <str val="queue"/>
1334
                     </lookup>
1335
                  </check>
1336
               </treat>
1337
            </ifCall>
1338
            <int val="0"/>
1339
         </vc>
1340
      </function>
1341
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
1342
                line="0"
1343
                eval="16"
1344
                flags="pU"
1345
                as="*"
1346
                slots="1">
1347
         <arg name="Q{}state" as="*"/>
1348
         <vc role="body"
1349
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1350
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1351
             line="173"
1352
             op="gt"
1353
             onEmpty="0"
1354
             comp="CAVC">
1355
            <ufCall name="Q{xslt:priority-queue:2020}size" tailCall="false" bSlot="0">
1356
               <treat as="FM" diag="0|0||q:size">
1357
                  <check card="1" diag="0|0||q:size">
1358
                     <subscript>
1359
                        <varRef name="Q{}state" slot="0"/>
1360
                        <int val="2"/>
1361
                     </subscript>
1362
                  </check>
1363
               </treat>
1364
            </ufCall>
1365
            <int val="0"/>
1366
         </vc>
1367
      </function>
1368
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_775445710"
1369
                line="0"
1370
                eval="6"
1371
                flags="pU"
1372
                as="*"
1373
                slots="1">
1374
         <arg name="Q{}roads" as="*FM k[AS] v[?ADI]"/>
1375
         <varRef role="body"
1376
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
1377
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1378
                 line="73"
1379
                 name="Q{}roads"
1380
                 slot="0"/>
1381
      </function>
1382
      <function name="Q{xslt:priority-queue:2020}add"
1383
                line="34"
1384
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1385
                eval="8"
1386
                flags="pU"
1387
                as="1FM"
1388
                slots="9">
1389
         <arg name="Q{}q" as="1FM"/>
1390
         <arg name="Q{}priority" as="?"/>
1391
         <arg name="Q{}key" as="1"/>
1392
         <arg name="Q{}value" as="*"/>
1393
         <let role="body"
1394
              baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1395
              ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1396
              line="58"
1397
              var="Q{}keys"
1398
              slot="4"
1399
              eval="3">
1400
            <lookup>
1401
               <varRef name="Q{}q" slot="0"/>
1402
               <str val="keys"/>
1403
            </lookup>
1404
            <let var="Q{}items" slot="5" eval="3">
1405
               <lookup>
1406
                  <varRef name="Q{}q" slot="0"/>
1407
                  <str val="items"/>
1408
               </lookup>
1409
               <let var="Q{}item" slot="6" eval="3">
1410
                  <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$keys">
1411
                     <treat as="F" diag="0|0||saxon:apply">
1412
                        <check card="1" diag="0|0||saxon:apply">
1413
                           <varRef name="Q{}keys" slot="4"/>
1414
                        </check>
1415
                     </treat>
1416
                     <arrayBlock>
1417
                        <varRef name="Q{}key" slot="2"/>
1418
                     </arrayBlock>
1419
                  </ifCall>
1420
                  <let var="Q{}items" slot="7" eval="3">
1421
                     <choose>
1422
                        <fn name="empty">
1423
                           <varRef name="Q{}item" slot="6"/>
1424
                        </fn>
1425
                        <varRef name="Q{}items" slot="5"/>
1426
                        <true/>
1427
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}remove" type="1FA">
1428
                           <treat as="FA" diag="0|0||array:remove">
1429
                              <check card="1" diag="0|0||array:remove">
1430
                                 <varRef name="Q{}items" slot="5"/>
1431
                              </check>
1432
                           </treat>
1433
                           <ufCall name="Q{private:xslt:priority-queue:2020}find"
1434
                                   tailCall="false"
1435
                                   bSlot="0"
1436
                                   eval="16 16 8 6">
1437
                              <treat as="FM" diag="0|0||p:find">
1438
                                 <check card="1" diag="0|0||p:find">
1439
                                    <varRef name="Q{}keys" slot="4"/>
1440
                                 </check>
1441
                              </treat>
1442
                              <treat as="FA" diag="0|1||p:find">
1443
                                 <check card="1" diag="0|1||p:find">
1444
                                    <varRef name="Q{}items" slot="5"/>
1445
                                 </check>
1446
                              </treat>
1447
                              <check card="?" diag="0|2||p:find">
1448
                                 <lookup>
1449
                                    <varRef name="Q{}item" slot="6"/>
1450
                                    <str val="priority"/>
1451
                                 </lookup>
1452
                              </check>
1453
                              <varRef name="Q{}key" slot="2"/>
1454
                           </ufCall>
1455
                        </ifCall>
1456
                     </choose>
1457
                     <let var="Q{}index" slot="8" eval="16">
1458
                        <ufCall name="Q{private:xslt:priority-queue:2020}find"
1459
                                tailCall="false"
1460
                                bSlot="1"
1461
                                eval="16 16 6 6">
1462
                           <treat as="FM" diag="0|0||p:find">
1463
                              <check card="1" diag="0|0||p:find">
1464
                                 <varRef name="Q{}keys" slot="4"/>
1465
                              </check>
1466
                           </treat>
1467
                           <treat as="FA" diag="0|1||p:find">
1468
                              <check card="1" diag="0|1||p:find">
1469
                                 <varRef name="Q{}items" slot="7"/>
1470
                              </check>
1471
                           </treat>
1472
                           <varRef name="Q{}priority" slot="1"/>
1473
                           <varRef name="Q{}key" slot="2"/>
1474
                        </ufCall>
1475
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1476
                           <sequence>
1477
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1478
                                 <str val="keys"/>
1479
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
1480
                                    <treat as="FM" diag="0|0||map:put">
1481
                                       <check card="1" diag="0|0||map:put">
1482
                                          <varRef name="Q{}keys" slot="4"/>
1483
                                       </check>
1484
                                    </treat>
1485
                                    <atomSing diag="0|1||map:put">
1486
                                       <varRef name="Q{}key" slot="2"/>
1487
                                    </atomSing>
1488
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1489
                                       <sequence>
1490
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1491
                                             <str val="key"/>
1492
                                             <varRef name="Q{}key" slot="2"/>
1493
                                          </ifCall>
1494
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1495
                                             <str val="priority"/>
1496
                                             <varRef name="Q{}priority" slot="1"/>
1497
                                          </ifCall>
1498
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1499
                                             <str val="value"/>
1500
                                             <varRef name="Q{}value" slot="3"/>
1501
                                          </ifCall>
1502
                                       </sequence>
1503
                                       <map size="2">
1504
                                          <str val="duplicates"/>
1505
                                          <str val="reject"/>
1506
                                          <str val="duplicates-error-code"/>
1507
                                          <str val="FOJS0003"/>
1508
                                       </map>
1509
                                    </ifCall>
1510
                                 </ifCall>
1511
                              </ifCall>
1512
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1513
                                 <str val="items"/>
1514
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}insert-before"
1515
                                         type="1FA">
1516
                                    <treat as="FA" diag="0|0||array:insert-before">
1517
                                       <check card="1" diag="0|0||array:insert-before">
1518
                                          <varRef name="Q{}items" slot="7"/>
1519
                                       </check>
1520
                                    </treat>
1521
                                    <minus>
1522
                                       <varRef name="Q{}index" slot="8"/>
1523
                                    </minus>
1524
                                    <varRef name="Q{}key" slot="2"/>
1525
                                 </ifCall>
1526
                              </ifCall>
1527
                           </sequence>
1528
                           <map size="2">
1529
                              <str val="duplicates"/>
1530
                              <str val="reject"/>
1531
                              <str val="duplicates-error-code"/>
1532
                              <str val="FOJS0003"/>
1533
                           </map>
1534
                        </ifCall>
1535
                     </let>
1536
                  </let>
1537
               </let>
1538
            </let>
1539
         </let>
1540
      </function>
1541
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
1542
                line="0"
1543
                eval="8"
1544
                flags="pU"
1545
                as="*"
1546
                slots="2">
1547
         <arg name="Q{}vertex" as="1"/>
1548
         <arg name="Q{}visited" as="*"/>
1549
         <fn role="body"
1550
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1551
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1552
             line="88"
1553
             name="exists">
1554
            <forEach>
1555
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
1556
                  <treat as="F" diag="0|0||saxon:apply">
1557
                     <check card="1" diag="0|0||saxon:apply">
1558
                        <varRef name="Q{}visited" slot="1"/>
1559
                     </check>
1560
                  </treat>
1561
                  <arrayBlock>
1562
                     <varRef name="Q{}vertex" slot="0"/>
1563
                  </arrayBlock>
1564
               </ifCall>
1565
               <lookup>
1566
                  <dot/>
1567
                  <str val="from"/>
1568
               </lookup>
1569
            </forEach>
1570
         </fn>
1571
      </function>
1572
      <function name="Q{xslt:priority-queue:2020}item"
1573
                line="137"
1574
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1575
                eval="7"
1576
                flags="pU"
1577
                as="?FM"
1578
                slots="2">
1579
         <arg name="Q{}q" as="1FM"/>
1580
         <arg name="Q{}key" as="1"/>
1581
         <treat role="body"
1582
                baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1583
                ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1584
                line="141"
1585
                as="FM"
1586
                diag="5|0|XTTE0780|q:item#2">
1587
            <check card="?" diag="5|0|XTTE0780|q:item#2">
1588
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$q ? &#34;keys&#34;">
1589
                  <treat as="F" diag="0|0||saxon:apply">
1590
                     <check card="1" diag="0|0||saxon:apply">
1591
                        <lookup>
1592
                           <varRef name="Q{}q" slot="0"/>
1593
                           <str val="keys"/>
1594
                        </lookup>
1595
                     </check>
1596
                  </treat>
1597
                  <arrayBlock>
1598
                     <varRef name="Q{}key" slot="1"/>
1599
                  </arrayBlock>
1600
               </ifCall>
1601
            </check>
1602
         </treat>
1603
      </function>
1604
      <function name="Q{xslt:priority-queue:2020}create"
1605
                line="22"
1606
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1607
                eval="6"
1608
                flags="pU"
1609
                as="1FM"
1610
                slots="0">
1611
         <gVarRef role="body"
1612
                  baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
1613
                  ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1614
                  line="23"
1615
                  name="Q{xslt:priority-queue:2020}empty"
1616
                  bSlot="0"/>
1617
      </function>
1618
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_712974096"
1619
                line="0"
1620
                eval="4"
1621
                flags="pU"
1622
                as="*"
1623
                slots="2">
1624
         <arg name="Q{}vertex" as="1ADI"/>
1625
         <arg name="Q{}vertices" as="1FM"/>
1626
         <filter role="body"
1627
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
1628
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
1629
                 line="73"
1630
                 flags="b">
1631
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
1632
               <varRef name="Q{}vertices" slot="1"/>
1633
               <varRef name="Q{}vertex" slot="0"/>
1634
            </ifCall>
1635
            <gc op="="
1636
                card="N:1"
1637
                comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
1638
               <data diag="1|0||=">
1639
                  <lookup>
1640
                     <dot/>
1641
                     <str val="from"/>
1642
                  </lookup>
1643
               </data>
1644
               <varRef name="Q{}vertex" slot="0"/>
1645
            </gc>
1646
         </filter>
1647
      </function>
1648
      <function name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1649
                line="107"
1650
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1651
                eval="16"
1652
                flags="pU"
1653
                as="1FM"
1654
                slots="4">
1655
         <arg name="Q{}source" as="1"/>
1656
         <arg name="Q{}target" as="?"/>
1657
         <arg name="Q{}g" as="1FM"/>
1658
         <treat role="body"
1659
                baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1660
                ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1661
                line="173"
1662
                as="FM"
1663
                diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
1664
            <check card="1" diag="5|0|XTTE0780|g:dijkstra-search-visited#3">
1665
               <subscript>
1666
                  <ufCall name="Q{xslt:functions:2020}while"
1667
                          tailCall="false"
1668
                          bSlot="0"
1669
                          eval="8 16 16">
1670
                     <let var="Q{}item" slot="3" eval="8">
1671
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1672
                           <str val="to"/>
1673
                           <varRef name="Q{}source" slot="0"/>
1674
                        </ifCall>
1675
                        <sequence>
1676
                           <int val="0"/>
1677
                           <ufCall name="Q{xslt:priority-queue:2020}add"
1678
                                   tailCall="false"
1679
                                   bSlot="1"
1680
                                   eval="16 0 6 6">
1681
                              <ufCall name="Q{xslt:priority-queue:2020}create" tailCall="false" bSlot="2"/>
1682
                              <empty/>
1683
                              <varRef name="Q{}source" slot="0"/>
1684
                              <varRef name="Q{}item" slot="3"/>
1685
                           </ufCall>
1686
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1687
                              <atomSing diag="0|0||map:entry">
1688
                                 <varRef name="Q{}source" slot="0"/>
1689
                              </atomSing>
1690
                              <varRef name="Q{}item" slot="3"/>
1691
                           </ifCall>
1692
                        </sequence>
1693
                     </let>
1694
                     <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
1695
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_656479172"
1696
                               arity="1"
1697
                               bSlot="3"/>
1698
                     </fnCoercer>
1699
                     <partialApply>
1700
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_760357227"
1701
                               arity="3"
1702
                               bSlot="4"/>
1703
                        <null/>
1704
                        <varRef name="Q{}g" slot="2"/>
1705
                        <varRef name="Q{}target" slot="1"/>
1706
                     </partialApply>
1707
                  </ufCall>
1708
                  <int val="3"/>
1709
               </subscript>
1710
            </check>
1711
         </treat>
1712
      </function>
1713
      <function name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
1714
                line="75"
1715
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1716
                eval="4"
1717
                flags="pU"
1718
                as="*FM"
1719
                slots="4">
1720
         <arg name="Q{}source" as="1"/>
1721
         <arg name="Q{}target" as="1"/>
1722
         <arg name="Q{}g" as="1FM"/>
1723
         <let role="body"
1724
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1725
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1726
              line="88"
1727
              var="Q{}visited"
1728
              slot="3"
1729
              eval="16">
1730
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1731
                    tailCall="false"
1732
                    bSlot="0"
1733
                    eval="6 6 6">
1734
               <varRef name="Q{}source" slot="0"/>
1735
               <varRef name="Q{}target" slot="1"/>
1736
               <varRef name="Q{}g" slot="2"/>
1737
            </ufCall>
1738
            <treat as="FM" diag="5|0|XTTE0780|g:dijkstra-search-reversed#3">
1739
               <ufCall name="Q{xslt:functions:2020}while"
1740
                       tailCall="false"
1741
                       bSlot="1"
1742
                       eval="6 16 16 16">
1743
                  <varRef name="Q{}target" slot="1"/>
1744
                  <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
1745
                     <partialApply>
1746
                        <fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
1747
                           <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658404420"
1748
                                  arity="2"
1749
                                  bSlot="2"/>
1750
                        </fnCoercer>
1751
                        <null/>
1752
                        <varRef name="Q{}visited" slot="3"/>
1753
                     </partialApply>
1754
                  </fnCoercer>
1755
                  <partialApply>
1756
                     <fnCoercer to="1F a[*,*]" diag="0|0||saxon:call">
1757
                        <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
1758
                               arity="2"
1759
                               bSlot="3"/>
1760
                     </fnCoercer>
1761
                     <null/>
1762
                     <varRef name="Q{}visited" slot="3"/>
1763
                  </partialApply>
1764
                  <fnCoercer to="1F a[*,*]" diag="0|3||f:while">
1765
                     <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
1766
                            arity="2"
1767
                            bSlot="4"/>
1768
                  </fnCoercer>
1769
               </ufCall>
1770
            </treat>
1771
         </let>
1772
      </function>
1773
      <function name="Q{xslt:functions:2020}repeat"
1774
                line="72"
1775
                module="file:/C:/projects/git/xslt-graph/functions.xslt"
1776
                eval="9"
1777
                flags="pU"
1778
                as="*"
1779
                slots="4">
1780
         <arg name="Q{}state" as="*"/>
1781
         <arg name="Q{}condition" as="1F r[1AB] a[*]"/>
1782
         <arg name="Q{}action" as="1F a[*]"/>
1783
         <arg name="Q{}next" as="1F a[*,*]"/>
1784
         <callT role="body"
1785
                baseUri="file:/C:/projects/git/xslt-graph/functions.xslt"
1786
                ns="f=xslt:functions:2020 xs=~ xsl=~ xml=~"
1787
                line="78"
1788
                name="Q{xslt:functions:2020}repeat"
1789
                bSlot="0">
1790
            <withParam name="Q{}state" flags="c">
1791
               <varRef line="79" name="Q{}state" slot="0"/>
1792
            </withParam>
1793
            <withParam name="Q{}condition" flags="c" as="1F r[1AB] a[*]">
1794
               <varRef line="80" name="Q{}condition" slot="1"/>
1795
            </withParam>
1796
            <withParam name="Q{}action" flags="c" as="1F a[*]">
1797
               <varRef line="81" name="Q{}action" slot="2"/>
1798
            </withParam>
1799
            <withParam name="Q{}next" flags="c" as="1F a[*,*]">
1800
               <varRef line="82" name="Q{}next" slot="3"/>
1801
            </withParam>
1802
         </callT>
1803
      </function>
1804
      <function name="Q{xslt:graph-api:2020}dijkstra-search"
1805
                line="50"
1806
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1807
                eval="4"
1808
                flags="pU"
1809
                as="*FM"
1810
                slots="3">
1811
         <arg name="Q{}source" as="1"/>
1812
         <arg name="Q{}target" as="1"/>
1813
         <arg name="Q{}g" as="1FM"/>
1814
         <fn role="body"
1815
             baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1816
             ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1817
             line="56"
1818
             name="reverse">
1819
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-reversed"
1820
                    tailCall="false"
1821
                    bSlot="0"
1822
                    eval="6 6 6">
1823
               <varRef name="Q{}source" slot="0"/>
1824
               <varRef name="Q{}target" slot="1"/>
1825
               <varRef name="Q{}g" slot="2"/>
1826
            </ufCall>
1827
         </fn>
1828
      </function>
1829
      <function name="Q{xslt:graph-api:2020}dijkstra-search"
1830
                line="27"
1831
                module="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1832
                eval="16"
1833
                flags="pU"
1834
                as="1FM"
1835
                slots="2">
1836
         <arg name="Q{}source" as="1"/>
1837
         <arg name="Q{}g" as="1FM"/>
1838
         <tailCallLoop role="body"
1839
                       baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
1840
                       ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
1841
                       line="31">
1842
            <ufCall name="Q{xslt:graph-api:2020}dijkstra-search-visited"
1843
                    tailCall="foreign"
1844
                    bSlot="0"
1845
                    eval="6 0 6">
1846
               <varRef name="Q{}source" slot="0"/>
1847
               <empty/>
1848
               <varRef name="Q{}g" slot="1"/>
1849
            </ufCall>
1850
         </tailCallLoop>
1851
      </function>
1852
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
1853
                line="0"
1854
                eval="16"
1855
                flags="pU"
1856
                as="*"
1857
                slots="10">
1858
         <arg name="Q{}state" as="1FM"/>
1859
         <arg name="Q{}item" as="*"/>
1860
         <arg name="Q{}g" as="1FM"/>
1861
         <arg name="Q{}is-depth-first" as="1AB"/>
1862
         <let role="body"
1863
              baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
1864
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
1865
              line="79"
1866
              var="Q{}tail"
1867
              slot="4"
1868
              eval="8">
1869
            <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}tail" type="1FA">
1870
               <treat as="FA" diag="0|0||array:tail">
1871
                  <check card="1" diag="0|0||array:tail">
1872
                     <lookup>
1873
                        <varRef name="Q{}state" slot="0"/>
1874
                        <str val="queue"/>
1875
                     </lookup>
1876
                  </check>
1877
               </treat>
1878
            </ifCall>
1879
            <choose>
1880
               <fn name="empty">
1881
                  <varRef name="Q{}item" slot="1"/>
1882
               </fn>
1883
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1884
                  <sequence>
1885
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1886
                        <str val="queue"/>
1887
                        <varRef name="Q{}tail" slot="4"/>
1888
                     </ifCall>
1889
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1890
                        <str val="visited"/>
1891
                        <lookup>
1892
                           <varRef name="Q{}state" slot="0"/>
1893
                           <str val="visited"/>
1894
                        </lookup>
1895
                     </ifCall>
1896
                  </sequence>
1897
                  <map size="2">
1898
                     <str val="duplicates"/>
1899
                     <str val="reject"/>
1900
                     <str val="duplicates-error-code"/>
1901
                     <str val="FOJS0003"/>
1902
                  </map>
1903
               </ifCall>
1904
               <true/>
1905
               <let var="Q{}to" slot="5" eval="4">
1906
                  <lookup>
1907
                     <varRef name="Q{}item" slot="1"/>
1908
                     <str val="to"/>
1909
                  </lookup>
1910
                  <let var="Q{}visited" slot="6" eval="8">
1911
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
1912
                        <treat as="FM" diag="0|0||map:put">
1913
                           <check card="1" diag="0|0||map:put">
1914
                              <lookup>
1915
                                 <varRef name="Q{}state" slot="0"/>
1916
                                 <str val="visited"/>
1917
                              </lookup>
1918
                           </check>
1919
                        </treat>
1920
                        <atomSing diag="0|1||map:put">
1921
                           <varRef name="Q{}to" slot="5"/>
1922
                        </atomSing>
1923
                        <true/>
1924
                     </ifCall>
1925
                     <let var="Q{}items" slot="7" eval="8">
1926
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}_from-sequence"
1927
                                type="1FA">
1928
                           <for var="Q{}edge" slot="8">
1929
                              <ufCall role="in"
1930
                                      name="Q{xslt:graph-api:2020}vertex-edges"
1931
                                      tailCall="false"
1932
                                      bSlot="0">
1933
                                 <check card="1" diag="0|0||g:vertex-edges">
1934
                                    <varRef name="Q{}to" slot="5"/>
1935
                                 </check>
1936
                                 <varRef name="Q{}g" slot="2"/>
1937
                              </ufCall>
1938
                              <for role="return" var="Q{}vertex" slot="9">
1939
                                 <ufCall role="in"
1940
                                         name="Q{xslt:graph-api:2020}edge-vertices"
1941
                                         tailCall="false"
1942
                                         bSlot="1">
1943
                                    <varRef name="Q{}edge" slot="8"/>
1944
                                    <varRef name="Q{}g" slot="2"/>
1945
                                 </ufCall>
1946
                                 <choose role="return">
1947
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}get" type="*">
1948
                                       <varRef name="Q{}visited" slot="6"/>
1949
                                       <atomSing diag="0|1||map:get">
1950
                                          <varRef name="Q{}vertex" slot="9"/>
1951
                                       </atomSing>
1952
                                    </ifCall>
1953
                                    <empty/>
1954
                                    <true/>
1955
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1956
                                       <sequence>
1957
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1958
                                             <str val="from"/>
1959
                                             <varRef name="Q{}to" slot="5"/>
1960
                                          </ifCall>
1961
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1962
                                             <str val="to"/>
1963
                                             <varRef name="Q{}vertex" slot="9"/>
1964
                                          </ifCall>
1965
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1966
                                             <str val="edge"/>
1967
                                             <varRef name="Q{}edge" slot="8"/>
1968
                                          </ifCall>
1969
                                          <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1970
                                             <str val="depth"/>
1971
                                             <arith op="+" calc="a+a">
1972
                                                <cvUntyped to="AO">
1973
                                                   <atomSing card="?" diag="1|0||+">
1974
                                                      <lookup>
1975
                                                         <varRef name="Q{}item" slot="1"/>
1976
                                                         <str val="depth"/>
1977
                                                      </lookup>
1978
                                                   </atomSing>
1979
                                                </cvUntyped>
1980
                                                <int val="1"/>
1981
                                             </arith>
1982
                                          </ifCall>
1983
                                       </sequence>
1984
                                       <map size="2">
1985
                                          <str val="duplicates"/>
1986
                                          <str val="reject"/>
1987
                                          <str val="duplicates-error-code"/>
1988
                                          <str val="FOJS0003"/>
1989
                                       </map>
1990
                                    </ifCall>
1991
                                 </choose>
1992
                              </for>
1993
                           </for>
1994
                        </ifCall>
1995
                        <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
1996
                           <sequence>
1997
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
1998
                                 <str val="queue"/>
1999
                                 <choose>
2000
                                    <varRef name="Q{}is-depth-first" slot="3"/>
2001
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
2002
                                       <sequence>
2003
                                          <varRef name="Q{}items" slot="7"/>
2004
                                          <varRef name="Q{}tail" slot="4"/>
2005
                                       </sequence>
2006
                                    </ifCall>
2007
                                    <true/>
2008
                                    <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}join" type="1FA">
2009
                                       <sequence>
2010
                                          <varRef name="Q{}tail" slot="4"/>
2011
                                          <varRef name="Q{}items" slot="7"/>
2012
                                       </sequence>
2013
                                    </ifCall>
2014
                                 </choose>
2015
                              </ifCall>
2016
                              <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2017
                                 <str val="visited"/>
2018
                                 <varRef name="Q{}visited" slot="6"/>
2019
                              </ifCall>
2020
                           </sequence>
2021
                           <map size="2">
2022
                              <str val="duplicates"/>
2023
                              <str val="reject"/>
2024
                              <str val="duplicates-error-code"/>
2025
                              <str val="FOJS0003"/>
2026
                           </map>
2027
                        </ifCall>
2028
                     </let>
2029
                  </let>
2030
               </let>
2031
            </choose>
2032
         </let>
2033
      </function>
2034
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1963862935"
2035
                line="0"
2036
                eval="4"
2037
                flags="pU"
2038
                as="*"
2039
                slots="1">
2040
         <arg name="Q{}vertices" as="1FM"/>
2041
         <ifCall role="body"
2042
                 baseUri="file:/C:/projects/git/xslt-graph/tests/rome-test.xslt"
2043
                 ns="array=~ g=xslt:graph-api:2020 map=~ t=public:this xs=~ xsl=~ xml=~"
2044
                 line="73"
2045
                 name="Q{http://www.w3.org/2005/xpath-functions/map}keys"
2046
                 type="*A">
2047
            <varRef name="Q{}vertices" slot="0"/>
2048
         </ifCall>
2049
      </function>
2050
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_2017085051"
2051
                line="0"
2052
                eval="4"
2053
                flags="pU"
2054
                as="*"
2055
                slots="2">
2056
         <arg name="Q{}vertex" as="1"/>
2057
         <arg name="Q{}item" as="1FM"/>
2058
         <lookup role="body"
2059
                 baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
2060
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2061
                 line="88">
2062
            <varRef name="Q{}item" slot="1"/>
2063
            <str val="from"/>
2064
         </lookup>
2065
      </function>
2066
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_2108763062"
2067
                line="0"
2068
                eval="4"
2069
                flags="pU"
2070
                as="*"
2071
                slots="2">
2072
         <arg name="Q{}vertex" as="1"/>
2073
         <arg name="Q{}visited" as="*"/>
2074
         <ifCall role="body"
2075
                 baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
2076
                 ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2077
                 line="88"
2078
                 name="Q{http://saxon.sf.net/}apply"
2079
                 type="*"
2080
                 dyn="$visited">
2081
            <treat as="F" diag="0|0||saxon:apply">
2082
               <check card="1" diag="0|0||saxon:apply">
2083
                  <varRef name="Q{}visited" slot="1"/>
2084
               </check>
2085
            </treat>
2086
            <arrayBlock>
2087
               <varRef name="Q{}vertex" slot="0"/>
2088
            </arrayBlock>
2089
         </ifCall>
2090
      </function>
2091
      <function name="Q{xslt:graph-api:2020}edge-vertices"
2092
                line="101"
2093
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2094
                eval="4"
2095
                flags="pU"
2096
                as="+"
2097
                slots="2">
2098
         <arg name="Q{}edge" as="1"/>
2099
         <arg name="Q{}g" as="1FM"/>
2100
         <check role="body"
2101
                baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2102
                ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2103
                line="105"
2104
                card="+"
2105
                diag="5|0|XTTE0780|g:edge-vertices#2">
2106
            <ifCall name="Q{http://saxon.sf.net/}apply"
2107
                    type="*"
2108
                    dyn="$g ? &#34;edge-vertices&#34;">
2109
               <treat as="F" diag="0|0||saxon:apply">
2110
                  <check card="1" diag="0|0||saxon:apply">
2111
                     <lookup>
2112
                        <varRef name="Q{}g" slot="1"/>
2113
                        <str val="edge-vertices"/>
2114
                     </lookup>
2115
                  </check>
2116
               </treat>
2117
               <arrayBlock>
2118
                  <varRef name="Q{}edge" slot="0"/>
2119
               </arrayBlock>
2120
            </ifCall>
2121
         </check>
2122
      </function>
2123
      <function name="Q{http://ns.saxonica.com/anonymous-type}f_1944702768"
2124
                line="0"
2125
                eval="4"
2126
                flags="pU"
2127
                as="*"
2128
                slots="6">
2129
         <arg name="Q{}state" as="*"/>
2130
         <arg name="Q{}neighbor" as="1FM"/>
2131
         <let role="body"
2132
              baseUri="file:/C:/projects/git/xslt-graph/dijkstra-search.xslt"
2133
              ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ p=private:xslt:graph-api:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2134
              line="173"
2135
              var="Q{}visited"
2136
              slot="2"
2137
              eval="7">
2138
            <subscript>
2139
               <varRef name="Q{}state" slot="0"/>
2140
               <int val="3"/>
2141
            </subscript>
2142
            <let var="Q{}to" slot="3" eval="4">
2143
               <lookup>
2144
                  <varRef name="Q{}neighbor" slot="1"/>
2145
                  <str val="to"/>
2146
               </lookup>
2147
               <let var="Q{}distance" slot="4" eval="4">
2148
                  <lookup>
2149
                     <varRef name="Q{}neighbor" slot="1"/>
2150
                     <str val="distance"/>
2151
                  </lookup>
2152
                  <let var="Q{}item" slot="5" eval="4">
2153
                     <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$visited">
2154
                        <treat as="F" diag="0|0||saxon:apply">
2155
                           <check card="1" diag="0|0||saxon:apply">
2156
                              <varRef name="Q{}visited" slot="2"/>
2157
                           </check>
2158
                        </treat>
2159
                        <arrayBlock>
2160
                           <varRef name="Q{}to" slot="3"/>
2161
                        </arrayBlock>
2162
                     </ifCall>
2163
                     <choose>
2164
                        <or op="or">
2165
                           <fn name="empty">
2166
                              <varRef name="Q{}item" slot="5"/>
2167
                           </fn>
2168
                           <vc op="lt"
2169
                               onEmpty="0"
2170
                               comp="GAC|http://www.w3.org/2005/xpath-functions/collation/codepoint">
2171
                              <atomSing card="?" diag="1|0||lt">
2172
                                 <varRef name="Q{}distance" slot="4"/>
2173
                              </atomSing>
2174
                              <atomSing card="?" diag="1|1||lt">
2175
                                 <lookup>
2176
                                    <varRef name="Q{}item" slot="5"/>
2177
                                    <str val="distance"/>
2178
                                 </lookup>
2179
                              </atomSing>
2180
                           </vc>
2181
                        </or>
2182
                        <sequence>
2183
                           <int val="0"/>
2184
                           <ufCall name="Q{xslt:priority-queue:2020}add" tailCall="false" bSlot="0">
2185
                              <treat as="FM" diag="0|0||q:add">
2186
                                 <check card="1" diag="0|0||q:add">
2187
                                    <subscript>
2188
                                       <varRef name="Q{}state" slot="0"/>
2189
                                       <int val="2"/>
2190
                                    </subscript>
2191
                                 </check>
2192
                              </treat>
2193
                              <check card="?" diag="0|1||q:add">
2194
                                 <varRef name="Q{}distance" slot="4"/>
2195
                              </check>
2196
                              <check card="1" diag="0|2||q:add">
2197
                                 <varRef name="Q{}to" slot="3"/>
2198
                              </check>
2199
                              <varRef name="Q{}neighbor" slot="1"/>
2200
                           </ufCall>
2201
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}put" type="1FM">
2202
                              <treat as="FM" diag="0|0||map:put">
2203
                                 <check card="1" diag="0|0||map:put">
2204
                                    <varRef name="Q{}visited" slot="2"/>
2205
                                 </check>
2206
                              </treat>
2207
                              <atomSing diag="0|1||map:put">
2208
                                 <varRef name="Q{}to" slot="3"/>
2209
                              </atomSing>
2210
                              <varRef name="Q{}neighbor" slot="1"/>
2211
                           </ifCall>
2212
                        </sequence>
2213
                        <true/>
2214
                        <varRef name="Q{}state" slot="0"/>
2215
                     </choose>
2216
                  </let>
2217
               </let>
2218
            </let>
2219
         </let>
2220
      </function>
2221
      <function name="Q{xslt:graph-api:2020}search"
2222
                line="22"
2223
                module="file:/C:/projects/git/xslt-graph/search.xslt"
2224
                eval="4"
2225
                flags="pU"
2226
                as="*FM"
2227
                slots="4">
2228
         <arg name="Q{}root" as="1"/>
2229
         <arg name="Q{}g" as="1FM"/>
2230
         <arg name="Q{}is-depth-first" as="1AB"/>
2231
         <arg name="Q{}visited" as="1FM"/>
2232
         <treat role="body"
2233
                baseUri="file:/C:/projects/git/xslt-graph/search.xslt"
2234
                ns="array=~ f=xslt:functions:2020 g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2235
                line="79"
2236
                as="FM"
2237
                diag="5|0|XTTE0780|g:search#4">
2238
            <ufCall name="Q{xslt:functions:2020}while"
2239
                    tailCall="false"
2240
                    bSlot="0"
2241
                    eval="4 16 16 16">
2242
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
2243
                  <sequence>
2244
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2245
                        <str val="queue"/>
2246
                        <arrayBlock>
2247
                           <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}merge" type="1FM">
2248
                              <sequence>
2249
                                 <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2250
                                    <str val="to"/>
2251
                                    <varRef name="Q{}root" slot="0"/>
2252
                                 </ifCall>
2253
                                 <map size="1">
2254
                                    <str val="depth"/>
2255
                                    <int val="0"/>
2256
                                 </map>
2257
                              </sequence>
2258
                              <map size="2">
2259
                                 <str val="duplicates"/>
2260
                                 <str val="reject"/>
2261
                                 <str val="duplicates-error-code"/>
2262
                                 <str val="FOJS0003"/>
2263
                              </map>
2264
                           </ifCall>
2265
                        </arrayBlock>
2266
                     </ifCall>
2267
                     <ifCall name="Q{http://www.w3.org/2005/xpath-functions/map}entry" type="1FM">
2268
                        <str val="visited"/>
2269
                        <varRef name="Q{}visited" slot="3"/>
2270
                     </ifCall>
2271
                  </sequence>
2272
                  <map size="2">
2273
                     <str val="duplicates"/>
2274
                     <str val="reject"/>
2275
                     <str val="duplicates-error-code"/>
2276
                     <str val="FOJS0003"/>
2277
                  </map>
2278
               </ifCall>
2279
               <fnCoercer to="1F r[1AB] a[*]" diag="0|1||f:while">
2280
                  <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_658909832"
2281
                         arity="1"
2282
                         bSlot="1"/>
2283
               </fnCoercer>
2284
               <fnCoercer to="1F a[*]" diag="0|2||f:while">
2285
                  <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_767904468"
2286
                         arity="1"
2287
                         bSlot="2"/>
2288
               </fnCoercer>
2289
               <partialApply>
2290
                  <fnCoercer to="1F a[*,*,1FM,1AB]" diag="0|0||saxon:call">
2291
                     <ufRef name="Q{http://ns.saxonica.com/anonymous-type}f_1424082571"
2292
                            arity="4"
2293
                            bSlot="3"/>
2294
                  </fnCoercer>
2295
                  <null/>
2296
                  <null/>
2297
                  <varRef name="Q{}g" slot="1"/>
2298
                  <varRef name="Q{}is-depth-first" slot="2"/>
2299
               </partialApply>
2300
            </ufCall>
2301
         </treat>
2302
      </function>
2303
      <function name="Q{xslt:graph-api:2020}vertices"
2304
                line="42"
2305
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2306
                eval="4"
2307
                flags="pU"
2308
                as="*"
2309
                slots="1">
2310
         <arg name="Q{}g" as="1FM"/>
2311
         <forEach role="body"
2312
                  baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2313
                  ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2314
                  line="45">
2315
            <lookup>
2316
               <varRef name="Q{}g" slot="0"/>
2317
               <str val="vertices"/>
2318
            </lookup>
2319
            <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn=".">
2320
               <treat as="F" diag="0|0||saxon:apply">
2321
                  <dot/>
2322
               </treat>
2323
               <array size="0"/>
2324
            </ifCall>
2325
         </forEach>
2326
      </function>
2327
      <function name="Q{private:xslt:priority-queue:2020}find"
2328
                line="167"
2329
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2330
                eval="16"
2331
                flags="pU"
2332
                as="1ADI"
2333
                slots="4">
2334
         <arg name="Q{}keys" as="1FM"/>
2335
         <arg name="Q{}items" as="1FA"/>
2336
         <arg name="Q{}priority" as="?"/>
2337
         <arg name="Q{}key" as="1"/>
2338
         <tailCallLoop role="body"
2339
                       baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2340
                       ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2341
                       line="174">
2342
            <ufCall name="Q{private:xslt:priority-queue:2020}find"
2343
                    tailCall="foreign"
2344
                    bSlot="0"
2345
                    eval="6 6 6 6 0 16">
2346
               <varRef name="Q{}keys" slot="0"/>
2347
               <varRef name="Q{}items" slot="1"/>
2348
               <varRef name="Q{}priority" slot="2"/>
2349
               <varRef name="Q{}key" slot="3"/>
2350
               <int val="1"/>
2351
               <ifCall name="Q{http://www.w3.org/2005/xpath-functions/array}size" type="1ADI">
2352
                  <varRef name="Q{}items" slot="1"/>
2353
               </ifCall>
2354
            </ufCall>
2355
         </tailCallLoop>
2356
      </function>
2357
      <function name="Q{xslt:graph-api:2020}vertex-edges"
2358
                line="114"
2359
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2360
                eval="4"
2361
                flags="pU"
2362
                as="*"
2363
                slots="2">
2364
         <arg name="Q{}vertex" as="1"/>
2365
         <arg name="Q{}g" as="1FM"/>
2366
         <ifCall role="body"
2367
                 baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2368
                 ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2369
                 line="118"
2370
                 name="Q{http://saxon.sf.net/}apply"
2371
                 type="*"
2372
                 dyn="$g ? &#34;vertex-edges&#34;">
2373
            <treat as="F" diag="0|0||saxon:apply">
2374
               <check card="1" diag="0|0||saxon:apply">
2375
                  <lookup>
2376
                     <varRef name="Q{}g" slot="1"/>
2377
                     <str val="vertex-edges"/>
2378
                  </lookup>
2379
               </check>
2380
            </treat>
2381
            <arrayBlock>
2382
               <varRef name="Q{}vertex" slot="0"/>
2383
            </arrayBlock>
2384
         </ifCall>
2385
      </function>
2386
      <function name="Q{xslt:graph-api:2020}vertex-value"
2387
                line="65"
2388
                module="file:/C:/projects/git/xslt-graph/graph.xslt"
2389
                eval="4"
2390
                flags="pU"
2391
                as="*"
2392
                slots="3">
2393
         <arg name="Q{}vertex" as="1"/>
2394
         <arg name="Q{}g" as="1FM"/>
2395
         <let role="body"
2396
              baseUri="file:/C:/projects/git/xslt-graph/graph.xslt"
2397
              ns="g=xslt:graph-api:2020 map=~ xs=~ xsl=~ xml=~"
2398
              line="74"
2399
              var="Q{}fn"
2400
              slot="2"
2401
              eval="4">
2402
            <lookup>
2403
               <varRef name="Q{}g" slot="1"/>
2404
               <str val="vertex-value"/>
2405
            </lookup>
2406
            <choose>
2407
               <fn name="empty">
2408
                  <varRef name="Q{}fn" slot="2"/>
2409
               </fn>
2410
               <varRef name="Q{}vertex" slot="0"/>
2411
               <true/>
2412
               <ifCall name="Q{http://saxon.sf.net/}apply" type="*" dyn="$fn">
2413
                  <treat as="F" diag="0|0||saxon:apply">
2414
                     <check card="1" diag="0|0||saxon:apply">
2415
                        <varRef name="Q{}fn" slot="2"/>
2416
                     </check>
2417
                  </treat>
2418
                  <arrayBlock>
2419
                     <varRef name="Q{}vertex" slot="0"/>
2420
                  </arrayBlock>
2421
               </ifCall>
2422
            </choose>
2423
         </let>
2424
      </function>
2425
      <function name="Q{private:xslt:priority-queue:2020}find"
2426
                line="188"
2427
                module="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2428
                eval="16"
2429
                flags="pU"
2430
                as="1ADI"
2431
                slots="10">
2432
         <arg name="Q{}keys" as="1FM"/>
2433
         <arg name="Q{}items" as="1FA"/>
2434
         <arg name="Q{}priority" as="?"/>
2435
         <arg name="Q{}key" as="1"/>
2436
         <arg name="Q{}low" as="1ADI"/>
2437
         <arg name="Q{}high" as="1ADI"/>
2438
         <tailCallLoop role="body"
2439
                       baseUri="file:/C:/projects/git/xslt-graph/priority-queue.xslt"
2440
                       ns="array=~ map=~ p=private:xslt:priority-queue:2020 q=xslt:priority-queue:2020 xs=~ xsl=~ xml=~"
2441
                       line="225">