Blocked access to external URL http://example.org/image.jpg
layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
  RenderSVGRoot {svg} at (0,0) size 800x600
    RenderSVGHiddenContainer {defs} at (0,0) size 0x0
    RenderSVGContainer {g} at (16,82) size 688x383
      RenderSVGHiddenContainer {defs} at (0,0) size 0x0
        RenderSVGRect {rect} at (0,0) size 2x2 [fill={[type=SOLID] [color=#000000]}] [x=0.00] [y=0.00] [width=1.00] [height=1.00]
        RenderSVGGradientStop {stop} [offset=0.00] [color=#000000]
        RenderSVGImage {image} at (0,0) size 2x2
        RenderSVGResourceRadialGradient {radialGradient} [id="g"] [gradientUnits=objectBoundingBox] [center=(0.50,0.50)] [focal=(0.50,0.50)] [radius=0.50] [focalRadius=0.00]
        RenderSVGText {text}
        RenderSVGText {text} at (0,-15) size 74x19 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 74x18
            chunk 1 text run 1 at (0.00,0.00) startOffset 0 endOffset 8 width 73.20: "sometext"
        RenderSVGResourceMarker {marker} [id="m"] [markerUnits=strokeWidth] [ref at (0,0)] [angle=0.00]
        RenderSVGViewportContainer {svg} at (0,0) size 0x0
        RenderSVGResourceFilter {filter} [id="f"] [filterUnits=objectBoundingBox] [primitiveUnits=userSpaceOnUse]
        RenderSVGPath {polygon} at (0,0) size 0x0 [fill={[type=SOLID] [color=#000000]}] [points=""]
      RenderSVGContainer {g} at (16,82) size 234x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,50.00)}]
        RenderSVGRect {rect} at (16,85) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 130x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 130x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 30 width 129.60: "r.x.baseVal.value == 0: PASSED"
      RenderSVGContainer {g} at (16,99) size 483x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,60.00)}]
        RenderSVGRect {rect} at (16,101) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 280x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 280x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 57 width 279.00: "r.x.baseVal.unitType == 1 (SVG_LENGTHTYPE_NUMBER): PASSED"
      RenderSVGContainer {g} at (16,116) size 385x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,70.00)}]
        RenderSVGRect {rect} at (16,118) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 221x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 221x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 52 width 220.20: "v.width.baseVal.valueInSpecifiedUnits == 100: PASSED"
      RenderSVGContainer {g} at (16,132) size 550x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,80.00)}]
        RenderSVGRect {rect} at (16,135) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 320x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 320x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 65 width 319.20: "v.width.baseVal.unitType == 2 (SVG_LENGTHTYPE_PERCENTAGE): PASSED"
      RenderSVGContainer {g} at (16,149) size 472x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,90.00)}]
        RenderSVGRect {rect} at (16,151) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 273x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 273x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 65 width 272.40: "tt.textLength.baseVal.value == tt.getComputedTextLength(): PASSED"
      RenderSVGContainer {g} at (16,166) size 226x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,100.00)}]
        RenderSVGRect {rect} at (16,168) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 125x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 125x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 29 width 124.80: "s.offset.baseVal == 0: PASSED"
      RenderSVGContainer {g} at (16,182) size 308x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,110.00)}]
        RenderSVGRect {rect} at (16,185) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 175x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 175x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 40 width 174.00: "c.preserveAlpha.baseVal == false: PASSED"
      RenderSVGContainer {g} at (16,199) size 267x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,120.00)}]
        RenderSVGRect {rect} at (16,201) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 150x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 150x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 33 width 149.40: "c.className.baseVal == \"\": PASSED"
      RenderSVGContainer {g} at (16,216) size 212x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,130.00)}]
        RenderSVGRect {rect} at (16,218) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 117x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 117x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 28 width 116.40: "i.href.baseVal == \"\": PASSED"
      RenderSVGContainer {g} at (16,232) size 346x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,140.00)}]
        RenderSVGRect {rect} at (16,235) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 197x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 197x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 45 width 196.80: "i.requiredFeatures.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (16,249) size 378x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,150.00)}]
        RenderSVGRect {rect} at (16,251) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 216x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 216x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 49 width 216.00: "c.kernelMatrix.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (16,266) size 301x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,160.00)}]
        RenderSVGRect {rect} at (16,268) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 170x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 170x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 38 width 169.80: "t.x.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (16,282) size 279x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,170.00)}]
        RenderSVGRect {rect} at (16,285) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 157x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 157x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 35 width 156.60: "p.points.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (16,299) size 594x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,180.00)}]
        RenderSVGRect {rect} at (16,301) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 346x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 346x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 70 width 345.60: "g.gradientUnits.baseVal == 2 (SVG_UNIT_TYPE_OBJECTBOUNDINGBOX): PASSED"
      RenderSVGContainer {g} at (16,316) size 234x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,190.00)}]
        RenderSVGRect {rect} at (16,318) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 130x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 130x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 29 width 129.60: "c.orderX.baseVal == 0: PASSED"
      RenderSVGContainer {g} at (16,332) size 307x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,200.00)}]
        RenderSVGRect {rect} at (16,335) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 174x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 174x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 40 width 173.40: "m.orientAngle.baseVal.value == 0: PASSED"
      RenderSVGContainer {g} at (16,349) size 581x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,210.00)}]
        RenderSVGRect {rect} at (16,351) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 338x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 338x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 71 width 337.80: "m.orientAngle.baseVal.unitType == 1 (SVG_ANGLETYPE_UNSPECIFIED): PASSED"
      RenderSVGContainer {g} at (16,366) size 359x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,220.00)}]
        RenderSVGRect {rect} at (16,368) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 205x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 205x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 49 width 204.60: "v.viewBox.baseVal.[x,y,width,height] == 0: PASSED"
      RenderSVGContainer {g} at (16,382) size 356x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,230.00)}]
        RenderSVGRect {rect} at (16,385) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 203x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 203x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 46 width 202.80: "t.transform.baseVal.numberOfItems == 0: PASSED"
      RenderSVGContainer {g} at (16,399) size 688x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,240.00)}]
        RenderSVGRect {rect} at (16,401) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 402x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 402x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 83 width 402.00: "v.preserveAspectRatio.baseVal.align == 6 (SVG_PRESERVEASPECTRATIO_XMIDYMID): PASSED"
      RenderSVGContainer {g} at (16,416) size 626x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,250.00)}]
        RenderSVGRect {rect} at (16,418) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 365x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 365x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 77 width 364.80: "v.preserveAspectRatio.baseVal.meetOrSlice == 1 (SVG_MEETORSLICE_MEET): PASSED"
      RenderSVGContainer {g} at (16,432) size 462x17 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,260.00)}]
        RenderSVGRect {rect} at (16,435) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 267x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 267x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 50 width 266.40: "v.zoomAndPan == 2 (SVG_ZOOMANDPAN_MAGNIFY): PASSED"
      RenderSVGContainer {g} at (16,449) size 160x16 [transform={m=((1.00,0.00)(0.00,1.00)) t=(10.00,270.00)}]
        RenderSVGRect {rect} at (16,451) size 9x9 [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=1.00] [width=5.00] [height=5.00]
        RenderSVGText {text} at (10,-1) size 86x10 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 86x9
            chunk 1 text run 1 at (10.00,7.00) startOffset 0 endOffset 19 width 85.20: "Test status: PASSED"
    RenderSVGContainer {g} at (16,524) size 380x54
      RenderSVGText {text} at (10,314) size 228x33 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 228x32
          chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 227.40: "$Revision: 1.9 $"
    RenderSVGRect {rect} at (0,0) size 800x600 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
    RenderSVGContainer {g} at (0,0) size 800x38
      RenderSVGRect {rect} at (0,0) size 800x36 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#FF0000]}] [x=1.00] [y=1.00] [width=478.00] [height=20.00]
      RenderSVGText {text} at (207,2) size 66x20 contains 1 chunk(s)
        RenderSVGInlineText {#text} at (0,0) size 66x20
          chunk 1 (middle anchor) text run 1 at (207.00,18.00) startOffset 0 endOffset 5 width 66.00: "DRAFT"
