|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
40
 | 
 0  | 
 248  | 
 if @_ < 1  | 
 
| 
 | 
 0  | 
 248  | 
 if @_ > 1  | 
 
| 
49
 | 
 0  | 
 1  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 1  | 
 if @_ > 2  | 
 
| 
53
 | 
 0  | 
 4  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 4  | 
 if @_ > 2  | 
 
| 
57
 | 
 0  | 
 4  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 4  | 
 if @_ > 2  | 
 
| 
61
 | 
 0  | 
 13  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 13  | 
 if @_ > 2  | 
 
| 
62
 | 
 11  | 
 2  | 
 if ($p1->{'type'} eq ":AT-P-IMMEDIATE")  | 
 
| 
63
 | 
 2  | 
 9  | 
 if ($p2->{'type'} eq ":AT-P-IMMEDIATE")  | 
 
| 
64
 | 
 2  | 
 0  | 
 length $p1->{'value'} <= length $p2->{'value'} ? :  | 
 
| 
68
 | 
 1  | 
 1  | 
 if ($p2->{'type'} eq ":AT-P-IMMEDIATE")  | 
 
| 
71
 | 
 0  | 
 1  | 
 unless $p1->{'type'} eq ":AT-P-VARIABLE" and $p2->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
76
 | 
 0  | 
 4  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 4  | 
 if @_ > 2  | 
 
| 
77
 | 
 0  | 
 4  | 
 unless $t1->{'type'} eq ":AT-P-TRANSFORM" and $t2->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
83
 | 
 0  | 
 8  | 
 if @_ < 1  | 
 
| 
 | 
 0  | 
 8  | 
 if @_ > 1  | 
 
| 
89
 | 
 0  | 
 14  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 14  | 
 if @_ > 2  | 
 
| 
90
 | 
 0  | 
 14  | 
 if ($p1->{'type'} eq ":AT-P-FRAGMENT")  | 
 
