layer at (0,0) size 480x360
  RenderView at (0,0) size 480x360
layer at (0,0) size 480x360
  RenderSVGRoot {svg} at (0,0) size 480x360
    RenderSVGText {text} at (10,304) size 264x45 contains 1 chunk(s)
      RenderSVGInlineText {#text} at (0,0) size 264x45
        chunk 1 text run 1 at (10.00,340.00) startOffset 0 endOffset 16 width 264.00: "$Revision: 1.5 $"
    RenderSVGRect {rect} at (0,0) size 480x360 [stroke={[type=SOLID] [color=#000000]}] [x=1.00] [y=1.00] [width=478.00] [height=358.00]
    RenderSVGText {text} at (226,12) size 28x22 contains 1 chunk(s)
      RenderSVGInlineText {#text} at (0,0) size 27x22
        chunk 1 (middle anchor) text run 1 at (226.50,30.00) startOffset 0 endOffset 3 width 27.00: "dur"
    RenderSVGContainer {g} at (116,93) size 229x165 [transform={m=((1.00,0.00)(0.00,1.00)) t=(100.00,100.00)}]
      RenderSVGContainer {g} at (116,113) size 64x145 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,25.00)}]
        RenderSVGText {text} at (-64,-12) size 64x15 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 64x15
            chunk 1 (end anchor) text run 1 at (-64.00,0.00) startOffset 0 endOffset 11 width 64.00: "clock value"
        RenderSVGText {text} at (-54,53) size 54x15 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 54x15
            chunk 1 (end anchor) text run 1 at (-54.00,65.00) startOffset 0 endOffset 10 width 54.00: "indefinite"
        RenderSVGText {text} at (-34,118) size 34x15 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 34x15
            chunk 1 (end anchor) text run 1 at (-34.00,130.00) startOffset 0 endOffset 5 width 34.00: "media"
      RenderSVGContainer {g} at (234,93) size 111x145 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,5.00)}]
        RenderSVGText {text} at (-12,-12) size 24x15 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 24x15
            chunk 1 (middle anchor) text run 1 at (-12.00,0.00) startOffset 0 endOffset 4 width 24.00: "> 2s"
        RenderSVGText {text} at (65,-12) size 30x15 contains 1 chunk(s)
          RenderSVGInlineText {#text} at (0,0) size 29x15
            chunk 1 (middle anchor) text run 1 at (65.50,0.00) startOffset 0 endOffset 5 width 29.00: "0s-2s"
        RenderSVGContainer {g} at (234,158) size 108x15 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,65.00)}]
          RenderSVGText {text} at (-16,-12) size 32x15 contains 1 chunk(s)
            RenderSVGInlineText {#text} at (0,0) size 31x15
              chunk 1 (middle anchor) text run 1 at (-15.50,0.00) startOffset 0 endOffset 5 width 31.00: "never"
          RenderSVGText {text} at (68,-12) size 24x15 contains 1 chunk(s)
            RenderSVGInlineText {#text} at (0,0) size 24x15
              chunk 1 (middle anchor) text run 1 at (68.00,0.00) startOffset 0 endOffset 4 width 24.00: "> 0s"
        RenderSVGContainer {g} at (234,223) size 108x15 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,130.00)}]
          RenderSVGText {text} at (-16,-12) size 32x15 contains 1 chunk(s)
            RenderSVGInlineText {#text} at (0,0) size 31x15
              chunk 1 (middle anchor) text run 1 at (-15.50,0.00) startOffset 0 endOffset 5 width 31.00: "never"
          RenderSVGText {text} at (68,-12) size 24x15 contains 1 chunk(s)
            RenderSVGInlineText {#text} at (0,0) size 24x15
              chunk 1 (middle anchor) text run 1 at (68.00,0.00) startOffset 0 endOffset 4 width 24.00: "> 0s"
      RenderSVGContainer {g} at (243,113) size 94x144 [transform={m=((1.00,0.00)(0.00,1.00)) t=(150.00,20.00)}]
        RenderSVGHiddenContainer {defs} at (0,0) size 0x0
          RenderSVGRect {rect} at (243,113) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
        RenderSVGContainer {g} at (243,113) size 94x14
          RenderSVGContainer {use} at (243,113) size 14x14
            RenderSVGRect {rect} at (243,113) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGContainer {use} at (323,113) size 14x14 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
            RenderSVGRect {rect} at (323,113) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGRect {rect} at (323,113) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CC0066]}] [x=74.00] [y=-6.00] [width=12.00] [height=12.00]
        RenderSVGContainer {g} at (243,178) size 94x14 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,65.00)}]
          RenderSVGContainer {use} at (243,178) size 14x14
            RenderSVGRect {rect} at (243,178) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGContainer {use} at (323,178) size 14x14 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
            RenderSVGRect {rect} at (323,178) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGRect {rect} at (323,178) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CC0066]}] [x=74.00] [y=-6.00] [width=12.00] [height=12.00]
        RenderSVGContainer {g} at (243,243) size 94x14 [transform={m=((1.00,0.00)(0.00,1.00)) t=(0.00,130.00)}]
          RenderSVGContainer {use} at (243,243) size 14x14
            RenderSVGRect {rect} at (243,243) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGContainer {use} at (323,243) size 14x14 [transform={m=((1.00,0.00)(0.00,1.00)) t=(80.00,0.00)}]
            RenderSVGRect {rect} at (323,243) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CCCCCC]}] [x=-6.00] [y=-6.00] [width=12.00] [height=12.00]
          RenderSVGRect {rect} at (323,243) size 14x14 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#CC0066]}] [x=74.00] [y=-6.00] [width=12.00] [height=12.00]
