{* 8 levchar 2 widel 80 wides *}

{= 03FFF80 stack =}
  
!~ {}protectc

   {{ inplen level leves wordl word 128 .befch }}
   {{ input 0FFFFF output 0FFFFF }}
  
~pute ( .befch
   .+>32 32 :
   ! 13 : 10 : D0 ) ;
~putc (AC BD+1
   B+<#wides : .:befch ++D
   ? @pute
    .+>=32 : .:befch ++D
    !
   ! )CA ;
~putcl (AC C#widel
   C+>0 32
    [ @putc
    ]-
   ! )CA ;
~plev 32 @putc @putcl --C
   C>0
    [ #levchar @putc 32 @putcl
    ]-
   ! ;
~putl (AC level
   >0 level >>1 :C @plev
   ! )CA ;
~nullev level,0
~putlev @pute @putl ;
~putn (AC level +2 :level
   >0 level >>1 :C @plev level -2 :level
   ! )CA ;
~putnel @pute @putn ;
~addlev (AC ++level ++level @putlev )CA ;
~subl level
   >0 --level --level
   ! ;
~sublev (AC @subl @putlev )CA ;
~getsm .'( : .'"
~getsl
   [ : .
    .<>'"
     F+< P
    ]
   ! : 32 : ;
~cortop (AF FT --F --F .
   .=32 .
    .=32 --T
    !
   ! )FA ;
~getw @cortop (CT T#word
   `( .='" @getsm !~ ! <<. !
   .='" @getsl
   ?
    .=': : .
     .='" @getsl
     ?
      .+<=32 32 --F
      ? --F .
      !
     !
    !
    [ : .
     .+>32
      F+< P
     ]
    !
    .=32 :
    ? 32 : --F
    !
   !
   ~! ( T -#word :wordl ) )TC ;
~gets
   .<>'! @getw
   ? .
    .+<='! @cortop @putlev (T T#word 02021   :: 2 :wordl )T --F ;
    ! --F --F . @getw
   ! ;
~iflet
   .+>='a
    .+<='z ?A
    !
   ! ;
~cadlev
   .<>':
    .<>'*
     .<>'<
      .<>'}
       .<>'-
        .<>'+ @addlev
        !
       !
      !
     !
    !
   ! ;
~tesc .
   .<>'] (AF F+wordl F-4 .
    .<>'] @addlev
    ! )FA
   ! ;
~tescnd .
   `< @cadlev
   ?
    `> @cadlev
    !
   ! ;
~tescnp
   `< @cadlev
   ?
    `= @cadlev
    ?
     `>
      .<>'> @cadlev
      !
     ?
      .='+ @addlev
      !
     !
    !
   ! ;
~tesr .
   `.
   !
   `<
    `> @cadlev
    ? @cadlev
    !
   ?
    `= @cadlev
    ?
     `>
      .<>'> @cadlev
      !
     ?
      .='+ @tescnd
      ?
       .='] @putlev level-2
       !
      !
     !
    !
   ! ;
~tesw .
   `( .='" :=level,0 ! <<. !
   .='" @pute :=level,0
   ?
    `= @cadlev
    ?
     `< @cadlev
     ?
      `> @cadlev
      ?
       .='+ @tescnd
       ?
        .='! @putlev
        ?
         `?
          .+<=32 @putlev
          !
         !
        !
       !
      !
     !
    !
   ! ;
~beflev (F .
   `~
    .='! @putlev
    ?
     .='? @putlev
     ?
      .='] @sublev
      ? @pute :=level,0
      !
     !
    !
   .?
    `:
     .='] @sublev
     !
    .?
     .='. @tesw
     .?
      .='` @addlev
      .?
       .='+ @tescnd
       .?
        `{
         .='# @putlev
         ?
          .+>='a
           .+<='z @nullev
           !
          !
         !
        .?
         `( .='" @putnel ! <<. !
         .='" @putnel
         .?
          `?
           .='~ addlev
           ?
            .='$ addlev
            ?
             .='` addlev
             ?
              .+<=32 @putlev
              !
             !
            !
           !
          .?
           `]
            .='- @putlev
            ?
             .<>'} @sublev
             !
            !
           .?
            `= @cadlev
            ?
             `<
              .<>'.
               `>
               !
               `=
               ! @cadlev
              !
             ?
              `>
               .<>'>
                `=
                ! @cadlev
               !
              ?
               .='[ @tesc
               ?
                `!
                 .='~ @addlev
                 ?
                  .+>32 @tescnp
                  !
                 !
                ?
                 .+>='A
                  .+<='Z @tesr
                  !
                 !
                !
               !
              !
             !
            !
           .!
          .!
         .!
        .!
       .!
      .!
     .!
    .!
   .! )F ;
~prdlev (AF F+C --F --F --F . @iflet
   != .
    .='( @nullev
    ?
     .=': @nullev
     !
    !
   ! )FA ;
~prelev (AF F+C --F --F .
   .=':
    C+>3 @nullev
    !
   ! )FA ;
~follev (AF --F --F .
   .=':
   ! )FA ;
~aftlev (F F#word .
   `]
    .<>'} @subl
    ? @putlev
    !
   .?
    `[
     .<>'] @subl
     !
    .?
     `.
      .='! @subl
      !
     .?
      `~
       .='! @subl
       ?
        .='] @subl
        !
       !
      .?
       `!
        .+<='! @subl
        !
       .?
        `}
         .='} @putlev
         !
        ?
         `=
          .='} @putlev
          !
         ?
          `|
           .='} @putlev
           !
          ?
           `*
            .='} @putlev
            !
           ?
            `<
             .='} @putlev
             !
            ?
             `>
              .='} @putlev
              !
             ?
              `-
               .='} @putlev
               !
              ?
               `+
                .='} @putlev
                !
               ?
                `)
                 .='} @putlev
                 !
                !
               !
              !
             !
            !
           !
          !
         !
        !
       .!
      .!
     .!
    .!
   .! )F ;
~putlew (CF F#word C,wordl @prdlev @prelev @beflev D+C
   [ . :
   ]- @follev @aftlev )FC ;

~main 1 input#readp :inplen F#input T#output PF+inplen
   0 :D :level :leves
   [
    F+< P .
     .+>32 @gets BD+wordl
      B+<#wides @putlew
      ? @putnel @putlew
      !
     ?
      .=26 :
       !~
       !
       .=13 .
        .=10 .
         [
          .=13 .
           .=10 .
          ]
         !
         .=13 . @pute .
          [
           .=32 @putc .
          ] --F
         ? --F 32 @putc
         !
        !
       !
      !
    ] 26 :
   ~! T -#output
( 2 output#writp ;

~promed @entryp :ss SP-128 @lonmed 0 vinit @main 0 @vinit @!returp #}

~! { (P @entryc :ss SP-128 @promod #promed @procep @reamod @!returc

()16384
  
~~

Free Web Hosting