| 
91
 | 
 0  | 
 0  | 
 if ($p2->{'type'} eq ":AT-P-FRAGMENT" or $p2->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
94
 | 
 0  | 
 0  | 
 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE" or $p2->{'type'} eq ":AT-P-VARHTML"  | 
 
| 
99
 | 
 2  | 
 12  | 
 if ($p2->{'type'} eq ":AT-P-FRAGMENT")  | 
 
| 
100
 | 
 2  | 
 0  | 
 if ($p1->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
103
 | 
 0  | 
 0  | 
 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE" or $p1->{'type'} eq ":AT-P-VARHTML"  | 
 
| 
108
 | 
 0  | 
 12  | 
 if ($p1->{'type'} eq ":AT-P-VARHTML")  | 
 
| 
109
 | 
 0  | 
 0  | 
 if ($p2->{'type'} eq ":AT-P-VARHTML" or $p2->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
112
 | 
 0  | 
 0  | 
 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
116
 | 
 0  | 
 12  | 
 if ($p2->{'type'} eq ":AT-P-VARHTML")  | 
 
| 
117
 | 
 0  | 
 0  | 
 if ($p1->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
120
 | 
 0  | 
 0  | 
 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
125
 | 
 4  | 
 8  | 
 if ($p1->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
126
 | 
 4  | 
 0  | 
 if ($p2->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
129
 | 
 0  | 
 0  | 
 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
134
 | 
 0  | 
 8  | 
 if ($p2->{'type'} eq ":AT-P-TRANSFORM")  | 
 
| 
135
 | 
 0  | 
 0  | 
 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
143
 | 
 0  | 
 75  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 75  | 
 if @_ > 2  | 
 
| 
144
 | 
 58  | 
 17  | 
 unless defined $p2  | 
 
| 
145
 | 
 3  | 
 14  | 
 unless defined $p1  | 
 
| 
149
 | 
 0  | 
 35  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 35  | 
 if @_ > 2  | 
 
| 
150
 | 
 20  | 
 15  | 
 if $aa1->{'type'} eq ":AT-A-REMOVE-ATTR"  | 
 
| 
151
 | 
 0  | 
 15  | 
 if $aa2->{'type'} eq ":AT-A-REMOVE-ATTR"  | 
 
| 
152
 | 
 15  | 
 0  | 
 if ($aa1->{'type'} eq ":AT-A-SET-ATTR")  | 
 
| 
153
 | 
 5  | 
 10  | 
 if ($aa2->{'type'} eq ":AT-A-SET-ATTR")  | 
 
| 
156
 | 
 0  | 
 10  | 
 unless $aa2->{'type'} eq ":AT-A-MODIFY-ATTR"  | 
 
| 
160
 | 
 0  | 
 0  | 
 if ($aa2->{'type'} eq ":AT-A-SET-ATTR")  | 
 
| 
161
 | 
 0  | 
 0  | 
 unless $aa1->{'type'} eq ":AT-A-MODIFY-ATTR"  | 
 
| 
165
 | 
 0  | 
 0  | 
 unless $aa1->{'type'} eq ":AT-A-MODIFY-ATTR" and $aa2->{'type'} eq ":AT-A-MODIFY-ATTR"  | 
 
| 
170
 | 
 0  | 
 75  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 75  | 
 if @_ > 2  | 
 
| 
171
 | 
 15  | 
 60  | 
 if ($asa1->{'type'} eq ":AT-AS-REPLACE-ATTRS")  | 
 
| 
172
 | 
 15  | 
 0  | 
 if ($asa2->{'type'} eq ":AT-AS-REPLACE-ATTRS")  | 
 
| 
176
 | 
 2  | 
 0  | 
 keys %{$$asa1{'content'};} <= keys %{$$asa2{'content'};} ? :  | 
 
| 
 | 
 3  | 
 2  | 
 &all(sub {
	$_->{'type'} eq ':AT-P-IMMEDIATE';
}
, values %{$$asa2{'content'};}) ? :  | 
 
| 
 | 
 10  | 
 5  | 
 &all(sub {
	$_->{'type'} eq ':AT-P-IMMEDIATE';
}
, values %{$$asa1{'content'};}) ? :  | 
 
| 
179
 | 
 0  | 
 0  | 
 unless $asa2->{'type'} eq ":AT-AS-MODIFY-ATTRS"  | 
 
| 
183
 | 
 0  | 
 60  | 
 if ($asa2->{'type'} eq ":AT-AS-REPLACE-ATTRS")  | 
 
| 
184
 | 
 0  | 
 0  | 
 unless $asa1->{'type'} eq ":AT-AS-MODIFY-ATTRS"  | 
 
| 
188
 | 
 0  | 
 60  | 
 unless $asa1->{'type'} eq ":AT-AS-MODIFY-ATTRS" and $asa2->{'type'} eq ":AT-AS-MODIFY-ATTRS"  | 
 
| 
193
 | 
 35  | 
 8  | 
 exists $content{$k} ? :  | 
 
| 
198
 | 
 0  | 
 0  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 0  | 
 if @_ > 2  | 
 
| 
199
 | 
 0  | 
 0  | 
 defined $act1 && defined $act2 ? :  | 
 
| 
204
 | 
 0  | 
 75  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 75  | 
 if @_ > 2  | 
 
| 
205
 | 
 0  | 
 75  | 
 if ($act1->{'type'} eq ":AT-REMOVE-IF")  | 
 
| 
206
 | 
 0  | 
 0  | 
 if ($act2->{'type'} eq ":AT-REMOVE-IF")  | 
 
| 
211
 | 
 0  | 
 75  | 
 if ($act2->{'type'} eq ":AT-REMOVE-IF")  | 
 
| 
214
 | 
 0  | 
 75  | 
 if ($act1->{'type'} eq ":AT-REPLACE-OUTER")  | 
 
| 
215
 | 
 0  | 
 0  | 
 if ($act2->{'type'} eq ":AT-REPLACE-OUTER")  | 
 
| 
220
 | 
 0  | 
 75  | 
 if ($act2->{'type'} eq ":AT-REPLACE-OUTER")  | 
 
| 
223
 | 
 0  | 
 75  | 
 if ($act1->{'type'} eq ":AT-REPEAT-OUTER")  | 
 
| 
226
 | 
 0  | 
 75  | 
 if ($act2->{'type'} eq ":AT-REPEAT-OUTER")  | 
 
| 
229
 | 
 0  | 
 75  | 
 unless $act1->{'type'} eq ":AT-REPLACE-INNER" and $act2->{'type'} eq ":AT-REPLACE-INNER"  | 
 
| 
243
 | 
 0  | 
 261  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 261  | 
 if @_ > 2  | 
 
| 
244
 | 
 5  | 
 256  | 
 if ($action->{'type'} eq ':AT-REMOVE-IF') { }  | 
 
| 
 | 
 7  | 
 249  | 
 elsif ($action->{'type'} eq ':AT-REPLACE-OUTER') { }  | 
 
| 
 | 
 1  | 
 248  | 
 elsif ($action->{'type'} eq ':AT-REPEAT-OUTER') { }  | 
 
| 
252
 | 
 2  | 
 5  | 
 if ($param->{'type'} eq ':AT-P-VARIABLE' or $param->{'type'} eq ':AT-P-VARHTML') { }  | 
 
| 
 | 
 2  | 
 3  | 
 elsif ($param->{'type'} eq ':AT-P-TRANSFORM') { }  | 
 
| 
254
 | 
 2  | 
 0  | 
 unless (defined $value->[0])  | 
 
| 
258
 | 
 1  | 
 1  | 
 if (@{$param->{'dynamic'};})  | 
 
| 
263
 | 
 1  | 
 0  | 
 unless (defined $action->{'var'}[0])  | 
 
| 
267
 | 
 0  | 
 248  | 
 unless $action->{'type'} eq ":AT-REPLACE-INNER"  | 
 
| 
271
 | 
 0  | 
 30  | 
 if @_ < 1  | 
 
| 
 | 
 0  | 
 30  | 
 if @_ > 1  | 
 
| 
272
 | 
 0  | 
 30  | 
 defined $var->[0] ? :  | 
 
| 
280
 | 
 6  | 
 242  | 
 if ($asa->{'type'} eq ':AT-AS-REPLACE-ATTRS') { }  | 
 
| 
286
 | 
 3  | 
 9  | 
 if ($value->{'type'} eq ':AT-P-VARIABLE' and not defined $value->{'value'}[0]) { }  | 
 
| 
294
 | 
 0  | 
 242  | 
 unless $asa->{'type'} eq ":AT-AS-MODIFY-ATTRS"  | 
 
| 
301
 | 
 7  | 
 36  | 
 if ($value->{'type'} eq ':AT-A-SET-ATTR' and $value->{'param'}{'type'} eq ':AT-P-VARIABLE' and not defined $value->{'param'}{'value'}[0]) { }  | 
 
| 
 | 
 5  | 
 31  | 
 elsif ($value->{'type'} eq ':AT-A-MODIFY-ATTR' and @{+(my $param = $value->{'param'})->{'dynamic'}}) { }  | 
 
| 
305
 | 
 0  | 
 5  | 
 unless $param->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
323
 | 
 201  | 
 47  | 
 if (defined(my $param = $action->{'content'}))  | 
 
| 
324
 | 
 35  | 
 166  | 
 if ($param->{'type'} eq ':AT-P-VARIABLE' || $param->{'type'} eq ':AT-P-VARHTML' and not defined $param->{'value'}[0]) { }  | 
 
| 
 | 
 23  | 
 143  | 
 elsif ($param->{'type'} eq ':AT-P-TRANSFORM' and @{$param->{'dynamic'};}) { }  | 
 
| 
340
 | 
 2  | 
 246  | 
 if (@{$replacement{"repeat"};} = @{$action->{'repeat'};})  | 
 
| 
342
 | 
 2  | 
 0  | 
 unless (defined $$rfirst->{'var'}[0])  | 
 
| 
348
 | 
 74  | 
 174  | 
 if $did_replace  | 
 
| 
353
 | 
 0  | 
 244  | 
 if @_ < 3  | 
 
| 
360
 | 
 0  | 
 237  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 237  | 
 if @_ > 2 and (@_ - 2) % 2  | 
 
| 
 | 
 0  | 
 237  | 
 if keys %{__rest}  | 
 
| 
365
 | 
 252  | 
 268  | 
 if ($token->{'type'} eq ':TT-TAG-CLOSE') { }  | 
 
| 
 | 
 30  | 
 238  | 
 elsif ($token->{'type'} eq ':TT-TAG-OPEN') { }  | 
 
| 
 | 
 49  | 
 378  | 
 elsif ($collect_content and $token->{'type'} eq ':TT-TEXT') { }  | 
 
| 
366
 | 
 237  | 
 15  | 
 if $depth == 0  | 
 
| 
369
 | 
 15  | 
 15  | 
 unless $token->{'is_self_closing'}  | 
 
| 
374
 | 
 49  | 
 188  | 
 $collect_content ? :  | 
 
| 
377
 | 
 0  | 
 260  | 
 if @_ < 2  | 
 
| 
 | 
 0  | 
 260  | 
 if @_ > 2  | 
 
| 
381
 | 
 0  | 
 273  | 
 if @_ < 3  | 
 
| 
 | 
 0  | 
 273  | 
 if @_ > 3  | 
 
| 
390
 | 
 9  | 
 4802  | 
 if ($token->{'type'} eq ':TT-DOCTYPE') { }  | 
 
| 
 | 
 38  | 
 4764  | 
 elsif ($token->{'type'} eq ':TT-COMMENT') { }  | 
 
| 
 | 
 2151  | 
 2613  | 
 elsif ($token->{'type'} eq ':TT-TEXT') { }  | 
 
| 
 | 
 1086  | 
 1527  | 
 elsif ($token->{'type'} eq ':TT-TAG-CLOSE') { }  | 
 
| 
 | 
 1527  | 
 0  | 
 elsif ($token->{'type'} eq ':TT-TAG-OPEN') { }  | 
 
| 
391
 | 
 8  | 
 1  | 
 if ($self->{'keep_doctype'})  | 
 
| 
395
 | 
 30  | 
 8  | 
 if ($token->{'content'} =~ /$self->{'keep_comments_re'}/u)  | 
 
| 
399
 | 
 3  | 
 2148  | 
 if ($token->{'content'} =~ /$self->{'dummy_marker_re'}/u)  | 
 
| 
403
 | 
 28  | 
 2120  | 
 if ($cur_tag eq 'script') { }  | 
 
| 
 | 
 66  | 
 2054  | 
 elsif ($cur_tag eq 'style') { }  | 
 
| 
416
 | 
 5  | 
 1522  | 
 if (defined $action and $action->{'type'} eq ":AT-REMOVE-IF")  | 
 
| 
422
 | 
 0  | 
 5  | 
 if @_ > 1  | 
 
| 
 | 
 1  | 
 4  | 
 if @_ < 1  | 
 
| 
428
 | 
 1177  | 
 350  | 
 unless (defined $action)  | 
 
| 
431
 | 
 1  | 
 1176  | 
 if (@bad_attrs)  | 
 
| 
435
 | 
 133  | 
 1043  | 
 if $token->{'is_self_closing'}  | 
 
| 
439
 | 
 7  | 
 343  | 
 if ($action->{'type'} eq ":AT-REPLACE-OUTER")  | 
 
| 
442
 | 
 2  | 
 5  | 
 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }  | 
 
| 
 | 
 1  | 
 4  | 
 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }  | 
 
| 
 | 
 1  | 
 3  | 
 elsif ($param->{'type'} eq ':AT-P-FRAGMENT') { }  | 
 
| 
 | 
 1  | 
 2  | 
 elsif ($param->{'type'} eq ':AT-P-VARHTML') { }  | 
 
| 
451
 | 
 0  | 
 2  | 
 unless $param->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
453
 | 
 2  | 
 0  | 
 unless ($token->{'is_void'})  | 
 
| 
454
 | 
 0  | 
 2  | 
 $token->{'is_self_closing'} ? :  | 
 
| 
457
 | 
 1  | 
 1  | 
 if (@{$param->{'dynamic'};}) { }  | 
 
| 
465
 | 
 5  | 
 0  | 
 unless $skipped or $token->{'is_self_closing'}  | 
 
| 
482
 | 
 1  | 
 0  | 
 defined $inplace ? :  | 
 
| 
486
 | 
 0  | 
 1  | 
 if @_ > 1  | 
 
| 
 | 
 0  | 
 1  | 
 if @_ < 1  | 
 
| 
492
 | 
 0  | 
 343  | 
 unless $action->{'type'} eq ":AT-REPLACE-INNER"  | 
 
| 
498
 | 
 16  | 
 327  | 
 if ($attrset->{'type'} eq ':AT-AS-REPLACE-ATTRS') { }  | 
 
| 
502
 | 
 33  | 
 4  | 
 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }  | 
 
| 
505
 | 
 0  | 
 4  | 
 unless $param->{'type'} eq ":AT-P-VARIABLE"  | 
 
| 
511
 | 
 0  | 
 327  | 
 unless $attrset->{'type'} eq ":AT-AS-MODIFY-ATTRS"  | 
 
| 
526
 | 
 14  | 
 84  | 
 if ($attr_action->{'type'} eq ':AT-A-REMOVE-ATTR') { }  | 
 
| 
 | 
 38  | 
 46  | 
 elsif ($attr_action->{'type'} eq ':AT-A-SET-ATTR') { }  | 
 
| 
531
 | 
 0  | 
 46  | 
 unless $attr_action->{'type'} eq ":AT-A-MODIFY-ATTR"  | 
 
| 
534
 | 
 0  | 
 46  | 
 unless $param->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
537
 | 
 5  | 
 41  | 
 if (@{$param->{'dynamic'};}) { }  | 
 
| 
 | 
 6  | 
 35  | 
 elsif (not defined $value) { }  | 
 
| 
550
 | 
 324  | 
 15  | 
 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }  | 
 
| 
 | 
 10  | 
 5  | 
 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }  | 
 
| 
551
 | 
 0  | 
 324  | 
 if ($param->{'pristine'} and $param->{'value'} =~ /$self->{'dummy_marker_re'}/u)  | 
 
| 
558
 | 
 0  | 
 5  | 
 unless $param->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
564
 | 
 0  | 
 327  | 
 if @bad_attrs  | 
 
| 
582
 | 
 241  | 
 102  | 
 if (defined(my $param = $action->{'content'})) { }  | 
 
| 
 | 
 42  | 
 60  | 
 elsif ($token->{'is_self_closing'}) { }  | 
 
| 
584
 | 
 0  | 
 241  | 
 if $token->{'is_void'}  | 
 
| 
587
 | 
 153  | 
 88  | 
 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }  | 
 
