<commit_before><div add-shadows></div>

<input type="text" class="form-control" 
       style="text-align: center; font-size: 21px;" 
       ng-model="puzzle.desc" placeholder="Untitled" />

<br />

<div class="jumbotron">

  <canvas>

    <sframe ng-attr-transform="translate({{view.world.offset.x}},{{view.world.offset.y}})">
  
      <desc>Frame containing the World</desc>

      <grid ng-repeat="y in range(world.maxY)">

        <tile pos-x="{{x}}"
              pos-y="{{y}}"
              width="{{view.world.tile.width}}"
              height="{{view.world.tile.height}}"
              h-pad="{{view.world.tile.horizPad}}"
              v-pad="{{view.world.tile.verticalPad}}"
              classes="{{world.classAt(x,y)}}" 
              icon="{{world.iconAt(x,y)}}"

              ng-click="toggleWorldCxtMenu($event)"
              ng-repeat="x in range(world.maxX)" />

      </grid>

    </sframe>

    <sframe ng-attr-transform="translate({{view.program.offset.x}},{{view.program.offset.y}})">

      <desc>Frame containing the Program</desc>

      <grid ng-repeat="fn in range(program.functions.length)">

        <tile pos-y="{{fn}}"
              pos-x="{{pos}}"
              width="{{view.program.tile.width}}"
              height="{{view.program.tile.height}}"
              h-pad="{{view.program.tile.horizPad}}"
              v-pad="{{view.program.tile.verticalPad}}"
              classes="{{program.classAt(fn,pos)}}" 
              icon="{{program.iconAt(fn,pos)}}"

              ng-click="toggleProgramCxtMenu($event)"
              ng-repeat="pos in range(program.functions[fn].length)" />

    </sframe>
<commit_msg>Add Fn labels<commit_after><div add-shadows></div>

<input type="text" class="form-control" 
       style="text-align: center; font-size: 21px;" 
       ng-model="puzzle.desc" placeholder="Untitled" />

<br />

<div class="jumbotron">

  <canvas>

    <sframe ng-attr-transform="translate({{view.world.offset.x}},{{view.world.offset.y}})">
  
      <desc>Frame containing the World</desc>

      <grid ng-repeat="y in range(world.maxY)">

        <tile pos-x="{{x}}"
              pos-y="{{y}}"
              width="{{view.world.tile.width}}"
              height="{{view.world.tile.height}}"
              h-pad="{{view.world.tile.horizPad}}"
              v-pad="{{view.world.tile.verticalPad}}"
              classes="{{world.classAt(x,y)}}" 
              icon="{{world.iconAt(x,y)}}"

              ng-click="toggleWorldCxtMenu($event)"
              ng-repeat="x in range(world.maxX)" />

      </grid>

    </sframe>

    <sframe ng-attr-transform="translate({{view.program.offset.x}},{{view.program.offset.y}})">

      <desc>Frame containing the Program</desc>

      <grid ng-repeat="fn in range(program.functions.length)">

        <text x="{{ 0 - 0.6 * view.program.tile.width }}" 
              y="{{ (fn + 0.6) * (view.program.tile.height + view.program.tile.verticalPad) }}"
              ng-if="program.functions[fn].length">
          F{{fn+1}}
        </text>

        <tile pos-y="{{fn}}"
              pos-x="{{pos}}"
              width="{{view.program.tile.width}}"
              height="{{view.program.tile.height}}"
              h-pad="{{view.program.tile.horizPad}}"
              v-pad="{{view.program.tile.verticalPad}}"
              classes="{{program.classAt(fn,pos)}}" 
              icon="{{program.iconAt(fn,pos)}}"

              ng-click="toggleProgramCxtMenu($event)"
              ng-repeat="pos in range(program.functions[fn].length)" />

    </sframe>

{'fraction_non_alphanumeric': 0.20056497175141244, 'fraction_numerical': 0.002824858757062147, 'mean_word_length': 2.227894257064722, 'pattern_counts': {'":': 0, '<': 43, '<?xml version=': 0, '>': 43, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4358635', 'n_tokens_mistral': 1145, 'n_tokens_neox': 1095, 'n_words': 143}