| 
 | 
 30  | 
 58  | 
 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }  | 
 
| 
 | 
 7  | 
 51  | 
 elsif ($param->{'type'} eq ':AT-P-FRAGMENT') { }  | 
 
| 
 | 
 4  | 
 47  | 
 elsif ($param->{'type'} eq ':AT-P-VARHTML') { }  | 
 
| 
588
 | 
 20  | 
 133  | 
 if ($token->{'name'} eq 'script') { }  | 
 
| 
 | 
 1  | 
 132  | 
 elsif ($token->{'name'} eq 'style') { }  | 
 
| 
596
 | 
 18  | 
 12  | 
 if ($token->{'name'} eq 'script') { }  | 
 
| 
 | 
 1  | 
 11  | 
 elsif ($token->{'name'} eq 'style') { }  | 
 
| 
604
 | 
 2  | 
 4  | 
 if $token->{'name'} eq "script" or $token->{'name'} eq "style" or $token->{'name'} eq "title"  | 
 
| 
608
 | 
 2  | 
 1  | 
 if $token->{'name'} eq "script" or $token->{'name'} eq "style" or $token->{'name'} eq "title"  | 
 
| 
612
 | 
 0  | 
 47  | 
 unless $param->{'type'} eq ":AT-P-TRANSFORM"  | 
 
| 
614
 | 
 0  | 
 47  | 
 $token->{'is_self_closing'} ? :  | 
 
| 
617
 | 
 25  | 
 22  | 
 if (@{$param->{'dynamic'};}) { }  | 
 
| 
618
 | 
 18  | 
 7  | 
 if ($token->{'name'} eq 'script') { }  | 
 
| 
 | 
 1  | 
 6  | 
 elsif ($token->{'name'} eq 'style') { }  | 
 
| 
626
 | 
 18  | 
 4  | 
 if ($token->{'name'} eq 'script') { }  | 
 
| 
 | 
 1  | 
 3  | 
 elsif ($token->{'name'} eq 'style') { }  | 
 
| 
636
 | 
 183  | 
 0  | 
 unless $skipped or $token->{'is_self_closing'}  | 
 
| 
641
 | 
 0  | 
 42  | 
 unless $token->{'is_void'}  |