diff options
author | Walter Bender <walter@sugarlabs.org> | 2013-05-25 23:20:37 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2013-05-25 23:20:37 (GMT) |
commit | 3feac049ac176b0e3b8f86ae488c5cc329be059e (patch) | |
tree | 9941b434c5037d942671362c3510265f322a4f17 | |
parent | ed303715f77f79e697e33b3d0df082843ffc1492 (diff) |
patches for amazonas
114 files changed, 14031 insertions, 6470 deletions
diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 268f703..ca85141 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -43,6 +43,10 @@ from sugar.graphics.toolbutton import ToolButton from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.graphics.alert import (ConfirmationAlert, NotifyAlert) from sugar.graphics import style +from sugar.graphics.combobox import ComboBox +from sugar.graphics.toolcombobox import ToolComboBox +from sugar.graphics.objectchooser import ObjectChooser +from sugar import mime from sugar.datastore import datastore from sugar import profile @@ -83,6 +87,7 @@ class TurtleArtActivity(activity.Activity): self.tw = None self.init_complete = False + self._stop_help = False self.palette_buttons = [] self._overflow_buttons = [] @@ -90,6 +95,9 @@ class TurtleArtActivity(activity.Activity): self._check_ver_change(get_path(activity, 'data')) self.connect("notify::active", self._notify_active_cb) + self._level = 0 + self._custom_filepath = None + self.has_toolbarbox = HAS_TOOLBARBOX _logger.debug('_setup_toolbar') self._setup_toolbar() @@ -125,6 +133,32 @@ class TurtleArtActivity(activity.Activity): self._do_hover_help_toggle(None) self.init_complete = True + if self._stop_help: + self._load_level() + else: + self.help_animation() + + # Eye candy intro + def help_animation(self): + self._help_index = 0 + self._stop_help = False + self.stop_turtle_button.set_icon('stopiton') + self._help_next() + + def _help_next(self): + ''' Load the next frame in the animation ''' + path = os.path.join(activity.get_bundle_path(), + 'images', 'amazonas-%d.jpg' % self._help_index) + self.tw.canvas.setxy(-160, 120, pendown=False) + self.tw.lc.insert_image(center=False, resize=False, + filepath=path) + if self._stop_help: + self._load_level() + return + self._help_index += 1 + self._help_index %= 4 # FIX ME + self._help_timeout_id = gobject.timeout_add(2000, self._help_next) + def check_buttons_for_fit(self): ''' Check to see which set of buttons to display ''' if not self.has_toolbarbox: @@ -292,8 +326,10 @@ class TurtleArtActivity(activity.Activity): return if not self.has_toolbarbox: self.palette_buttons[i].set_icon(palette_names[i] + 'on') + ''' else: self._help_button.set_current_palette(palette_names[i]) + ''' self.tw.show_palette(n=i) self.do_showpalette() @@ -339,8 +375,16 @@ class TurtleArtActivity(activity.Activity): self.eraser_button.set_icon('eraseroff') self.recenter() self.tw.eraser_button() + self.restore_challenge() gobject.timeout_add(250, self.eraser_button.set_icon, 'eraseron') + def restore_challenge(self): + ''' Restore the current challange after a clear screen ''' + if self._custom_filepath is None: + self._load_level() + else: + self._load_level(custom=True) + def do_run_cb(self, button): ''' Callback for run button (rabbit) ''' self.run_button.set_icon('run-faston') @@ -362,6 +406,13 @@ class TurtleArtActivity(activity.Activity): def do_stop_cb(self, button): ''' Callback for stop button. ''' + if not self._stop_help: + self._stop_help = True + self.tw.showblocks() + self.stop_turtle_button.set_icon('hideshowoff') + self.stop_turtle_button.set_tooltip(_('Hide blocks')) + return + # Auto show blocks after stop if not self.tw.hide and not self.tw.running_blocks: self.tw.hideblocks() @@ -500,6 +551,14 @@ class TurtleArtActivity(activity.Activity): # Given the change in how overlays are handled (v123), there is no way # to erase and then redraw the overlays. + def _do_help_cb(self, button): + if os.path.exists(os.path.join( + activity.get_bundle_path(), 'challenges', + 'help-' + str(self._level + 1) + '.ta')): + self.read_file(os.path.join( + activity.get_bundle_path(), 'challenges', + 'help-' + str(self._level + 1) + '.ta')) + def get_document_path(self, async_cb, async_err_cb): ''' View TA code as part of view source. ''' ta_code_path = self._dump_ta_code() @@ -597,7 +656,11 @@ class TurtleArtActivity(activity.Activity): self.palette_toolbar_button = ToolbarButton( page=self._palette_toolbar, icon_name='palette') - self._help_button = HelpButton(self) + self._help_button = self._add_button('help-toolbar', + _('Help'), + self._do_help_cb, + None) + # self._help_button = HelpButton(self) self._make_load_save_buttons(self.activity_toolbar_button) @@ -852,6 +915,9 @@ class TurtleArtActivity(activity.Activity): self._overflow_box.remove(button) if self._overflow_palette_button in self._palette_toolbar: self._palette_toolbar.remove(self._overflow_palette_button) + if hasattr(self, '_levels_combo') and \ + self._levels_tool in self._palette_toolbar: + self._palette_toolbar.remove(self._levels_tool) for i in range(len(self.palette_buttons)): if i < max_palettes: @@ -870,6 +936,8 @@ class TurtleArtActivity(activity.Activity): if self.tw.hw in [XO1, XO15, XO175, XO4]: self._make_palette_buttons(self._palette_toolbar) ''' + self._make_confusion_combo(self._palette_toolbar) + self._palette_toolbar.show() self._overflow_box.show_all() self._overflow_palette.set_content(self._overflow_sw) @@ -992,6 +1060,17 @@ class TurtleArtActivity(activity.Activity): self._palette.popdown(immediate=True) return + def _make_confusion_combo(self, toolbar): + if hasattr(self, '_levels_tools'): + toolbar.insert(self._levels_tools, -1) + else: + self._levels = self._get_levels(activity.get_bundle_path()) + self._levels_combo, self._levels_tool = \ + self._combo_factory(self._levels, + _('Select a challenge'), + toolbar, + self._levels_cb) + def _make_palette_buttons(self, toolbar, palette_button=False): ''' Creates the palette and block buttons for both toolbar types''' if palette_button: # old-style toolbars need this button @@ -1508,6 +1587,93 @@ in order to use the plugin.')) help_strings[name] = tooltip return button + def _combo_factory(self, options, tooltip, toolbar, callback, default=0): + ''' Combo box factory ''' + combo = ComboBox() + if hasattr(combo, 'set_tooltip_text'): + combo.set_tooltip_text(tooltip) + combo.connect('changed', callback) + for i, option in enumerate(options): + combo.append_item(i, option.replace('-', ' '), None) + combo.set_active(default) + combo.show() + tool = ToolComboBox(combo) + tool.show() + if hasattr(toolbar, 'insert'): + toolbar.insert(tool, -1) + else: + toolbar.props.page.insert(tool, -1) + return combo, tool + + def _get_levels(self, path): + ''' Look for level files in lessons directory. ''' + level_files = [] + """ + if path is not None: + candidates = os.listdir(os.path.join(path, 'challenges')) + for filename in candidates: + level_files.append(filename.split('.')[0]) + """ + for i in range(40): + level_files.append('amazonas-%d' % (i+1)) + + ''' + ''' + self.offsets = {} + offset_fd = open(os.path.join(activity.get_bundle_path(), 'challenges', + 'offsets')) + for line in offset_fd: + try: + idx, offsets = line.strip('\n').split(':') + xoffset, yoffset = offsets.split(',') + self.offsets[int(idx)] = (int(xoffset), int(yoffset)) + except ValueError: + pass + offset_fd.close() + return level_files + + def _levels_cb(self, combobox=None): + ''' The combo box has changed. ''' + if hasattr(self, '_levels_combo'): + i = self._levels_combo.get_active() + if i != -1: # and i != self._level: + self._level = i + self._load_level() + self._custom_filepath = None + + def _load_level(self, custom=False): + self.tw.canvas.clearscreen() + if custom: + self.tw.canvas.setxy(0, 0, pendown=False) + self.tw.lc.insert_image(center=True, + filepath=self._custom_filepath, + resize=True, offset=False) + else: + self.tw.canvas.setxy(int(-gtk.gdk.screen_width() / 2), 0, + pendown=False) + self.tw.lc.insert_image(center=False, resize=False, + filepath=os.path.join( + activity.get_bundle_path(), 'images', + 'amazonas-tortuga.png')) + if self._stop_help: + # Slight offset to account for stroke width + if self._level + 1 in self.offsets: + xoffset = self.offsets[self._level + 1][0] + yoffset = self.offsets[self._level + 1][1] + else: + xoffset = 0 + yoffset = 0 + self.tw.canvas.setxy(-2.5 + xoffset, -2.5 + yoffset, + pendown=False) + self.tw.lc.insert_image(center=False, + filepath=os.path.join + (activity.get_bundle_path(), + 'challenges', + self._levels[self._level] + '.svg'), + resize=False, + offset=True) + self.tw.canvas.setxy(0, 0, pendown=False) + def _radio_button_factory(self, button_name, toolbar, cb, arg, tooltip, group, position=-1): ''' Add a radio button to a toolbar ''' diff --git a/activity/activity-turtleart.svg b/activity/activity-turtleart.svg index 9c2147f..8fb0dd4 100644 --- a/activity/activity-turtleart.svg +++ b/activity/activity-turtleart.svg @@ -2,25 +2,73 @@ <!ENTITY stroke_color "#000"> <!ENTITY fill_color "#eee"> ]><svg height="55px" viewBox="0 0 55 55" width="55px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" stroke="&stroke_color;" fill="&fill_color;"> - <g> - <path d="M 27.497 48.279 C 26.944 48.279 26.398 48.244 25.86 48.179 L 27.248 50.528 L 28.616 48.215 C 28.245 48.245 27.875 48.279 27.497 48.279 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <g> - <path d="M 40.16 11.726 C 37.996 11.726 36.202 13.281 35.817 15.333 C 37.676 16.678 39.274 18.448 40.492 20.541 C 42.777 20.369 44.586 18.48 44.586 16.151 C 44.586 13.707 42.604 11.726 40.16 11.726 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <path d="M 40.713 39.887 C 39.489 42.119 37.853 44.018 35.916 45.443 C 36.437 47.307 38.129 48.682 40.16 48.682 C 42.603 48.682 44.586 46.702 44.586 44.258 C 44.586 42.003 42.893 40.162 40.713 39.887 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <path d="M 14.273 39.871 C 12.02 40.077 10.249 41.95 10.249 44.258 C 10.249 46.701 12.229 48.682 14.673 48.682 C 16.737 48.682 18.457 47.262 18.945 45.35 C 17.062 43.934 15.47 42.061 14.273 39.871 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <path d="M 19.026 15.437 C 18.683 13.334 16.872 11.726 14.673 11.726 C 12.229 11.726 10.249 13.707 10.249 16.15 C 10.249 18.532 12.135 20.46 14.494 20.556 C 15.68 18.513 17.226 16.772 19.026 15.437 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> + <g + transform="matrix(0.32702086,0,0,0.32702086,-28.281255,4.0632089)" + id="g3861"> + <path + d="m 229.4265,82.10708 a 34.448574,31.598513 0 1 1 -68.8971,0 34.448574,31.598513 0 1 1 68.8971,0 z" + id="path3825" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <path + d="m 146.8466,108.06462 c 0,0 16.2359,10.15496 24.2773,15.19797 3.6656,2.29879 3.4995,-9.01041 6.1186,-11.44782 1.9482,-0.15766 15.138,8.36289 23.0931,7.10554 8.2572,-1.3051 15.3714,-6.28257 20.4032,-13.78888 -0.5953,-2.28828 -5.5925,-0.008 -7.6013,-0.91343 -2.8453,4.78261 -5.6956,6.90448 -10.0387,7.00464 -13.9586,0.32192 -33.532,-19.36329 -35.3303,-23.68516 4.3069,0.8831 11.4973,1.51301 14.2111,-2.56589 1.5823,-2.3782 -0.543,-5.35067 -2.1712,-7.69767 -3.0708,-4.42645 -11.4011,-4.77895 -13.2242,-8.48717 -2.0107,-4.08982 4.488,-8.63853 8.2898,-11.15177 4.5762,-3.02521 11.481,-8.36867 16.1849,-4.04621 2.4052,2.2102 -7.5659,0.16838 -8.882,3.15802 -1.7425,3.95823 5.8602,4.97597 6.3161,9.27668 0.4237,3.99739 -3.7475,7.27492 -4.3423,11.25045 -0.4099,2.73981 1.6536,5.73092 0.5921,8.2898 -1.2332,2.97281 -7.8906,3.15173 -7.3029,6.31604 10.1484,6.52995 20.5559,10.53313 31.7776,11.44783 9.0031,0.73386 19.1464,0.10081 26.6458,-4.93441 5.4546,-3.6623 10.6274,-10.00969 10.6583,-16.57961 0.03,-6.29744 -5.6333,-11.51446 -10.0662,-15.98748 -6.7701,-6.83137 -18.11,-8.21253 -24.2773,-15.59272 -2.6481,-3.16893 -1.2426,-9.24702 -4.737,-11.44783 -7.9984,-1.60894 -19.6673,-0.96019 -29.0143,1.57901 -11.3585,3.08564 -23.6697,8.68727 -31.3828,16.18486 -4.051,9.65189 9.514,19.53633 9.2766,30.00119 -0.1808,7.96857 -9.6714,21.31664 -9.6714,21.31664" + id="path3821" + style="fill:&stroke_color;;fill-opacity:1;stroke:&fill_color;;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + d="m 178.3733,63.02406 -1.8587,2.72615 c 0,0 -2.6364,-0.66145 -2.7262,-1.73482 -0.2829,-3.38076 4.202,-7.30607 7.5589,-6.81537 1.5666,4.57181 5.2044,8.55019 5.2044,8.55019 l -7.4349,-4.08922 -1.7348,0.74349" + id="path3823" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + d="m 221.1936,90.19267 -0.819,4.70927" + id="path3834" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 238.3927,87.32616 2.0475,2.66176" + id="path3836" + style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 141.89,121.50238 c 0,0 -29.3042,3.77758 -44,-21.33334 -3.9435,-6.73831 -2.7258,-15.11656 -2,-22.66666 2.1847,-22.72591 12.5505,-46.54858 22,-61.33334 20.3839,-1.77411 47.6318,-0.0892 70.6667,2.66667 4.623,0.5531 28.2288,7.16728 32.6667,14.66667 2.2322,3.77212 -0.7807,20.81554 -2.6651,20.39909 -10.8427,-2.39622 -7.4629,-16.14428 -10.3501,-15.81288 -10.3315,1.20112 -23.4198,0.59834 -31.741,3.3315 -8.8873,3.54201 -27.3925,11.3578 -30.4555,17.88252 -2.6561,5.65803 11.5495,23.95055 10.2746,28.17891 -2.3379,7.75325 -13.9551,33.45122 -14.3241,33.9338" + id="path2997" + style="fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 175.0714,119.31507 2.7633,-6.51342 c 0,0 15.3169,6.68998 23.2904,5.92129 5.2145,-0.5027 14.2111,-6.7108 14.2111,-6.7108 l 5.9212,13.81634 c 0,0 -16.5168,2.99189 -24.672,1.77639 -7.6013,-1.13294 -21.514,-8.2898 -21.514,-8.2898 z" + id="path3806" + style="fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 112.7004,115.17017 c 0,0 5.8137,1.1256 8.0925,-0.19738 4.9111,-2.8512 2.925,-12.1206 7.6976,-15.19797 5.0919,-3.28324 12.7474,1.93531 18.1587,-0.78951 2.7991,-1.40946 5.9212,-7.30292 5.9212,-7.30292" + id="path3767" + style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 99.7723,102.48516 c 0,0 11.7349,0.53347 15.198,-2.17114 4.4756,-3.49537 5.0962,-12.1206 9.8688,-15.19797 5.0919,-3.28324 11.5631,1.93531 16.9744,-0.78951 2.7991,-1.40946 7.6976,-10.06619 7.6976,-10.06619" + id="path3767-4" + style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="translate(-1185.4433,-637.16429)" + id="g3797" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"> + <path + d="m 1280.3799,717.7936 12.04,-11.05307 -6.1187,0.39476 1.9738,-12.43471 8.0924,-3.3554 -2.3685,13.42159 c 0,0 27.6772,-26.02525 44.2123,-34.9356 9.3957,-5.06314 29.6064,-9.86881 30.3959,-10.06619 0.7895,-0.19738 16.777,0.59213 16.777,0.59213 -7.5003,-3.3554 -16.5796,-5.32916 -26.0537,-5.32916 l -2.3685,5.13178 -20.1324,0.19738 4.1449,-5.72391 -6.7108,-0.59213 -15.1979,8.88193 15.0006,-1.38163 -4.1449,11.84257 -15.7901,0.98688 4.9344,-11.25044 -16.777,13.61896 8.2898,-0.19738 -0.7895,10.8557 -12.04,2.76327 3.7502,-12.03996 -15.3954,11.84258 -2.7632,9.86882" + id="path3787" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + d="m 1287.8802,703.38514 1.7764,0.39475 1.7764,-5.92129 -2.1711,-0.39475 z" + id="path3789" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + d="m 1303.2756,685.62127 0.9869,-5.13178 2.3685,3.75015 z" + id="path3791" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + d="m 1320.8421,671.2128 1.1842,-5.13178 7.5003,-0.19738 -2.7633,5.13179 -5.1317,-0.19738" + id="path3793" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + d="m 1345.1193,658.18597 0,-4.1449 10.461,0.7895 -1.1843,3.15802 z" + id="path3795" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <path + d="m 97.5025,100.16957 18.7508,-21.11926 17.9612,-13.42159 c 0,0 8.0484,-5.69596 12.2373,-8.28981 8.5409,-5.28872 16.7256,-11.61232 26.2511,-14.80322 8.9376,-2.99395 18.73,-2.20005 28.0274,-3.75015 1.6545,-0.27585 4.9344,-0.98688 4.9344,-0.98688 l -0.9869,-8.48718 9.0793,3.94753 -0.5921,1.97376 -5.3291,-2.17114 1.1842,5.72391 0.9869,-2.17113 5.9213,2.17113 0.9869,-5.52653 -12.6321,-5.72391 -5.9213,7.30292 -21.9088,2.76327 -3.9475,-7.30293 13.2242,-3.55277 0.5921,3.94753 -7.6976,1.18425 -0.1974,2.36852 11.2504,-2.17114 -1.7764,-7.30292 -17.7638,3.55277 -7.6977,15.19798 -15.3953,9.0793 -6.5135,-4.53965 14.0138,-9.67144 0,2.56589 -9.4741,5.72392 c 0,0 0.3947,1.77638 1.3816,1.57901 0.9869,-0.19738 10.2636,-5.52654 10.2636,-5.52654 l -1.1843,-6.71079 -17.9612,11.6452 -8.4872,17.56649 -8.4872,7.30292 -2.9606,-3.94753 6.7108,-7.30292 0.5921,1.57901 -5.3291,4.93441 7.6976,-5.13179 -2.9606,-4.9344 -10.461,9.67143 -2.9606,13.81634 -7.8951,8.68456 -4.3422,-1.77639 5.3291,-6.51341 0.7895,1.38163 -2.7632,4.53966 3.3554,-9.27669 -7.8951,6.90817 -2.1712,9.67143 z" + id="path3804" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> - <path d="M 27.497 12.563 C 29.405 12.563 31.225 12.974 32.915 13.691 C 33.656 12.615 34.093 11.314 34.093 9.908 C 34.093 6.221 31.104 3.231 27.416 3.231 C 23.729 3.231 20.74 6.221 20.74 9.908 C 20.74 11.336 21.192 12.657 21.956 13.742 C 23.68 12.993 25.543 12.563 27.497 12.563 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <g> - <path d="M 43.102 30.421 C 43.102 35.1554 41.4568 39.7008 38.5314 43.0485 C 35.606 46.3963 31.6341 48.279 27.497 48.279 C 23.3599 48.279 19.388 46.3963 16.4626 43.0485 C 13.5372 39.7008 11.892 35.1554 11.892 30.421 C 11.892 20.6244 18.9364 12.563 27.497 12.563 C 36.0576 12.563 43.102 20.6244 43.102 30.421 Z " fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - </g> - <g> - <path d="M 25.875 33.75 L 24.333 29.125 L 27.497 26.538 L 31.112 29.164 L 29.625 33.833 Z " fill="&stroke_color;" stroke="none" stroke-width="3.5"/> - <path d="M 27.501 41.551 C 23.533 41.391 21.958 39.542 21.958 39.542 L 25.528 35.379 L 29.993 35.547 L 33.125 39.667 C 33.125 39.667 30.235 41.661 27.501 41.551 Z " fill="&stroke_color;" stroke="none" /> - <path d="M 18.453 33.843 C 17.604 30.875 18.625 26.959 18.625 26.959 L 22.625 29.126 L 24.118 33.755 L 20.536 37.988 C 20.536 37.987 19.071 35.998 18.453 33.843 Z " fill="&stroke_color;" stroke="none" /> - <path d="M 19.458 25.125 C 19.458 25.125 19.958 23.167 22.497 21.303 C 24.734 19.66 26.962 19.583 26.962 19.583 L 26.925 24.564 L 23.404 27.314 L 19.458 25.125 Z " fill="&stroke_color;" stroke="none" /> - <path d="M 32.084 27.834 L 28.625 24.959 L 29 19.75 C 29 19.75 30.834 19.708 32.959 21.417 C 35.187 23.208 36.321 26.4 36.321 26.4 L 32.084 27.834 Z " fill="&stroke_color;" stroke="none" /> - <path d="M 31.292 34.042 L 32.605 29.578 L 36.792 28.042 C 36.792 28.042 37.469 30.705 36.75 33.709 C 36.21 35.965 34.666 38.07 34.666 38.07 L 31.292 34.042 Z " fill="&stroke_color;" stroke="none" /> - </g> - </g> </svg> diff --git a/activity/activity.info b/activity/activity.info index e9190ef..a724833 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,8 +1,8 @@ [Activity] -name = TurtleBlocks +name = Amazonas Tortuga activity_version = 179 license = MIT -bundle_id = org.laptop.TurtleArtActivity +bundle_id = org.sugarlabs.AmazonasTortuga exec = sugar-activity TurtleArtActivity.TurtleArtActivity icon = activity-turtleart show_launcher = yes diff --git a/challenges/amazonas-1.svg b/challenges/amazonas-1.svg new file mode 100644 index 0000000..85f443e --- /dev/null +++ b/challenges/amazonas-1.svg @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,133.17736,19.304487)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> +</svg> diff --git a/challenges/amazonas-10.svg b/challenges/amazonas-10.svg new file mode 100644 index 0000000..1739638 --- /dev/null +++ b/challenges/amazonas-10.svg @@ -0,0 +1,411 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 3.1842866,103.10283 98.288312,47.696243 193.39234,102.89054 97.439169,158.29713 z" + id="path5489" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <path + d="M 28.021722,103.5274 98.500598,62.131676 168.97947,103.5274 98.076026,144.28627 z" + id="path6119" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0,0,0.5,48.975654,51.68773)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="M 52.2223,103.5274 98.288312,76.354822 145.62804,103.31512 97.651455,130.48769 z" + id="path6121" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-28.552651,25.23772)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,25.183482,26.578043)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(30.255316,19.03157)" + id="g4321"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7" + style="font-size:10px">77.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-11.svg b/challenges/amazonas-11.svg new file mode 100644 index 0000000..a36058c --- /dev/null +++ b/challenges/amazonas-11.svg @@ -0,0 +1,184 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="600" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + transform="translate(0.54624033,-0.8754605)" + id="g3003"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,141.92967,23.204117)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(192.45868,-0.8754605)" + id="g3003-9"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-45" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-3" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.37068,-0.8754605)" + id="g3003-4"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> +</svg> diff --git a/challenges/amazonas-12.svg b/challenges/amazonas-12.svg new file mode 100644 index 0000000..bd79359 --- /dev/null +++ b/challenges/amazonas-12.svg @@ -0,0 +1,483 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="600" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-16" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + transform="translate(0.54624033,-0.8754605)" + id="g3003"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,135.92967,21.204117)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(192.45868,-0.8754605)" + id="g3003-9"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-45" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-3" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.37068,-0.8754605)" + id="g3003-4"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(217.00814,135.42497)" + id="g3547-0"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(408.92058,135.42497)" + id="g3547-0-0"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6-6" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(600.83258,135.42497)" + id="g3547-0-3"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(173.8,109.4)" + id="g3628"> + <path + d="m -63.899696,-27.804392 -12.631525,7.292814" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-75.161217" + y="-51.974945" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-75.161217" + y="-51.974945" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="M -112.11964,0.21447485 -99.48811,-7.0783406" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-13.svg b/challenges/amazonas-13.svg new file mode 100644 index 0000000..562c399 --- /dev/null +++ b/challenges/amazonas-13.svg @@ -0,0 +1,256 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="600" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + transform="translate(0.54624033,-0.8754605)" + id="g3003"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,136.79609,19.995628)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(192.45868,-0.8754605)" + id="g3003-9"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-45" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-3" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.37068,-0.8754605)" + id="g3003-4"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 52.619212,101.68667 45.560537,-27.593002 46.843931,28.234702 -46.843931,27.593 z" + id="path3728" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="translate(217.00814,135.42497)" + id="g3547-0"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 244.20775,102.17915 45.56054,-27.592998 46.84393,28.234698 -46.84393,27.593 z" + id="path3728-2" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="translate(408.92058,135.42497)" + id="g3547-0-5"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 436.11975,102.17915 45.56053,-27.592999 46.84394,28.234699 -46.84394,27.593 z" + id="path3728-29" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="translate(600.83258,135.42497)" + id="g3547-0-0"> + <path + d="m -166.48859,-33.26589 47.72799,-27.33268" + id="path2993-0-8-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-33.26589 -47.728,-27.33268" + id="path2993-9-2-5-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -166.48859,-32.58405 47.72799,27.33268" + id="path2993-5-7-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m -70.5326,-32.58405 -47.728,27.33268" + id="path2993-9-4-4-6-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> +</svg> diff --git a/challenges/amazonas-14.svg b/challenges/amazonas-14.svg new file mode 100644 index 0000000..0ecd76b --- /dev/null +++ b/challenges/amazonas-14.svg @@ -0,0 +1,656 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="600" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-31" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-07" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4909" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4911" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4913" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4915" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4917" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4919" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + transform="translate(0.54624033,-0.8754605)" + id="g3003"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,225.58043,75.710049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(192.45868,-0.8754605)" + id="g3003-9"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-45" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-3" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.37068,-0.8754605)" + id="g3003-4"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(656.91244,194.08649)" + id="g5025"> + <g + transform="matrix(0.5,0,0,0.5,-223.56611,-143.27422)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,-247.35828,-168.38391)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> + <g + transform="translate(465.00044,194.08649)" + id="g4875-2"> + <g + transform="matrix(0.5,0,0,0.5,-223.56611,-143.27422)" + id="g4083-1-0" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-1" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-3" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-301.09441,-169.72423)" + id="g3994-8-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8-37" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5-0" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8-9" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1-73" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,-247.35828,-168.38391)" + id="g4083-1-1-9" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9-8" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3-5" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0-4" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9-6" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(-242.28644,-175.93038)" + id="g4321-7"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3-2" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7-9" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7-4" + style="font-size:10px">82.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7-4" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + </g> + <g + transform="translate(273.088,194.08649)" + id="g5025-9"> + <g + transform="matrix(0.5,0,0,0.5,-223.56611,-143.27422)" + id="g4083-1-9" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-5" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-10" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,-247.35828,-168.38391)" + id="g4083-1-1-7" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9-80" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0-2" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9-5" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> +</svg> diff --git a/challenges/amazonas-15.svg b/challenges/amazonas-15.svg new file mode 100644 index 0000000..838c9a8 --- /dev/null +++ b/challenges/amazonas-15.svg @@ -0,0 +1,864 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="600" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-66" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133-6" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-44" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-53" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-6" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-62" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-6" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + transform="translate(0.54624033,-0.8754605)" + id="g3003"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.3516,75.641452)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(192.45868,-0.8754605)" + id="g3003-9"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-45" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-3" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(384.37068,-0.8754605)" + id="g3003-4"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-2" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="m 244.46869,102.43966 46.70287,-27.59716 46.70287,27.80944 -47.33972,27.59715 z" + id="path4173" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0,0,0.5,241.43433,50.81227)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,217.64216,25.70258)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(-294.81171,5.7017363)" + id="g5733"> + <path + d="m 707.23048,96.407193 69.74789,-40.458739 71.98182,41.203379 -71.98182,40.706957 z" + id="path4840" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <path + d="M 730.43083,96.692123 777.1337,69.094971 823.83657,96.904403 776.49684,124.50155 z" + id="path4173-2" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0,0,0.5,728.15804,45.110533)" + id="g4083-1-7" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-8" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-6" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,704.36587,20.000846)" + id="g4083-1-1-3" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9-5" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3-7" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9-7" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> + <g + transform="translate(-678.63615,5.7017363)" + id="g5733-0"> + <path + d="m 707.23048,96.407193 69.74789,-40.458739 71.98182,41.203379 -71.98182,40.706957 z" + id="path4840-8" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <path + d="M 730.43083,96.692123 777.1337,69.094971 823.83657,96.904403 776.49684,124.50155 z" + id="path4173-2-2" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0,0,0.5,728.15804,45.110533)" + id="g4083-1-7-5" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-8-6" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-6-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-2-1" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-5-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,704.36587,20.000846)" + id="g4083-1-1-3-0" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9-5-1" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3-7-8" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0-9-7" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9-7-2" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-29.742219,24.144679)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="translate(421.36663,23.378085)" + id="g4321"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7" + style="font-size:10px">77.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-16.svg b/challenges/amazonas-16.svg new file mode 100644 index 0000000..0dc222a --- /dev/null +++ b/challenges/amazonas-16.svg @@ -0,0 +1,307 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-17.svg b/challenges/amazonas-17.svg new file mode 100644 index 0000000..00b1228 --- /dev/null +++ b/challenges/amazonas-17.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="81.25" + y="81.25" + id="rect4074" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-18.svg b/challenges/amazonas-18.svg new file mode 100644 index 0000000..84ddacd --- /dev/null +++ b/challenges/amazonas-18.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="81.25" + y="81.25" + id="rect4074" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-19.svg b/challenges/amazonas-19.svg new file mode 100644 index 0000000..d77ab2e --- /dev/null +++ b/challenges/amazonas-19.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="81.25" + y="81.25" + id="rect4074" + style="fill:#ffffff;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-2.svg b/challenges/amazonas-2.svg new file mode 100644 index 0000000..5def30e --- /dev/null +++ b/challenges/amazonas-2.svg @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 2.5,102.5 c 135.97643,-0.69024 191.5,0 191.5,0" + id="path3003" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(-8.3170911,74.685141)" + id="g5715"> + <g + transform="matrix(0.97234963,0,0,1,0.27715027,0)" + id="g4037"> + <path + d="m 11.522128,100.84054 72.69378,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1.13166273px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 208.04135,100.85782 -72.69379,0" + id="path2995-3" + style="fill:none;stroke:#000000;stroke-width:1.13166285px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" /> + <text + x="100.58539" + y="104.48931" + id="text4233" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="100.58539" + y="104.48931" + id="tspan4235" + style="font-size:10px">194</tspan></text> + </g> + </g> +</svg> diff --git a/challenges/amazonas-20.svg b/challenges/amazonas-20.svg new file mode 100644 index 0000000..93b383b --- /dev/null +++ b/challenges/amazonas-20.svg @@ -0,0 +1,329 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="405" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="81.25" + y="81.25" + id="rect4074" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 202.5,122.5 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 z" + id="path3005-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="281.25" + y="81.25" + id="rect4074-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-21.svg b/challenges/amazonas-21.svg new file mode 100644 index 0000000..fbb1d64 --- /dev/null +++ b/challenges/amazonas-21.svg @@ -0,0 +1,329 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="405" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 202.5,122.5 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 -40,0 0,-40 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="81.25" + y="81.25" + id="rect4074" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 162.5,82.5 40,0 0,-40 40,0 0,-40 40,0 0,40 40,0 0,40 40,0 0,40 -40,0 0,40 -40,0 0,40 -40,0 0,-40 -40,0 0,-40 -40,0" + id="path3005-1" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <rect + width="42.5" + height="42.5" + rx="24" + ry="0" + x="241.25" + y="81.25" + id="rect4074-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-22.svg b/challenges/amazonas-22.svg new file mode 100644 index 0000000..6f1aa36 --- /dev/null +++ b/challenges/amazonas-22.svg @@ -0,0 +1,316 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,202.5 0,-200 40,0 0,40 40,0 0,40 40,0 0,40 40,0 0,40 40,0 0,40 z" + id="path3005" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + id="g4049"> + <path + d="m 85.498883,47.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="98.102356" + y="50.509941" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="98.102356" + y="50.509941" + id="tspan4235" + style="font-size:9.86077881px">40</tspan></text> + <path + d="m 120.18084,47.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <rect + width="200.06024" + height="200.06024" + rx="0" + ry="0" + x="2.4698792" + y="2.4698792" + id="rect3030" + style="fill:none;stroke:#7f7f7f;stroke-width:4.93975925;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-23.svg b/challenges/amazonas-23.svg new file mode 100644 index 0000000..159372d --- /dev/null +++ b/challenges/amazonas-23.svg @@ -0,0 +1,453 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 3.1060653,201.89394 0,-198.7878769 198.7878647,0 0,198.7878769 z" + id="path4000" + style="fill:none;stroke:#7f7f7f;stroke-width:6.21212149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 29.42,175.58 0,-146.16 146.16,0 0,146.16 z" + id="path4000-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.09000015;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 54.382351,150.61765 0,-96.235299 96.235299,0 0,96.235299 z" + id="path4000-2" + style="fill:none;stroke:#7f7f7f;stroke-width:6.01470566;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 79.277779,125.72222 0,-46.444441 46.444441,0 0,46.444441 z" + id="path4000-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5.80555534;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-42.479606)" + id="g4049-9"> + <path + d="m 241.2406,89.573331 7.74004,0" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="273.16318" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233-4" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="273.16318" + y="91.925209" + id="tspan4235-6" + style="font-size:9.86077881px">100</tspan></text> + <path + d="m 316.43912,89.592547 -7.74004,0" + id="path2995-9-5" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <path + d="m 31.872581,40.372618 9.169615,0" + id="path2995-0-8" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.353088" + y="43.811108" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.353088" + y="43.811108" + id="tspan4235-6-6" + style="font-size:11.76923466px">150</tspan></text> + <path + d="m 172.96016,40.395724 -9.16961,0" + id="path2995-9-5-1" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 7.65881,14.465983 9.16961,0" + id="path2995-0-8-0" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.445038" + y="18.454386" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0-3" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.445038" + y="18.454386" + id="tspan4235-6-6-0" + style="font-size:11.76923466px">200</tspan></text> + <path + d="m 196.74638,14.489089 -9.16961,0" + id="path2995-9-5-1-4" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-18.872772)" + id="g4049"> + <path + d="m 261.49888,89.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="276.58725" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="276.58725" + y="91.925209" + id="tspan4235" + style="font-size:9.86077881px">50</tspan></text> + <path + d="m 296.18084,89.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-24.svg b/challenges/amazonas-24.svg new file mode 100644 index 0000000..8cc533b --- /dev/null +++ b/challenges/amazonas-24.svg @@ -0,0 +1,453 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 3.1060653,201.89394 0,-198.7878769 198.7878647,0 0,198.7878769 z" + id="path4000" + style="fill:none;stroke:#7f7f7f;stroke-width:6.21212149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 29.42,175.58 0,-146.16 146.16,0 0,146.16 z" + id="path4000-3" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:6.09000015;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 54.382351,150.61765 0,-96.235299 96.235299,0 0,96.235299 z" + id="path4000-2" + style="fill:#ffffff;fill-opacity:1;stroke:#7f7f7f;stroke-width:6.01470566;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 79.277779,125.72222 0,-46.444441 46.444441,0 0,46.444441 z" + id="path4000-4" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5.80555534;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-42.479606)" + id="g4049-9"> + <path + d="m 241.2406,89.573331 7.74004,0" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="273.16318" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233-4" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="273.16318" + y="91.925209" + id="tspan4235-6" + style="font-size:9.86077881px">100</tspan></text> + <path + d="m 316.43912,89.592547 -7.74004,0" + id="path2995-9-5" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <path + d="m 31.872581,40.372618 9.169615,0" + id="path2995-0-8" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.353088" + y="43.811108" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.353088" + y="43.811108" + id="tspan4235-6-6" + style="font-size:11.76923466px">150</tspan></text> + <path + d="m 172.96016,40.395724 -9.16961,0" + id="path2995-9-5-1" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 7.65881,14.465983 9.16961,0" + id="path2995-0-8-0" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.445038" + y="18.454386" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0-3" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.445038" + y="18.454386" + id="tspan4235-6-6-0" + style="font-size:11.76923466px">200</tspan></text> + <path + d="m 196.74638,14.489089 -9.16961,0" + id="path2995-9-5-1-4" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-18.872772)" + id="g4049"> + <path + d="m 261.49888,89.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="276.58725" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="276.58725" + y="91.925209" + id="tspan4235" + style="font-size:9.86077881px">50</tspan></text> + <path + d="m 296.18084,89.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-25.svg b/challenges/amazonas-25.svg new file mode 100644 index 0000000..1b0ce8b --- /dev/null +++ b/challenges/amazonas-25.svg @@ -0,0 +1,453 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 3.1060653,201.89394 0,-198.7878769 198.7878647,0 0,198.7878769 z" + id="path4000" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:6.21212149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 29.42,175.58 0,-146.16 146.16,0 0,146.16 z" + id="path4000-3" + style="fill:#ffffff;fill-opacity:1;stroke:#7f7f7f;stroke-width:6.09000015;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 54.382351,150.61765 0,-96.235299 96.235299,0 0,96.235299 z" + id="path4000-2" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:6.01470566;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 79.277779,125.72222 0,-46.444441 46.444441,0 0,46.444441 z" + id="path4000-4" + style="fill:#ffffff;fill-opacity:1;stroke:#7f7f7f;stroke-width:5.80555534;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-42.479606)" + id="g4049-9"> + <path + d="m 241.2406,89.573331 7.74004,0" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="273.16318" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233-4" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="273.16318" + y="91.925209" + id="tspan4235-6" + style="font-size:9.86077881px">100</tspan></text> + <path + d="m 316.43912,89.592547 -7.74004,0" + id="path2995-9-5" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <path + d="m 31.872581,40.372618 9.169615,0" + id="path2995-0-8" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.353088" + y="43.811108" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.353088" + y="43.811108" + id="tspan4235-6-6" + style="font-size:11.76923466px">150</tspan></text> + <path + d="m 172.96016,40.395724 -9.16961,0" + id="path2995-9-5-1" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 7.65881,14.465983 9.16961,0" + id="path2995-0-8-0" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="93.445038" + y="18.454386" + transform="scale(0.97877325,1.0216871)" + id="text4233-4-0-3" + xml:space="preserve" + style="font-size:47.07693863px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="93.445038" + y="18.454386" + id="tspan4235-6-6-0" + style="font-size:11.76923466px">200</tspan></text> + <path + d="m 196.74638,14.489089 -9.16961,0" + id="path2995-9-5-1-4" + style="fill:none;stroke:#000000;stroke-width:1.19353998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <g + transform="matrix(1.1846986,0,0,1.2024474,-227.84119,-18.872772)" + id="g4049"> + <path + d="m 261.49888,89.573331 7.74004,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="276.58725" + y="91.925209" + transform="scale(0.98607787,1.0141187)" + id="text4233" + xml:space="preserve" + style="font-size:39.44311523px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="276.58725" + y="91.925209" + id="tspan4235" + style="font-size:9.86077881px">50</tspan></text> + <path + d="m 296.18084,89.592547 -7.74004,0" + id="path2995-9" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-26.svg b/challenges/amazonas-26.svg new file mode 100644 index 0000000..200a7a2 --- /dev/null +++ b/challenges/amazonas-26.svg @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,202.5 0,-200 175,0 0,175 c -30.05631,0.53715 -87.268596,-0.6037 -125,0 l 0,-125 75,0 0,75 -25,0 0,-50 -25,0 0,75 75,0 0,-125 -125,0 0,175 -25,0" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 202.5,2.4999979 0,200.0000021 -175,0 0,-175.000002 c 30.056305,-0.53715 87.2686,0.6037 125,0 l 0,125.000002 -75.000005,0 0,-75.000002 25.000005,0 0,50.000002 25,0 0,-75.000002 -75.000005,0 0,125.000002 125.000005,0 0,-175.0000021 25,0" + id="path3990-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-27.svg b/challenges/amazonas-27.svg new file mode 100644 index 0000000..ae0f517 --- /dev/null +++ b/challenges/amazonas-27.svg @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,202.5 0,-200 175,0 0,175 c -30.05631,0.53715 -87.268596,-0.6037 -125,0 l 0,-125 75,0 0,75 -25,0 0,-50 -25,0 0,75 75,0 0,-125 -125,0 0,175 -25,0" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 202.5,2.4999979 0,200.0000021 -175,0 0,-175.000002 c 30.056305,-0.53715 87.2686,0.6037 125,0 l 0,125.000002 -75.000005,0 0,-75.000002 25.000005,0 0,50.000002 25,0 0,-75.000002 -75.000005,0 0,125.000002 125.000005,0 0,-175.0000021 25,0" + id="path3990-7" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-28.svg b/challenges/amazonas-28.svg new file mode 100644 index 0000000..dfc9549 --- /dev/null +++ b/challenges/amazonas-28.svg @@ -0,0 +1,369 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="405" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,202.5 0,-200 175,0 0,175 c -30.05631,0.53715 -87.268596,-0.6037 -125,0 l 0,-125 75,0 0,75 -25,0 0,-50 -25,0 0,75 75,0 0,-125 -125,0 0,175 -25,0" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 202.5,27.5 0,175 -175,0 0,-175.000002 c 30.056305,-0.53715 87.2686,0.6037 125,0 l 0,125.000002 -75.000005,0 0,-75.000002 25.000005,0 0,50.000002 25,0 0,-75.000002 -75.000005,0 0,125.000002 125.000005,0 0,-175.0000021 25,0" + id="path3990-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 177.5,177.5 0,-174.9999961 175,0 0,174.9999961 c -30.05631,0.53715 -87.26859,-0.6037 -125,0 l 0,-124.999996 75,0 0,74.999996 -25,0 0,-49.999996 -25,0 0,74.999996 75,0 0,-124.999996 -125,0 0,174.999996 -25,0" + id="path3990-8" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 377.5,2.5000039 0,199.9999961 -175,0 0,-174.999996 c 30.05631,-0.53715 87.2686,0.6037 125,0 l 0,124.999996 -75,0 0,-74.999996 25,0 0,49.999996 25,0 0,-74.999996 -75,0 0,124.999996 125,0 0,-174.9999961 25,0" + id="path3990-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-29.svg b/challenges/amazonas-29.svg new file mode 100644 index 0000000..a5f5aa0 --- /dev/null +++ b/challenges/amazonas-29.svg @@ -0,0 +1,357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="373" + height="130" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 245.2,102.5 -100,-100 -142.7,0 0,125 125,0 0,-75 -75,0 0,25 50,0 0,25 -75,0 0,-75 100,0 100,100 m 0,0 143,0 0,-125 -125,0 0,75 75,0 0,-25 -50,0 0,-25 75,0 0,75 -100.3,0" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-3.svg b/challenges/amazonas-3.svg new file mode 100644 index 0000000..1559e1b --- /dev/null +++ b/challenges/amazonas-3.svg @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 2.5,102.5 c 135.97643,-0.69024 191.5,0 191.5,0" + id="path3003" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="translate(-8.3170911,74.685141)" + id="g5715"> + <g + transform="matrix(0.97234963,0,0,1,0.27715027,0)" + id="g4037"> + <path + d="m 11.522128,100.84054 72.69378,0" + id="path2995" + style="fill:none;stroke:#000000;stroke-width:1.13166273px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 208.04135,100.85782 -72.69379,0" + id="path2995-3" + style="fill:none;stroke:#000000;stroke-width:1.13166285px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" /> + <text + x="100.58539" + y="104.48931" + id="text4233" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="100.58539" + y="104.48931" + id="tspan4235" + style="font-size:10px">194</tspan></text> + </g> + </g> + <path + d="m 98.5,49.69697 c 0,93.18182 0,109.05303 0,109.05303" + id="path4062" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-30.svg b/challenges/amazonas-30.svg new file mode 100644 index 0000000..10a8f97 --- /dev/null +++ b/challenges/amazonas-30.svg @@ -0,0 +1,870 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="373" + height="130" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84-6" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2-6" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-0" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-90" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-312" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 245.2,102.5 -100,-100 -142.7,0 0,125 125,0 0,-75 -51,-1.8e-4 0,-16.875 -8,0 0,16.875 -16,-10.87496 0,9.12505 16,11.12504 0,7.12505 -16,6.24991 0,9.12495 16,-6.87504 0,16.875 8,0 0,-16.875 26,1.8e-4 0,25 -75,0 0,-75 100,0 100,100 m 0,0 143,0 0,-125 -125,0 0,75 75,0 0,-25 -50,0 0,-25 75,0 0,75 -100.3,0" + id="path3990-7" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <g + transform="matrix(0.125,0,0,0.125,79.750585,102.88054)" + id="g4083-1" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.125,0,0,0.125,79.750585,1.9546104)" + id="g4083-1-9" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-7" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-5" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.125,0,0,0.125,282.75059,52.078067)" + id="g4083-1-7" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-2" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.125,0,0,0.125,282.75059,102.80276)" + id="g4083-1-4" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-2" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-6" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-8" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.125,0,0,0.125,282.75059,1.9546111)" + id="g4083-1-5" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-06" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-8" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-84" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.125,0,0,0.125,79.750585,52.078067)" + id="g4083-1-51" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-23" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-62" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-1" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-8" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0,0.125,-0.125,0,371.41638,52.756087)" + id="g4083-1-7-9" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-2-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-9-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-0-1" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.08838835,0.08838835,-0.08838835,0.08838835,186.74918,47.205059)" + id="g4083-1-4-5" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-2-6" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-6-0" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-8-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9-7" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0,0.125,-0.125,0,27.887973,52.756087)" + id="g4083-1-5-1" + style="stroke-width:40;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-06-5" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-8-1" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-84-9" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:40;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> +</svg> diff --git a/challenges/amazonas-31.svg b/challenges/amazonas-31.svg new file mode 100644 index 0000000..3f1b9dd --- /dev/null +++ b/challenges/amazonas-31.svg @@ -0,0 +1,357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="m 2.5,202.5 0,-200 201,0 0,201 c -30.05631,0.53715 -138.268596,-0.6037 -176,0 l 0,-176 150,0 0,150 -125,0 0,-125 100,0 0,100 -75,0 0,-75 50,0 0,50 -25,0 0,-25" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-32.svg b/challenges/amazonas-32.svg new file mode 100644 index 0000000..47e5bcd --- /dev/null +++ b/challenges/amazonas-32.svg @@ -0,0 +1,357 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="289.25693" + height="288.54984" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7-2" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-55" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-5" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-84" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-54" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4046" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4048" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-48" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-3" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4090" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4092" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-31" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4138" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4140" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 143.92136,286.04982 2.5,144.62846 144.62846,2.5 286.75693,144.62846 c -20.8732,21.63284 -98.19755,97.34378 -124.4508,124.45079 L 37.855339,144.62846 143.92136,38.562446 249.98737,144.62846 161.59902,233.01681 73.210678,144.62846 143.92136,73.917785 l 70.71067,70.710675 -53.03301,53.03301 -53.033,-53.03301 35.35534,-35.35534 35.35533,35.35534 -17.67767,17.67767 -17.67766,-17.67767" + id="path3990" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> +</svg> diff --git a/challenges/amazonas-4.svg b/challenges/amazonas-4.svg new file mode 100644 index 0000000..ac65335 --- /dev/null +++ b/challenges/amazonas-4.svg @@ -0,0 +1,331 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="matrix(0.5,0,0,0.5,48.975654,51.68773)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-14.156977,35.973477)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-5.svg b/challenges/amazonas-5.svg new file mode 100644 index 0000000..68c9d86 --- /dev/null +++ b/challenges/amazonas-5.svg @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <path + d="M 145.9293,103.71638 98.201307,131.04906 M 49.973312,103.71638 97.701307,131.04906 M 145.9293,103.03454 98.201307,75.701861 M 49.973312,103.03454 97.701307,75.701861" + id="path2993-9-4-4" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 51.842818,103.50491 97.357404,76.73162 145.54932,103.99169 98.817765,131.00837 53.059785,104.23509" + id="path3974" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-13.462253,37.164002)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-6.svg b/challenges/amazonas-6.svg new file mode 100644 index 0000000..ffb2437 --- /dev/null +++ b/challenges/amazonas-6.svg @@ -0,0 +1,346 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <path + d="M 2.9720008,103.31512 98.076026,48.969958 193.18005,103.73969 97.651455,158.08484 z" + id="path3264" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <path + d="M 145.9293,103.71638 98.201307,131.04906 M 49.973312,103.71638 97.701307,131.04906 M 145.9293,103.03454 98.201307,75.701861 M 49.973312,103.03454 97.701307,75.701861" + id="path2993-9-4-4" + style="fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 51.842818,103.50491 97.357404,76.73162 145.54932,103.99169 98.817765,131.00837 53.059785,104.23509" + id="path3974" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-13.462253,37.164002)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-7.svg b/challenges/amazonas-7.svg new file mode 100644 index 0000000..5596643 --- /dev/null +++ b/challenges/amazonas-7.svg @@ -0,0 +1,399 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="matrix(0.5,0,0,0.5,48.975654,51.68773)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-28.552651,25.23772)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,25.183482,26.578043)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(30.255316,19.03157)" + id="g4321"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7" + style="font-size:10px">82.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-8.svg b/challenges/amazonas-8.svg new file mode 100644 index 0000000..d182446 --- /dev/null +++ b/challenges/amazonas-8.svg @@ -0,0 +1,403 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 52.010014,103.31512 98.712884,75.717965 145.41575,103.5274 98.076026,131.12455 z" + id="path4173" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <g + transform="matrix(0.5,0,0,0.5,48.975654,51.68773)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-28.552651,25.23772)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,25.183482,26.578043)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(30.255316,19.03157)" + id="g4321"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7" + style="font-size:10px">82.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/amazonas-9.svg b/challenges/amazonas-9.svg new file mode 100644 index 0000000..d3f90dc --- /dev/null +++ b/challenges/amazonas-9.svg @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="205" + height="205" + id="svg2"> + <metadata + id="metadata18"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs16"> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-9" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-9" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-6" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-7" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4268" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4270" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-2" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735-4" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-4" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-8" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5733" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5735" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-5" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-1" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5099" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5101" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5095" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5097" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker5091" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path5093" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-3" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-97" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-7" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-0" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4131" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4133" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-69" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-96" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-1" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-87" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="Arrow2Mstart-8" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path3792-40" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + <marker + refX="0" + refY="0" + orient="auto" + id="marker4285" + style="overflow:visible"> + <path + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + id="path4287" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" /> + </marker> + </defs> + <path + d="M 28.048086,102.98439 97.795981,62.525651 169.7778,103.72903 97.795981,144.43599 z" + id="path4840" + style="fill:#7f7f7f;fill-opacity:1;stroke:none" /> + <g + id="g4083"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4" + style="fill:none;stroke:#7f7f7f;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,226.35918,76.594049)" + id="g3994"> + <path + d="m 16.965852,144.30017 0,-43.75725" + id="path2995-0" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <path + d="m 16.987605,45.050682 0,14.58563" + id="path2995-3-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="-85.85524" + y="20.616865" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="-85.85524" + y="20.616865" + id="tspan4235-7" + style="font-size:10px">110</tspan></text> + </g> + <path + d="M 51.248436,103.26932 97.95131,75.672168 144.65418,103.4816 97.31445,131.07875 z" + id="path4173" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + transform="matrix(0.5,0,0,0.5,48.975654,51.68773)" + id="g4083-1" + style="stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4" + style="fill:none;stroke:#7f7f7f;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="matrix(0.5,0.8660254,-0.8660254,0.5,-28.552651,25.23772)" + id="g3994-8"> + <path + d="m 146.16597,-108.12177 0,14.585629" + id="path2995-3-1-8" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="74.397118" + y="150.22018" + transform="matrix(0,-1,1,0,0,0)" + id="text4233-3-5" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="74.397118" + y="150.22018" + id="tspan4235-7-8" + style="font-size:10px">55</tspan></text> + <path + d="m 146.32105,-52.352642 0,-14.585631" + id="path2995-3-1-8-1" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> + <g + transform="matrix(0.74289795,0,0,0.74289795,25.183482,26.578043)" + id="g4083-1-1" + style="stroke-width:6.73039961;stroke-miterlimit:4;stroke-dasharray:none"> + <path + d="M 1.995316,102.69362 97.451307,48.028261" + id="path2993-0-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,102.69362 98.451307,48.028261" + id="path2993-9-2-3" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="m 1.995316,104.0573 95.455991,54.66536" + id="path2993-5-7-0" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + <path + d="M 193.9073,104.0573 98.451307,158.72266" + id="path2993-9-4-4-9" + style="fill:none;stroke:#7f7f7f;stroke-width:6.73039961;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + </g> + <g + transform="translate(30.255316,19.03157)" + id="g4321"> + <path + d="M 92.428426,57.769579 79.796901,65.062393" + id="path2995-3-1-8-3" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + <text + x="4.121335" + y="99.936424" + transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" + id="text4233-3-5-7" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="4.121335" + y="99.936424" + id="tspan4235-7-8-7" + style="font-size:10px">77.5</tspan></text> + <path + d="M 22.004987,98.720153 34.636514,91.427337" + id="path2995-3-1-8-1-7" + style="fill:none;stroke:#000000;stroke-width:1.13199997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart)" /> + </g> +</svg> diff --git a/challenges/help-1.ta b/challenges/help-1.ta new file mode 100644 index 0000000..8634857 --- /dev/null +++ b/challenges/help-1.ta @@ -0,0 +1,9 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "right", 543, 53, [null, 2, 3]], +[2, ["number", 60.0], 601, 53, [1, null]], +[3, "forward", 543, 95, [1, 4, 5]], +[4, ["number", 110.0], 614, 95, [3, null]], +[5, "right", 543, 137, [3, 6, 7]], +[6, ["number", 60.0], 601, 137, [5, null]], +[7, "forward", 543, 179, [5, 8, null]], +[8, ["number", 110.0], 614, 179, [7, null]]] diff --git a/challenges/help-10.ta b/challenges/help-10.ta new file mode 100644 index 0000000..85275f6 --- /dev/null +++ b/challenges/help-10.ta @@ -0,0 +1,47 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "penup", 306, 135, [null, 6]], +[5, "pendown", 306, 261, [6, null]], +[6, ["setxy2", 0], 306, 177, [4, 7, 8, 5]], +[7, ["number", 50], 364, 177, [6, null]], +[8, ["number", 0], 364, 219, [6, null]], +[9, "repeat", 12, 211, [24, 10, 11, 19]], +[10, ["number", 2], 63, 211, [9, null]], +[11, "right", 77, 271, [9, 12, 13]], +[12, ["number", 60], 135, 271, [11, null]], +[13, "forward", 77, 313, [11, 22, 14]], +[14, "right", 77, 355, [13, 15, 16]], +[15, ["number", 60], 135, 355, [14, null]], +[16, "forward", 77, 397, [14, 23, 17]], +[17, "right", 77, 439, [16, 18, null]], +[18, ["number", 60], 135, 439, [17, null]], +[19, ["vspace", 0], 12, 289, [9, null]], +[20, "storeinbox1", 475, 53, [45, 21, 25]], +[21, ["number", 110], 593, 53, [20, null]], +[22, "box1", 148, 313, [13, null]], +[23, "box1", 148, 397, [16, null]], +[24, "hat1", 12, 169, [null, 9]], +[25, "stack1", 475, 95, [20, 46]], +[26, "storeinbox1", 592, 177, [40, 27, 28]], +[27, ["number", 82.5], 710, 177, [26, null]], +[28, "stack1", 592, 219, [26, 39]], +[29, "penup", 350, 316, [null, 30]], +[30, ["setxy2", 0], 350, 358, [29, 31, 32, 33]], +[31, ["number", 25], 408, 358, [30, null]], +[32, ["number", 0], 408, 400, [30, null]], +[33, "pendown", 350, 442, [30, null]], +[34, "storeinbox1", 613, 412, [38, 35, 36]], +[35, ["number", 55], 731, 412, [34, null]], +[36, "stack1", 613, 454, [34, 37]], +[37, "stopfill", 613, 496, [36, null]], +[38, "startfill", 613, 370, [41, 34]], +[39, "stopfill", 592, 261, [28, null]], +[40, "startfill", 592, 135, [43, 26]], +[41, "setcolor", 613, 328, [null, 42, 38]], +[42, "red", 690, 328, [41, null]], +[43, "setcolor", 592, 93, [null, 44, 40]], +[44, "white", 669, 93, [43, null]], +[45, "startfill", 475, 11, [null, 20]], +[46, "stopfill", 475, 137, [25, null]]] diff --git a/challenges/help-11.ta b/challenges/help-11.ta new file mode 100644 index 0000000..786d344 --- /dev/null +++ b/challenges/help-11.ta @@ -0,0 +1,17 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "right", 564, 78, [13, 5, 6]], +[5, ["number", 60], 622, 78, [4, null]], +[6, "forward", 564, 120, [4, 12, 7]], +[7, "right", 564, 162, [6, 8, 9]], +[8, ["number", 60], 622, 162, [7, null]], +[9, "forward", 564, 204, [7, 14, 10]], +[10, "right", 564, 246, [9, 11, 15]], +[11, ["number", 60], 622, 246, [10, null]], +[12, ["number", 110.0], 635, 120, [6, null]], +[13, "hat1", 564, 36, [null, 4]], +[14, ["number", 110.0], 635, 204, [9, null]], +[15, "left", 564, 288, [10, 16, null]], +[16, ["number", 180.0], 622, 288, [15, null]]] diff --git a/challenges/help-12.ta b/challenges/help-12.ta new file mode 100644 index 0000000..27567c7 --- /dev/null +++ b/challenges/help-12.ta @@ -0,0 +1,36 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "right", 45, 198, [12, 5, 6]], +[5, ["number", 60], 103, 198, [4, null]], +[6, "forward", 45, 240, [4, 29, 7]], +[7, "right", 45, 282, [6, 8, 9]], +[8, ["number", 60], 103, 282, [7, null]], +[9, "forward", 45, 324, [7, 30, 10]], +[10, "right", 45, 366, [9, 11, 13]], +[11, ["number", 60], 103, 366, [10, null]], +[12, "hat1", 45, 156, [null, 4]], +[13, "left", 45, 408, [10, 14, null]], +[14, ["number", 180.0], 103, 408, [13, null]], +[15, "penup", 375, 46, [null, 17]], +[16, "pendown", 375, 172, [17, null]], +[17, ["setxy2", 0], 375, 88, [15, 18, 19, 16]], +[18, ["number", 50.0], 433, 88, [17, null]], +[19, ["number", 0], 433, 130, [17, null]], +[20, "penup", 588, 43, [null, 21]], +[21, ["setxy2", 0], 588, 85, [20, 22, 23, 24]], +[22, ["number", 240.0], 646, 85, [21, null]], +[23, ["number", 0], 646, 127, [21, null]], +[24, "pendown", 588, 169, [21, null]], +[25, "storeinbox1", 307, 332, [null, 26, null]], +[26, ["number", 110.0], 425, 332, [25, null]], +[27, "storeinbox1", 308, 400, [null, 28, null]], +[28, ["number", 55.0], 426, 400, [27, null]], +[29, "box1", 116, 240, [6, null]], +[30, "box1", 116, 324, [9, null]], +[31, "penup", 800, 35, [null, 32]], +[32, ["setxy2", 0], 800, 77, [31, 33, 34, 35]], +[33, ["number", 430.0], 858, 77, [32, null]], +[34, ["number", 0], 858, 119, [32, null]], +[35, "pendown", 800, 161, [32, null]]] diff --git a/challenges/help-13.ta b/challenges/help-13.ta new file mode 100644 index 0000000..23e9fd8 --- /dev/null +++ b/challenges/help-13.ta @@ -0,0 +1,44 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "right", 45, 198, [12, 5, 6]], +[5, ["number", 60], 103, 198, [4, null]], +[6, "forward", 45, 240, [4, 29, 7]], +[7, "right", 45, 282, [6, 8, 9]], +[8, ["number", 60], 103, 282, [7, null]], +[9, "forward", 45, 324, [7, 30, 10]], +[10, "right", 45, 366, [9, 11, 13]], +[11, ["number", 60], 103, 366, [10, null]], +[12, "hat1", 45, 156, [null, 4]], +[13, "left", 45, 408, [10, 14, null]], +[14, ["number", 180.0], 103, 408, [13, null]], +[15, "penup", 375, 46, [null, 17]], +[16, "pendown", 375, 172, [17, null]], +[17, ["setxy2", 0], 375, 88, [15, 18, 19, 16]], +[18, ["number", 50.0], 433, 88, [17, null]], +[19, ["number", 0], 433, 130, [17, null]], +[20, "penup", 588, 43, [null, 21]], +[21, ["setxy2", 0], 588, 85, [20, 22, 23, 24]], +[22, ["number", 240.0], 646, 85, [21, null]], +[23, ["number", 0], 646, 127, [21, null]], +[24, "pendown", 588, 169, [21, null]], +[25, "storeinbox1", 307, 332, [null, 26, null]], +[26, ["number", 110.0], 425, 332, [25, null]], +[27, "storeinbox1", 308, 400, [null, 28, null]], +[28, ["number", 55.0], 426, 400, [27, null]], +[29, "box1", 116, 240, [6, null]], +[30, "box1", 116, 324, [9, null]], +[31, "penup", 800, 35, [null, 32]], +[32, ["setxy2", 0], 800, 77, [31, 33, 34, 35]], +[33, ["number", 430.0], 858, 77, [32, null]], +[34, ["number", 0], 858, 119, [32, null]], +[35, "pendown", 800, 161, [32, null]], +[36, "stopfill", 599, 454, [42, null]], +[37, "startfill", 599, 244, [null, 38]], +[38, "stack1", 599, 286, [37, 40]], +[39, "stack1", 599, 370, [40, 42]], +[40, "right", 599, 328, [38, 41, 39]], +[41, ["number", 180.0], 657, 328, [40, null]], +[42, "right", 599, 412, [39, 43, 36]], +[43, ["number", 180.0], 657, 412, [42, null]]] diff --git a/challenges/help-14.ta b/challenges/help-14.ta new file mode 100644 index 0000000..f11f085 --- /dev/null +++ b/challenges/help-14.ta @@ -0,0 +1,59 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "right", 45, 198, [12, 5, 6]], +[5, ["number", 60], 103, 198, [4, null]], +[6, "forward", 45, 240, [4, 29, 7]], +[7, "right", 45, 282, [6, 8, 9]], +[8, ["number", 60], 103, 282, [7, null]], +[9, "forward", 45, 324, [7, 30, 10]], +[10, "right", 45, 366, [9, 11, 13]], +[11, ["number", 60], 103, 366, [10, null]], +[12, "hat1", 45, 156, [null, 4]], +[13, "left", 45, 408, [10, 14, null]], +[14, ["number", 180.0], 103, 408, [13, null]], +[15, "penup", 370, 18, [null, 17]], +[16, "pendown", 370, 144, [17, null]], +[17, ["setxy2", 0], 370, 60, [15, 18, 19, 16]], +[18, ["number", 50.0], 428, 60, [17, null]], +[19, ["number", 0], 428, 102, [17, null]], +[20, "penup", 595, 14, [null, 21]], +[21, ["setxy2", 0], 595, 56, [20, 22, 23, 24]], +[22, ["number", 240.0], 653, 56, [21, null]], +[23, ["number", 0], 653, 98, [21, null]], +[24, "pendown", 595, 140, [21, null]], +[25, "storeinbox1", 292, 510, [null, 26, null]], +[26, ["number", 110.0], 410, 510, [25, null]], +[27, "storeinbox1", 291, 567, [null, 28, null]], +[28, ["number", 55.0], 409, 567, [27, null]], +[29, "box1", 116, 240, [6, null]], +[30, "box1", 116, 324, [9, null]], +[31, "penup", 820, 12, [null, 32]], +[32, ["setxy2", 0], 820, 54, [31, 33, 34, 35]], +[33, ["number", 430.0], 878, 54, [32, null]], +[34, ["number", 0], 878, 96, [32, null]], +[35, "pendown", 820, 138, [32, null]], +[36, "stack1", 613, 456, [null, 38]], +[37, "stack1", 613, 540, [38, 40]], +[38, "right", 613, 498, [36, 39, 37]], +[39, ["number", 180.0], 671, 498, [38, null]], +[40, "right", 613, 582, [37, 41, null]], +[41, ["number", 180.0], 671, 582, [40, null]], +[42, "storeinbox1", 291, 450, [null, 43, null]], +[43, ["number", 82.5], 409, 450, [42, null]], +[44, "penup", 371, 218, [null, 45]], +[45, ["setxy2", 0], 371, 260, [44, 46, 47, 48]], +[46, ["number", 25.0], 429, 260, [45, null]], +[47, ["number", 0], 429, 302, [45, null]], +[48, "pendown", 371, 344, [45, null]], +[49, "penup", 598, 208, [null, 50]], +[50, ["setxy2", 0], 598, 250, [49, 51, 52, 53]], +[51, ["number", 215.0], 656, 250, [50, null]], +[52, ["number", 0], 656, 292, [50, null]], +[53, "pendown", 598, 334, [50, null]], +[54, "penup", 820, 205, [null, 55]], +[55, ["setxy2", 0], 820, 247, [54, 56, 57, 58]], +[56, ["number", 405.0], 878, 247, [55, null]], +[57, ["number", 0], 878, 289, [55, null]], +[58, "pendown", 820, 331, [55, null]]] diff --git a/challenges/help-15.ta b/challenges/help-15.ta new file mode 100644 index 0000000..4c0f526 --- /dev/null +++ b/challenges/help-15.ta @@ -0,0 +1,73 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "right", 45, 198, [12, 5, 6]], +[5, ["number", 60], 103, 198, [4, null]], +[6, "forward", 45, 240, [4, 29, 7]], +[7, "right", 45, 282, [6, 8, 9]], +[8, ["number", 60], 103, 282, [7, null]], +[9, "forward", 45, 324, [7, 30, 10]], +[10, "right", 45, 366, [9, 11, 13]], +[11, ["number", 60], 103, 366, [10, null]], +[12, "hat1", 45, 156, [null, 4]], +[13, "left", 45, 408, [10, 14, null]], +[14, ["number", 180.0], 103, 408, [13, null]], +[15, "penup", 370, 18, [null, 17]], +[16, "pendown", 370, 144, [17, null]], +[17, ["setxy2", 0], 370, 60, [15, 18, 19, 16]], +[18, ["number", 50.0], 428, 60, [17, null]], +[19, ["number", 0], 428, 102, [17, null]], +[20, "penup", 595, 14, [null, 21]], +[21, ["setxy2", 0], 595, 56, [20, 22, 23, 24]], +[22, ["number", 240.0], 653, 56, [21, null]], +[23, ["number", 0], 653, 98, [21, null]], +[24, "pendown", 595, 140, [21, null]], +[25, "storeinbox1", 292, 510, [null, 26, null]], +[26, ["number", 110.0], 410, 510, [25, null]], +[27, "storeinbox1", 291, 567, [null, 28, null]], +[28, ["number", 55.0], 409, 567, [27, null]], +[29, "box1", 116, 240, [6, null]], +[30, "box1", 116, 324, [9, null]], +[31, "penup", 820, 12, [null, 32]], +[32, ["setxy2", 0], 820, 54, [31, 33, 34, 35]], +[33, ["number", 430.0], 878, 54, [32, null]], +[34, ["number", 0], 878, 96, [32, null]], +[35, "pendown", 820, 138, [32, null]], +[36, "stopfill", 604, 702, [42, null]], +[37, "startfill", 604, 492, [61, 38]], +[38, "stack1", 604, 534, [37, 40]], +[39, "stack1", 604, 618, [40, 42]], +[40, "right", 604, 576, [38, 41, 39]], +[41, ["number", 180.0], 662, 576, [40, null]], +[42, "right", 604, 660, [39, 43, 36]], +[43, ["number", 180.0], 662, 660, [42, null]], +[44, "storeinbox1", 291, 450, [null, 45, null]], +[45, ["number", 82.5], 409, 450, [44, null]], +[46, "penup", 371, 218, [null, 47]], +[47, ["setxy2", 0], 371, 260, [46, 48, 49, 50]], +[48, ["number", 25.0], 429, 260, [47, null]], +[49, ["number", 0], 429, 302, [47, null]], +[50, "pendown", 371, 344, [47, null]], +[51, "penup", 598, 208, [null, 52]], +[52, ["setxy2", 0], 598, 250, [51, 53, 54, 55]], +[53, ["number", 215.0], 656, 250, [52, null]], +[54, ["number", 0], 656, 292, [52, null]], +[55, "pendown", 598, 334, [52, null]], +[56, "penup", 820, 205, [null, 57]], +[57, ["setxy2", 0], 820, 247, [56, 58, 59, 60]], +[58, ["number", 405.0], 878, 247, [57, null]], +[59, ["number", 0], 878, 289, [57, null]], +[60, "pendown", 820, 331, [57, null]], +[61, "setcolor", 604, 450, [null, 62, 37]], +[62, "white", 681, 450, [61, null]], +[63, "setcolor", 832, 451, [null, 72, 64]], +[64, "startfill", 832, 493, [63, 65]], +[65, "stack1", 832, 535, [64, 66]], +[66, "right", 832, 577, [65, 67, 68]], +[67, ["number", 180], 890, 577, [66, null]], +[68, "stack1", 832, 619, [66, 69]], +[69, "right", 832, 661, [68, 70, 71]], +[70, ["number", 180], 890, 661, [69, null]], +[71, "stopfill", 832, 703, [69, null]], +[72, "red", 909, 451, [63, null]]] diff --git a/challenges/help-16.ta b/challenges/help-16.ta new file mode 100644 index 0000000..014b9bd --- /dev/null +++ b/challenges/help-16.ta @@ -0,0 +1,11 @@ +[[0, "repeat", 112, 150, [null, 1, 3, 2]], +[1, ["number", 3.0], 163, 150, [0, null]], +[2, ["vspace", 0], 112, 228, [0, null]], +[3, "forward", 177, 210, [0, 4, 5]], +[4, ["number", 40.0], 248, 210, [3, null]], +[5, "right", 177, 252, [3, 6, 7]], +[6, ["number", 90], 235, 252, [5, null]], +[7, "forward", 177, 294, [5, 8, 9]], +[8, ["number", 40.0], 248, 294, [7, null]], +[9, "left", 177, 336, [7, 10, null]], +[10, ["number", 90], 235, 336, [9, null]]] diff --git a/challenges/help-17.ta b/challenges/help-17.ta new file mode 100644 index 0000000..e0753d7 --- /dev/null +++ b/challenges/help-17.ta @@ -0,0 +1,16 @@ +[[0, "repeat", 112, 150, [null, 1, 3, 2]], +[1, ["number", 3.0], 163, 150, [0, null]], +[2, ["vspace", 0], 112, 228, [0, null]], +[3, "forward", 177, 210, [0, 4, 5]], +[4, ["number", 40.0], 248, 210, [3, null]], +[5, "right", 177, 252, [3, 6, 7]], +[6, ["number", 90], 235, 252, [5, null]], +[7, "forward", 177, 294, [5, 8, 9]], +[8, ["number", 40.0], 248, 294, [7, null]], +[9, "left", 177, 336, [7, 10, null]], +[10, ["number", 90], 235, 336, [9, null]], +[11, "penup", 553, 37, [null, 13]], +[12, "pendown", 553, 163, [13, null]], +[13, ["setxy2", 0], 553, 79, [11, 14, 15, 12]], +[14, ["number", 80.0], 611, 79, [13, null]], +[15, ["number", 0], 611, 121, [13, null]]] diff --git a/challenges/help-18.ta b/challenges/help-18.ta new file mode 100644 index 0000000..5de3906 --- /dev/null +++ b/challenges/help-18.ta @@ -0,0 +1,25 @@ +[[0, "repeat", 112, 150, [null, 1, 3, 2]], +[1, ["number", 3.0], 163, 150, [0, null]], +[2, ["vspace", 0], 112, 228, [0, null]], +[3, "forward", 177, 210, [0, 4, 5]], +[4, ["number", 40.0], 248, 210, [3, null]], +[5, "right", 177, 252, [3, 6, 7]], +[6, ["number", 90], 235, 252, [5, null]], +[7, "forward", 177, 294, [5, 8, 9]], +[8, ["number", 40.0], 248, 294, [7, null]], +[9, "left", 177, 336, [7, 10, null]], +[10, ["number", 90], 235, 336, [9, null]], +[11, "penup", 553, 37, [null, 13]], +[12, "pendown", 553, 163, [13, null]], +[13, ["setxy2", 0], 553, 79, [11, 14, 15, 12]], +[14, ["number", 80.0], 611, 79, [13, null]], +[15, ["number", 0], 611, 121, [13, null]], +[16, "stopfill", 555, 410, [24, null]], +[17, "startfill", 555, 248, [null, 22]], +[18, "forward", 620, 350, [22, 19, 20]], +[19, ["number", 40.0], 691, 350, [18, null]], +[20, "right", 620, 392, [18, 21, null]], +[21, ["number", 90], 678, 392, [20, null]], +[22, "repeat", 555, 290, [17, 23, 18, 24]], +[23, ["number", 4], 606, 290, [22, null]], +[24, ["vspace", 0], 555, 368, [22, 16]]] diff --git a/challenges/help-19.ta b/challenges/help-19.ta new file mode 100644 index 0000000..cf8e68a --- /dev/null +++ b/challenges/help-19.ta @@ -0,0 +1,36 @@ +[[0, "repeat", 52, 207, [25, 1, 3, 2]], +[1, ["number", 3.0], 103, 207, [0, null]], +[2, ["vspace", 0], 52, 285, [0, null]], +[3, "forward", 117, 267, [0, 4, 5]], +[4, ["number", 40.0], 188, 267, [3, null]], +[5, "right", 117, 309, [3, 6, 7]], +[6, ["number", 90], 175, 309, [5, null]], +[7, "forward", 117, 351, [5, 8, 9]], +[8, ["number", 40.0], 188, 351, [7, null]], +[9, "left", 117, 393, [7, 10, null]], +[10, ["number", 90], 175, 393, [9, null]], +[11, "penup", 553, 37, [null, 13]], +[12, "pendown", 553, 163, [13, null]], +[13, ["setxy2", 0], 553, 79, [11, 14, 15, 12]], +[14, ["number", 80.0], 611, 79, [13, null]], +[15, ["number", 0], 611, 121, [13, null]], +[16, "stopfill", 555, 410, [24, null]], +[17, "startfill", 555, 248, [null, 22]], +[18, "forward", 620, 350, [22, 19, 20]], +[19, ["number", 40.0], 691, 350, [18, null]], +[20, "right", 620, 392, [18, 21, null]], +[21, ["number", 90], 678, 392, [20, null]], +[22, "repeat", 555, 290, [17, 23, 18, 24]], +[23, ["number", 4], 606, 290, [22, null]], +[24, ["vspace", 0], 555, 368, [22, 16]], +[25, "hat1", 52, 165, [null, 0]], +[26, "stack1", 309, 105, [29, 27]], +[27, "right", 309, 147, [26, 28, 32]], +[28, ["number", 90.0], 367, 147, [27, null]], +[29, "repeat", 244, 45, [34, 30, 26, 31]], +[30, ["number", 4], 295, 45, [29, null]], +[31, ["vspace", 0], 244, 123, [29, 35]], +[32, "back", 309, 189, [27, 33, null]], +[33, ["number", 40.0], 367, 189, [32, null]], +[34, "startfill", 244, 3, [null, 29]], +[35, "stopfill", 244, 165, [31, null]]] diff --git a/challenges/help-2.ta b/challenges/help-2.ta new file mode 100644 index 0000000..c066b34 --- /dev/null +++ b/challenges/help-2.ta @@ -0,0 +1,13 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "right", 556, 18, [null, 2, 3]], +[2, ["number", 60.0], 614, 18, [1, null]], +[3, "forward", 556, 60, [1, 4, 5]], +[4, ["number", 110.0], 627, 60, [3, null]], +[5, "right", 556, 102, [3, 6, 7]], +[6, ["number", 60.0], 614, 102, [5, null]], +[7, "forward", 556, 144, [5, 8, 9]], +[8, ["number", 110.0], 627, 144, [7, null]], +[9, "right", 556, 186, [7, 10, 11]], +[10, ["number", 150.0], 614, 186, [9, null]], +[11, "forward", 556, 228, [9, 12, null]], +[12, ["number", 194.0], 627, 228, [11, null]]] diff --git a/challenges/help-20.ta b/challenges/help-20.ta new file mode 100644 index 0000000..ebb6f01 --- /dev/null +++ b/challenges/help-20.ta @@ -0,0 +1,35 @@ +[[0, "repeat", 52, 207, [22, 1, 3, 2]], +[1, ["number", 3.0], 103, 207, [0, null]], +[2, ["vspace", 0], 52, 285, [0, null]], +[3, "forward", 117, 267, [0, 4, 5]], +[4, ["number", 40.0], 188, 267, [3, null]], +[5, "right", 117, 309, [3, 6, 7]], +[6, ["number", 90], 175, 309, [5, null]], +[7, "forward", 117, 351, [5, 8, 9]], +[8, ["number", 40.0], 188, 351, [7, null]], +[9, "left", 117, 393, [7, 10, null]], +[10, ["number", 90], 175, 393, [9, null]], +[11, "penup", 549, 18, [null, 13]], +[12, "pendown", 549, 144, [13, null]], +[13, ["setxy2", 0], 549, 60, [11, 14, 15, 12]], +[14, ["number", 80.0], 607, 60, [13, null]], +[15, ["number", 0], 607, 102, [13, null]], +[16, "forward", 613, 374, [20, 17, 18]], +[17, ["number", 40.0], 684, 374, [16, null]], +[18, "right", 613, 416, [16, 19, null]], +[19, ["number", 90], 671, 416, [18, null]], +[20, "repeat", 548, 314, [null, 21, 16, null]], +[21, ["number", 4], 599, 314, [20, null]], +[22, "hat1", 52, 165, [null, 0]], +[23, "stack1", 338, 119, [26, 24]], +[24, "right", 338, 161, [23, 25, 28]], +[25, ["number", 90.0], 396, 161, [24, null]], +[26, "repeat", 273, 59, [null, 27, 23, null]], +[27, ["number", 4], 324, 59, [26, null]], +[28, "back", 338, 203, [24, 29, null]], +[29, ["number", 40.0], 396, 203, [28, null]], +[30, "penup", 757, 13, [null, 31]], +[31, ["setxy2", 0], 757, 55, [30, 32, 33, 34]], +[32, ["number", 280.0], 815, 55, [31, null]], +[33, ["number", 0], 815, 97, [31, null]], +[34, "pendown", 757, 139, [31, null]]] diff --git a/challenges/help-21.ta b/challenges/help-21.ta new file mode 100644 index 0000000..9e160c9 --- /dev/null +++ b/challenges/help-21.ta @@ -0,0 +1,58 @@ +[[0, "forward", 31, 189, [19, 1, 2]], +[1, ["number", 40.0], 102, 189, [0, null]], +[2, "right", 31, 231, [0, 3, 4]], +[3, ["number", 90], 89, 231, [2, null]], +[4, "forward", 31, 273, [2, 5, 6]], +[5, ["number", 40.0], 102, 273, [4, null]], +[6, "left", 31, 315, [4, 7, null]], +[7, ["number", 90], 89, 315, [6, null]], +[8, "penup", 549, 18, [null, 10]], +[9, "pendown", 549, 144, [10, null]], +[10, ["setxy2", 0], 549, 60, [8, 11, 12, 9]], +[11, ["number", 80.0], 607, 60, [10, null]], +[12, ["number", 0], 607, 102, [10, null]], +[13, "forward", 620, 415, [17, 14, 15]], +[14, ["number", 40.0], 691, 415, [13, null]], +[15, "right", 620, 457, [13, 16, null]], +[16, ["number", 90], 678, 457, [15, null]], +[17, "repeat", 555, 355, [null, 18, 13, null]], +[18, ["number", 4], 606, 355, [17, null]], +[19, "hat1", 31, 147, [null, 0]], +[20, "stack1", 359, 148, [26, null]], +[21, "penup", 757, 13, [null, 22]], +[22, ["setxy2", 0], 757, 55, [21, 23, 24, 25]], +[23, ["number", 240.0], 815, 55, [22, null]], +[24, ["number", 0], 815, 97, [22, null]], +[25, "pendown", 757, 139, [22, null]], +[26, "repeat", 294, 88, [56, 27, 20, 28]], +[27, ["number", 3.0], 345, 88, [26, null]], +[28, ["vspace", 0], 294, 166, [26, 29]], +[29, "right", 294, 208, [28, 30, 31]], +[30, ["number", 180.0], 352, 208, [29, null]], +[31, "repeat", 294, 250, [29, 32, 35, 33]], +[32, ["number", 2.0], 345, 250, [31, null]], +[33, ["vspace", 0], 294, 328, [31, 45]], +[34, "stack1", 359, 472, [47, null]], +[35, "stack2", 359, 310, [31, null]], +[36, "forward", 32, 405, [44, 37, 42]], +[37, ["number", 40], 103, 405, [36, null]], +[38, "right", 32, 531, [40, 39, null]], +[39, ["number", 90], 90, 531, [38, null]], +[40, "forward", 32, 489, [42, 41, 38]], +[41, ["number", 40], 103, 489, [40, null]], +[42, "left", 32, 447, [36, 43, 40]], +[43, ["number", 90], 90, 447, [42, null]], +[44, "hat2", 32, 363, [null, 36]], +[45, "right", 294, 370, [33, 46, 47]], +[46, ["number", 180.0], 352, 370, [45, null]], +[47, "repeat", 294, 412, [45, 48, 34, 49]], +[48, ["number", 2.0], 345, 412, [47, null]], +[49, ["vspace", 0], 294, 490, [47, 50]], +[50, "right", 294, 532, [49, 51, 52]], +[51, ["number", 180.0], 352, 532, [50, null]], +[52, "repeat", 294, 574, [50, 53, 55, 54]], +[53, ["number", 2.0], 345, 574, [52, null]], +[54, ["vspace", 0], 294, 652, [52, null]], +[55, "stack2", 359, 634, [52, null]], +[56, "repeat", 229, 28, [null, 57, 26, null]], +[57, ["number", 2.0], 280, 28, [56, null]]] diff --git a/challenges/help-22.ta b/challenges/help-22.ta new file mode 100644 index 0000000..c76c535 --- /dev/null +++ b/challenges/help-22.ta @@ -0,0 +1,9 @@ +[[0, "forward", 276, 294, [4, 1, 2]], +[1, ["number", 50], 347, 294, [0, null]], +[2, "left", 276, 336, [0, 3, null]], +[3, ["number", 60], 334, 336, [2, null]], +[4, "repeat", 211, 234, [null, 5, 0, 6]], +[5, ["number", 6], 262, 234, [4, null]], +[6, ["vspace", 20], 211, 312, [4, 7]], +[7, "left", 211, 394, [6, 8, null]], +[8, ["number", 45], 269, 394, [7, null]]] diff --git a/challenges/help-23.ta b/challenges/help-23.ta new file mode 100644 index 0000000..afaf421 --- /dev/null +++ b/challenges/help-23.ta @@ -0,0 +1,9 @@ +[[0, "forward", 309, 368, [4, 1, 2]], +[1, ["number", 150], 380, 368, [0, null]], +[2, "left", 309, 410, [0, 3, null]], +[3, ["number", 120], 367, 410, [2, null]], +[4, "repeat", 244, 308, [null, 5, 0, 6]], +[5, ["number", 3.0], 295, 308, [4, null]], +[6, ["vspace", 20], 244, 386, [4, 7]], +[7, "left", 244, 468, [6, 8, null]], +[8, ["number", 45], 302, 468, [7, null]]] diff --git a/challenges/help-24.ta b/challenges/help-24.ta new file mode 100644 index 0000000..97e457f --- /dev/null +++ b/challenges/help-24.ta @@ -0,0 +1,9 @@ +[[0, "forward", 281, 313, [4, 1, 2]], +[1, ["number", 100], 352, 313, [0, null]], +[2, "left", 281, 355, [0, 3, null]], +[3, ["number", 120], 339, 355, [2, null]], +[4, "repeat", 216, 253, [null, 5, 0, 6]], +[5, ["number", 3], 267, 253, [4, null]], +[6, ["vspace", 20], 216, 331, [4, 7]], +[7, "left", 216, 413, [6, 8, null]], +[8, ["number", 60], 274, 413, [7, null]]]
\ No newline at end of file diff --git a/challenges/help-25.ta b/challenges/help-25.ta new file mode 100644 index 0000000..06ec5b0 --- /dev/null +++ b/challenges/help-25.ta @@ -0,0 +1,15 @@ +[[0, "forward", 291, 280, [4, 1, 2]], +[1, ["number", 25], 362, 280, [0, null]], +[2, "left", 291, 322, [0, 3, 9]], +[3, ["number", 90], 349, 322, [2, null]], +[4, "repeat", 226, 220, [null, 5, 0, 6]], +[5, ["number", 2], 277, 220, [4, null]], +[6, ["vspace", 60], 226, 298, [4, 7]], +[7, "left", 226, 460, [6, 8, 13]], +[8, ["number", 45], 284, 460, [7, null]], +[9, "forward", 291, 364, [2, 10, 11]], +[10, ["number", 75], 362, 364, [9, null]], +[11, "left", 291, 406, [9, 12, null]], +[12, ["number", 90], 349, 406, [11, null]], +[13, "back", 226, 502, [7, 14, null]], +[14, ["number", 25], 284, 502, [13, null]]] diff --git a/challenges/help-26.ta b/challenges/help-26.ta new file mode 100644 index 0000000..9618343 --- /dev/null +++ b/challenges/help-26.ta @@ -0,0 +1,25 @@ +[[0, "forward", 95, 411, [7, 6, 11]], +[1, "storeinbox1", 30, 141, [null, 2, 17]], +[2, ["number", 200.0], 148, 141, [1, null]], +[3, "storeinbox1", 30, 267, [19, 10, 9]], +[4, ["number", 25.0], 226, 309, [10, null]], +[5, "box1", 202, 267, [10, null]], +[6, "box1", 166, 411, [0, null]], +[7, "repeat", 30, 351, [9, 8, 0, null]], +[8, ["number", 4], 81, 351, [7, null]], +[9, ["vspace", 0], 30, 309, [3, 7]], +[10, ["minus2", 0], 148, 267, [3, 5, 4]], +[11, "right", 95, 453, [0, 12, 13]], +[12, ["number", 90], 153, 453, [11, null]], +[13, "forward", 95, 495, [11, 14, 15]], +[14, "box1", 166, 495, [13, null]], +[15, "right", 95, 537, [13, 16, 21]], +[16, ["number", 90], 153, 537, [15, null]], +[17, "forward", 30, 183, [1, 18, 19]], +[18, "box1", 101, 183, [17, null]], +[19, "right", 30, 225, [17, 20, 3]], +[20, ["number", 90], 88, 225, [19, null]], +[21, "storeinbox1", 95, 579, [15, 22, null]], +[22, ["minus2", 0], 213, 579, [21, 23, 24]], +[23, "box1", 267, 579, [22, null]], +[24, ["number", 50.0], 291, 621, [22, null]]] diff --git a/challenges/help-27.ta b/challenges/help-27.ta new file mode 100644 index 0000000..6cd8eca --- /dev/null +++ b/challenges/help-27.ta @@ -0,0 +1,17 @@ +[[0, "forward", 295, 299, [12, 1, 2]], +[1, ["number", 50], 366, 299, [0, null]], +[2, "right", 295, 341, [0, 3, 4]], +[3, ["number", 90], 353, 341, [2, null]], +[4, "forward", 295, 383, [2, 5, 6]], +[5, ["number", 50], 366, 383, [4, null]], +[6, "left", 295, 425, [4, 7, 8]], +[7, ["number", 90], 353, 425, [6, null]], +[8, "forward", 295, 467, [6, 9, 10]], +[9, ["number", 50], 366, 467, [8, null]], +[10, "right", 295, 509, [8, 11, null]], +[11, ["number", 90], 353, 509, [10, null]], +[12, "repeat", 230, 239, [null, 13, 0, 14]], +[13, ["number", 4], 281, 239, [12, null]], +[14, ["vspace", 100], 230, 317, [12, 15]], +[15, "right", 230, 559, [14, 16, null]], +[16, ["number", 45], 288, 559, [15, null]]] diff --git a/challenges/help-28.ta b/challenges/help-28.ta new file mode 100644 index 0000000..2d250d1 --- /dev/null +++ b/challenges/help-28.ta @@ -0,0 +1,26 @@ +[[0, "forward", 540, 6, [null, 1, null]], +[1, ["number", 100], 611, 6, [0, null]], +[2, "right", 292, 147, [24, 3, 4]], +[3, ["number", 90], 350, 147, [2, null]], +[4, "forward", 292, 189, [2, 5, 10]], +[5, ["number", 50], 363, 189, [4, null]], +[6, "left", 292, 315, [8, 7, 12]], +[7, ["number", 90], 350, 315, [6, null]], +[8, "forward", 292, 273, [10, 9, 6]], +[9, ["number", 50], 363, 273, [8, null]], +[10, "right", 292, 231, [4, 11, 8]], +[11, ["number", 90], 350, 231, [10, null]], +[12, "forward", 292, 357, [6, 13, 14]], +[13, ["number", 50], 363, 357, [12, null]], +[14, "right", 292, 399, [12, 15, 16]], +[15, ["number", 90], 350, 399, [14, null]], +[16, "forward", 292, 441, [14, 17, 18]], +[17, ["number", 50], 363, 441, [16, null]], +[18, "right", 292, 483, [16, 19, 20]], +[19, ["number", 90], 350, 483, [18, null]], +[20, "forward", 292, 525, [18, 21, 22]], +[21, ["number", 100], 363, 525, [20, null]], +[22, "right", 292, 567, [20, 23, null]], +[23, ["number", 90], 350, 567, [22, null]], +[24, "forward", 292, 105, [null, 25, 2]], +[25, ["number", 100], 363, 105, [24, null]]] diff --git a/challenges/help-29.ta b/challenges/help-29.ta new file mode 100644 index 0000000..0908fdb --- /dev/null +++ b/challenges/help-29.ta @@ -0,0 +1,148 @@ +[[0, "forward", 656, 507, [7, 6, 8]], +[1, "storeinbox1", 656, 347, [24, 2, 13]], +[2, ["number", 25.0], 745, 347, [1, null]], +[3, "storeinbox1", 656, 443, [15, 21, 7]], +[4, ["number", 25.0], 786, 475, [21, null]], +[5, "box1", 786, 443, [21, null]], +[6, "box1", 710, 507, [0, null]], +[7, ["vspace", 0], 656, 475, [3, 0]], +[8, "right", 656, 539, [0, 9, 10]], +[9, ["number", 90], 700, 539, [8, null]], +[10, "forward", 656, 571, [8, 116, 11]], +[11, "right", 656, 603, [10, 12, 133]], +[12, ["number", 90], 700, 603, [11, null]], +[13, "forward", 656, 379, [1, 14, 15]], +[14, "box1", 710, 379, [13, null]], +[15, "right", 656, 411, [13, 60, 3]], +[16, "penup", 30, 169, [22, 18]], +[17, "pendown", 30, 264, [18, 33]], +[18, ["setxy2", 0], 30, 201, [16, 19, 20, 17]], +[19, ["number", 50.0], 74, 201, [18, null]], +[20, ["number", 50.0], 74, 233, [18, null]], +[21, ["plus2", 0], 745, 443, [3, 5, 4]], +[22, ["start", 1.5], 30, 137, [null, 16]], +[23, "hat1", 376, 317, [null, 61]], +[24, "hat2", 656, 315, [null, 1]], +[25, "storeinbox1", 656, 1012, [128, 28, 32]], +[26, ["number", 20.0], 786, 1044, [28, null]], +[27, "box1", 786, 1012, [28, null]], +[28, ["plus2", 0], 745, 1012, [25, 27, 26]], +[29, "forward", 656, 1076, [32, 34, 30]], +[30, "right", 656, 1108, [29, 31, 35]], +[31, ["number", 45.0], 700, 1108, [30, null]], +[32, ["vspace", 0], 656, 1044, [25, 29]], +[33, "stack1", 30, 296, [17, 59]], +[34, "box1", 710, 1076, [29, null]], +[35, "forward", 656, 1140, [30, 36, 37]], +[36, ["number", 140.0], 710, 1140, [35, null]], +[37, "left", 656, 1172, [35, 38, 39]], +[38, ["number", 45.0], 700, 1172, [37, null]], +[39, "storeinbox1", 656, 1204, [37, 42, 43]], +[40, ["number", 45.0], 804, 1236, [42, null]], +[41, "box1", 786, 1204, [42, null]], +[42, ["minus2", 0], 745, 1204, [39, 41, 40]], +[43, "forward", 656, 1236, [39, 46, 44]], +[44, "left", 656, 1268, [43, 45, 47]], +[45, ["number", 90], 700, 1268, [44, null]], +[46, "box1", 710, 1236, [43, null]], +[47, "storeinbox1", 656, 1300, [44, 50, 51]], +[48, ["number", 25.0], 804, 1332, [50, null]], +[49, "box1", 786, 1300, [50, null]], +[50, ["minus2", 0], 745, 1300, [47, 49, 48]], +[51, "forward", 656, 1332, [47, 57, 52]], +[52, "left", 656, 1364, [51, 53, 54]], +[53, ["number", 90], 700, 1364, [52, null]], +[54, "forward", 656, 1396, [52, 58, 55]], +[55, "left", 656, 1428, [54, 56, 142]], +[56, ["number", 90], 700, 1428, [55, null]], +[57, "box1", 710, 1332, [51, null]], +[58, "box1", 710, 1396, [54, null]], +[59, "stack2", 30, 328, [33, null]], +[60, ["number", -90.0], 700, 411, [15, null]], +[61, "storeinbox1", 376, 349, [23, 62, 63]], +[62, ["number", 25], 465, 349, [61, null]], +[63, "forward", 376, 381, [61, 64, 65]], +[64, "box1", 430, 381, [63, null]], +[65, "right", 376, 413, [63, 66, 67]], +[66, ["number", 90], 420, 413, [65, null]], +[67, "repeat", 376, 445, [65, 68, 69, 82]], +[68, ["number", 2], 415, 445, [67, null]], +[69, "storeinbox1", 425, 490, [67, 70, 73]], +[70, ["plus2", 0], 514, 490, [69, 71, 72]], +[71, "box1", 555, 490, [70, null]], +[72, ["number", 50], 555, 522, [70, null]], +[73, ["vspace", 0], 425, 522, [69, 74]], +[74, "forward", 425, 554, [73, 75, 76]], +[75, "box1", 479, 554, [74, null]], +[76, "right", 425, 586, [74, 77, 78]], +[77, ["number", 90], 469, 586, [76, null]], +[78, "forward", 425, 618, [76, 79, 80]], +[79, "box1", 479, 618, [78, null]], +[80, "right", 425, 650, [78, 81, null]], +[81, ["number", 90], 469, 650, [80, null]], +[82, ["vspace", 100], 376, 504, [67, 83]], +[83, "storeinbox1", 376, 686, [82, 84, 87]], +[84, ["plus2", 0], 465, 686, [83, 85, 86]], +[85, "box1", 506, 686, [84, null]], +[86, ["number", 20], 506, 718, [84, null]], +[87, ["vspace", 0], 376, 718, [83, 88]], +[88, "forward", 376, 750, [87, 89, 90]], +[89, "box1", 430, 750, [88, null]], +[90, "right", 376, 782, [88, 91, 92]], +[91, ["number", 45], 420, 782, [90, null]], +[92, "forward", 376, 814, [90, 93, 94]], +[93, ["number", 140], 430, 814, [92, null]], +[94, "left", 376, 846, [92, 95, 96]], +[95, ["number", 45], 420, 846, [94, null]], +[96, "storeinbox1", 376, 878, [94, 97, 100]], +[97, ["minus2", 0], 465, 878, [96, 98, 99]], +[98, "box1", 506, 878, [97, null]], +[99, ["number", 45], 524, 910, [97, null]], +[100, "forward", 376, 910, [96, 101, 102]], +[101, "box1", 430, 910, [100, null]], +[102, "left", 376, 942, [100, 103, 104]], +[103, ["number", 90], 420, 942, [102, null]], +[104, "storeinbox1", 376, 974, [102, 105, 108]], +[105, ["minus2", 0], 465, 974, [104, 106, 107]], +[106, "box1", 506, 974, [105, null]], +[107, ["number", 25], 524, 1006, [105, null]], +[108, "forward", 376, 1006, [104, 109, 110]], +[109, "box1", 430, 1006, [108, null]], +[110, "left", 376, 1038, [108, 111, 112]], +[111, ["number", 90], 420, 1038, [110, null]], +[112, "forward", 376, 1070, [110, 113, 114]], +[113, "box1", 430, 1070, [112, null]], +[114, "left", 376, 1102, [112, 115, null]], +[115, ["number", 90], 420, 1102, [114, null]], +[116, ["number", 25.0], 710, 571, [10, null]], +[117, "storeinbox1", 656, 827, [121, 120, 125]], +[118, ["number", 50.0], 786, 859, [120, null]], +[119, "box1", 786, 827, [120, null]], +[120, ["plus2", 0], 745, 827, [117, 119, 118]], +[121, "right", 656, 795, [123, 122, 117]], +[122, ["number", 90], 700, 795, [121, null]], +[123, "forward", 656, 763, [139, 124, 121]], +[124, "box1", 710, 763, [123, null]], +[125, ["vspace", 0], 656, 859, [117, 126]], +[126, "repeat", 656, 891, [125, 127, 129, 128]], +[127, ["number", 2.0], 695, 891, [126, null]], +[128, ["vspace", 20], 656, 950, [126, 25]], +[129, "forward", 705, 936, [126, 132, 130]], +[130, "right", 705, 968, [129, 131, null]], +[131, ["number", 90], 749, 968, [130, null]], +[132, "box1", 759, 936, [129, null]], +[133, "storeinbox1", 656, 635, [11, 136, 137]], +[134, ["number", 25.0], 786, 667, [136, null]], +[135, "box1", 786, 635, [136, null]], +[136, ["plus2", 0], 745, 635, [133, 135, 134]], +[137, ["vspace", 0], 656, 667, [133, 138]], +[138, "forward", 656, 699, [137, 141, 139]], +[139, "right", 656, 731, [138, 140, 123]], +[140, ["number", 90], 700, 731, [139, null]], +[141, "box1", 710, 699, [138, null]], +[142, "forward", 656, 1460, [55, 143, 144]], +[143, ["number", 25.0], 710, 1460, [142, null]], +[144, "left", 656, 1492, [142, 145, 146]], +[145, ["number", 90], 700, 1492, [144, null]], +[146, "forward", 656, 1524, [144, 147, null]], +[147, ["number", 50.0], 710, 1524, [146, null]]] diff --git a/challenges/help-3.ta b/challenges/help-3.ta new file mode 100644 index 0000000..8a30bf6 --- /dev/null +++ b/challenges/help-3.ta @@ -0,0 +1,13 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "right", 556, 18, [null, 2, 3]], +[2, ["number", 60.0], 614, 18, [1, null]], +[3, "forward", 556, 60, [1, 4, 5]], +[4, ["number", 110.0], 627, 60, [3, null]], +[5, "right", 556, 102, [3, 6, 7]], +[6, ["number", 120.0], 614, 102, [5, null]], +[7, "forward", 556, 144, [5, 8, 9]], +[8, ["number", 55.0], 627, 144, [7, null]], +[9, "right", 556, 186, [7, 10, 11]], +[10, ["number", 90.0], 614, 186, [9, null]], +[11, "forward", 556, 228, [9, 12, null]], +[12, ["number", 92.0], 627, 228, [11, null]]] diff --git a/challenges/help-30.ta b/challenges/help-30.ta new file mode 100644 index 0000000..aea3b89 --- /dev/null +++ b/challenges/help-30.ta @@ -0,0 +1,9 @@ +[[0, "forward", 327, 307, [4, 1, 2]], +[1, ["number", 75], 398, 307, [0, null]], +[2, "right", 327, 349, [0, 3, null]], +[3, ["number", 60], 385, 349, [2, null]], +[4, "repeat", 262, 247, [null, 5, 0, 6]], +[5, ["number", 6], 313, 247, [4, null]], +[6, ["vspace", 20], 262, 325, [4, 7]], +[7, "right", 262, 407, [6, 8, null]], +[8, ["number", 60], 320, 407, [7, null]]] diff --git a/challenges/help-31.ta b/challenges/help-31.ta new file mode 100644 index 0000000..6d518e2 --- /dev/null +++ b/challenges/help-31.ta @@ -0,0 +1,13 @@ +[[0, "forward", 541, 142, [null, 5, 2]], +[1, ["number", 200.0], 612, 310, [8, null]], +[2, "right", 541, 184, [0, 3, 4]], +[3, ["number", 90], 599, 184, [2, null]], +[4, "forward", 541, 226, [2, 9, 6]], +[5, ["number", 150.0], 612, 142, [0, null]], +[6, "right", 541, 268, [4, 7, 8]], +[7, ["number", 90], 599, 268, [6, null]], +[8, "forward", 541, 310, [6, 1, 10]], +[9, ["number", 175.0], 612, 226, [4, null]], +[10, "right", 541, 352, [8, 11, null]], +[11, ["number", 90], 599, 352, [10, null]], +[12, ["string", "31"], 0, 49, [null, null]]] diff --git a/challenges/help-32.ta b/challenges/help-32.ta new file mode 100644 index 0000000..79607bb --- /dev/null +++ b/challenges/help-32.ta @@ -0,0 +1,9 @@ +[[0, "forward", 257, 323, [4, 1, 2]], +[1, ["number", 50], 328, 323, [0, null]], +[2, "right", 257, 365, [0, 3, null]], +[3, ["number", 45], 315, 365, [2, null]], +[4, "repeat", 192, 263, [null, 5, 0, 6]], +[5, ["number", 8], 243, 263, [4, null]], +[6, ["vspace", 20], 192, 341, [4, 7]], +[7, "right", 192, 423, [6, 8, null]], +[8, ["number", 45], 250, 423, [7, null]]] diff --git a/challenges/help-33.ta b/challenges/help-33.ta new file mode 100644 index 0000000..7e1ecdc --- /dev/null +++ b/challenges/help-33.ta @@ -0,0 +1,34 @@ +[[0, "forward", 201, 70, [null, 1, 2]], +[1, ["number", 50], 272, 70, [0, null]], +[2, "right", 201, 112, [0, 3, 4]], +[3, ["number", 90], 259, 112, [2, null]], +[4, "forward", 201, 154, [2, 5, 6]], +[5, ["number", 100], 272, 154, [4, null]], +[6, "right", 201, 196, [4, 7, 8]], +[7, ["number", 90], 259, 196, [6, null]], +[8, "forward", 201, 238, [6, 9, 10]], +[9, ["number", 15], 272, 238, [8, null]], +[10, "right", 201, 280, [8, 11, 12]], +[11, ["number", 90], 259, 280, [10, null]], +[12, "forward", 201, 322, [10, 13, 14]], +[13, ["number", 85], 272, 322, [12, null]], +[14, "left", 201, 364, [12, 15, 16]], +[15, ["number", 90], 259, 364, [14, null]], +[16, "forward", 201, 406, [14, 17, 18]], +[17, ["number", 70], 272, 406, [16, null]], +[18, "left", 201, 448, [16, 19, 20]], +[19, ["number", 90], 259, 448, [18, null]], +[20, "forward", 201, 490, [18, 21, 22]], +[21, ["number", 85.0], 272, 490, [20, null]], +[22, "right", 201, 532, [20, 23, 24]], +[23, ["number", 90], 259, 532, [22, null]], +[24, "forward", 201, 574, [22, 25, 26]], +[25, ["number", 15.0], 272, 574, [24, null]], +[26, "right", 201, 616, [24, 27, 28]], +[27, ["number", 90], 259, 616, [26, null]], +[28, "forward", 201, 658, [26, 29, 30]], +[29, ["number", 100], 272, 658, [28, null]], +[30, "right", 201, 700, [28, 31, 32]], +[31, ["number", 90], 259, 700, [30, null]], +[32, "forward", 201, 742, [30, 33, null]], +[33, ["number", 50.0], 272, 742, [32, null]]] diff --git a/challenges/help-34.ta b/challenges/help-34.ta new file mode 100644 index 0000000..7e1ecdc --- /dev/null +++ b/challenges/help-34.ta @@ -0,0 +1,34 @@ +[[0, "forward", 201, 70, [null, 1, 2]], +[1, ["number", 50], 272, 70, [0, null]], +[2, "right", 201, 112, [0, 3, 4]], +[3, ["number", 90], 259, 112, [2, null]], +[4, "forward", 201, 154, [2, 5, 6]], +[5, ["number", 100], 272, 154, [4, null]], +[6, "right", 201, 196, [4, 7, 8]], +[7, ["number", 90], 259, 196, [6, null]], +[8, "forward", 201, 238, [6, 9, 10]], +[9, ["number", 15], 272, 238, [8, null]], +[10, "right", 201, 280, [8, 11, 12]], +[11, ["number", 90], 259, 280, [10, null]], +[12, "forward", 201, 322, [10, 13, 14]], +[13, ["number", 85], 272, 322, [12, null]], +[14, "left", 201, 364, [12, 15, 16]], +[15, ["number", 90], 259, 364, [14, null]], +[16, "forward", 201, 406, [14, 17, 18]], +[17, ["number", 70], 272, 406, [16, null]], +[18, "left", 201, 448, [16, 19, 20]], +[19, ["number", 90], 259, 448, [18, null]], +[20, "forward", 201, 490, [18, 21, 22]], +[21, ["number", 85.0], 272, 490, [20, null]], +[22, "right", 201, 532, [20, 23, 24]], +[23, ["number", 90], 259, 532, [22, null]], +[24, "forward", 201, 574, [22, 25, 26]], +[25, ["number", 15.0], 272, 574, [24, null]], +[26, "right", 201, 616, [24, 27, 28]], +[27, ["number", 90], 259, 616, [26, null]], +[28, "forward", 201, 658, [26, 29, 30]], +[29, ["number", 100], 272, 658, [28, null]], +[30, "right", 201, 700, [28, 31, 32]], +[31, ["number", 90], 259, 700, [30, null]], +[32, "forward", 201, 742, [30, 33, null]], +[33, ["number", 50.0], 272, 742, [32, null]]] diff --git a/challenges/help-35.ta b/challenges/help-35.ta new file mode 100644 index 0000000..a8faf26 --- /dev/null +++ b/challenges/help-35.ta @@ -0,0 +1,11 @@ +[[0, ["string", "31"], 0, 49, [null, null]], +[1, "repeat", 260, 289, [8, 2, 4, 3]], +[2, ["number", 6], 311, 289, [1, null]], +[3, ["vspace", 0], 260, 367, [1, null]], +[4, "forward", 325, 349, [1, 5, 6]], +[5, ["number", 75], 396, 349, [4, null]], +[6, "right", 325, 391, [4, 7, null]], +[7, ["number", 60], 383, 391, [6, null]], +[8, "left", 260, 247, [null, 9, 1]], +[9, ["number", 30], 318, 247, [8, null]], +[10, ["string", "31"], 0, 49, [null, null]]] diff --git a/challenges/help-36.ta b/challenges/help-36.ta new file mode 100644 index 0000000..b63a1c8 --- /dev/null +++ b/challenges/help-36.ta @@ -0,0 +1,68 @@ +[[0, "left", 209, 216, [66, 1, 2]], +[1, ["number", 90.0], 267, 216, [0, null]], +[2, "forward", 209, 258, [0, 3, 4]], +[3, ["number", 25], 280, 258, [2, null]], +[4, "right", 209, 300, [2, 5, 6]], +[5, ["number", 45], 267, 300, [4, null]], +[6, "forward", 209, 342, [4, 7, 8]], +[7, ["number", 25], 280, 342, [6, null]], +[8, "right", 209, 384, [6, 9, 10]], +[9, ["number", 45], 267, 384, [8, null]], +[10, "forward", 209, 426, [8, 11, 12]], +[11, ["number", 25], 280, 426, [10, null]], +[12, "left", 209, 468, [10, 13, 14]], +[13, ["number", 45], 267, 468, [12, null]], +[14, "forward", 209, 510, [12, 15, 16]], +[15, ["number", 25], 280, 510, [14, null]], +[16, "left", 209, 552, [14, 17, 18]], +[17, ["number", 90], 267, 552, [16, null]], +[18, "forward", 209, 594, [16, 19, 20]], +[19, ["number", 25], 280, 594, [18, null]], +[20, "right", 209, 636, [18, 21, 22]], +[21, ["number", 45], 267, 636, [20, null]], +[22, "forward", 209, 678, [20, 23, 24]], +[23, ["number", 25], 280, 678, [22, null]], +[24, "right", 209, 720, [22, 25, 26]], +[25, ["number", 135], 267, 720, [24, null]], +[26, "forward", 209, 762, [24, 27, 28]], +[27, ["number", 25], 280, 762, [26, null]], +[28, "left", 209, 804, [26, 29, 30]], +[29, ["number", 45], 267, 804, [28, null]], +[30, "forward", 209, 846, [28, 31, null]], +[31, ["number", 25], 280, 846, [30, null]], +[32, "right", 703, 224, [67, 33, 34]], +[33, ["number", 90], 761, 224, [32, null]], +[34, "forward", 703, 266, [32, 35, 36]], +[35, ["number", 25], 774, 266, [34, null]], +[36, "left", 703, 308, [34, 37, 38]], +[37, ["number", 45], 761, 308, [36, null]], +[38, "forward", 703, 350, [36, 39, 40]], +[39, ["number", 25], 774, 350, [38, null]], +[40, "right", 703, 392, [38, 41, 42]], +[41, ["number", 135], 761, 392, [40, null]], +[42, "forward", 703, 434, [40, 43, 44]], +[43, ["number", 25], 774, 434, [42, null]], +[44, "right", 703, 476, [42, 45, 46]], +[45, ["number", 45], 761, 476, [44, null]], +[46, "forward", 703, 518, [44, 47, 48]], +[47, ["number", 25], 774, 518, [46, null]], +[48, "left", 703, 560, [46, 49, 50]], +[49, ["number", 90], 761, 560, [48, null]], +[50, "forward", 703, 602, [48, 51, 52]], +[51, ["number", 25], 774, 602, [50, null]], +[52, "left", 703, 644, [50, 53, 54]], +[53, ["number", 45], 761, 644, [52, null]], +[54, "forward", 703, 686, [52, 55, 56]], +[55, ["number", 25], 774, 686, [54, null]], +[56, "right", 703, 728, [54, 57, 58]], +[57, ["number", 45], 761, 728, [56, null]], +[58, "forward", 703, 770, [56, 59, 60]], +[59, ["number", 25], 774, 770, [58, null]], +[60, "right", 703, 812, [58, 61, 62]], +[61, ["number", 45], 761, 812, [60, null]], +[62, "forward", 703, 854, [60, 63, 64]], +[63, ["number", 25], 774, 854, [62, null]], +[64, "right", 703, 896, [62, 65, null]], +[65, ["number", 135], 761, 896, [64, null]], +[66, "hat1", 209, 174, [null, 0]], +[67, "hat2", 703, 182, [null, 32]]] diff --git a/challenges/help-37.ta b/challenges/help-37.ta new file mode 100644 index 0000000..42513fd --- /dev/null +++ b/challenges/help-37.ta @@ -0,0 +1,20 @@ +[[0, "forward", 234, 172, [null, 1, 2]], +[1, ["number", 50], 305, 172, [0, null]], +[2, "left", 234, 214, [0, 3, 4]], +[3, ["number", 90], 292, 214, [2, null]], +[4, "forward", 234, 256, [2, 5, 6]], +[5, ["number", 150], 305, 256, [4, null]], +[6, "left", 234, 298, [4, 7, 8]], +[7, ["number", 90], 292, 298, [6, null]], +[8, "forward", 234, 340, [6, 9, 10]], +[9, ["number", 125], 305, 340, [8, null]], +[10, "left", 234, 382, [8, 11, 12]], +[11, ["number", 90], 292, 382, [10, null]], +[12, "forward", 234, 424, [10, 13, 14]], +[13, ["number", 100], 305, 424, [12, null]], +[14, "left", 234, 466, [12, 15, 16]], +[15, ["number", 90], 292, 466, [14, null]], +[16, "forward", 234, 508, [14, 17, 18]], +[17, ["number", 75], 305, 508, [16, null]], +[18, "left", 234, 550, [16, 19, null]], +[19, ["number", 90], 292, 550, [18, null]]] diff --git a/challenges/help-38.ta b/challenges/help-38.ta new file mode 100644 index 0000000..bb5a0d4 --- /dev/null +++ b/challenges/help-38.ta @@ -0,0 +1,23 @@ +[[0, "repeat", 241, 316, [8, 1, 10, 2]], +[1, ["number", 4], 292, 316, [0, null]], +[2, ["vspace", 40], 241, 394, [0, 16]], +[3, "left", 241, 106, [null, 22, 4]], +[4, "penup", 241, 148, [3, 5]], +[5, "forward", 241, 190, [4, 6, 7]], +[6, ["number", 150], 312, 190, [5, null]], +[7, "pendown", 241, 232, [5, 8]], +[8, "right", 241, 274, [7, 9, 0]], +[9, ["number", 90], 299, 274, [8, null]], +[10, "forward", 306, 376, [0, 11, 12]], +[11, ["number", 150], 377, 376, [10, null]], +[12, "right", 306, 418, [10, 13, 14]], +[13, ["number", 90], 364, 418, [12, null]], +[14, "forward", 306, 460, [12, 15, null]], +[15, ["number", 150], 377, 460, [14, null]], +[16, "left", 241, 516, [2, 17, 18]], +[17, ["number", 90], 299, 516, [16, null]], +[18, "penup", 241, 558, [16, 20]], +[19, "pendown", 241, 642, [20, null]], +[20, "back", 241, 600, [18, 21, 19]], +[21, ["number", 150], 299, 600, [20, null]], +[22, ["number", 10], 299, 106, [3, null]]] diff --git a/challenges/help-39.ta b/challenges/help-39.ta new file mode 100644 index 0000000..eaf5f55 --- /dev/null +++ b/challenges/help-39.ta @@ -0,0 +1,32 @@ +[[0, ["number", 15], 263, 264, [9, null]], +[1, "forward", 192, 96, [null, 2, 3]], +[2, ["number", 100], 263, 96, [1, null]], +[3, "right", 192, 138, [1, 4, 5]], +[4, ["number", 90], 250, 138, [3, null]], +[5, "forward", 192, 180, [3, 6, 7]], +[6, ["number", 100], 263, 180, [5, null]], +[7, "right", 192, 222, [5, 8, 9]], +[8, ["number", 90], 250, 222, [7, null]], +[9, "forward", 192, 264, [7, 0, 10]], +[10, "right", 192, 306, [9, 11, 12]], +[11, ["number", 90], 250, 306, [10, null]], +[12, "forward", 192, 348, [10, 13, 14]], +[13, ["number", 85], 263, 348, [12, null]], +[14, "left", 192, 390, [12, 15, 16]], +[15, ["number", 90], 250, 390, [14, null]], +[16, "forward", 192, 432, [14, 17, 18]], +[17, ["number", 70], 263, 432, [16, null]], +[18, "left", 192, 474, [16, 19, 20]], +[19, ["number", 90], 250, 474, [18, null]], +[20, "forward", 192, 516, [18, 21, 22]], +[21, ["number", 85], 263, 516, [20, null]], +[22, "right", 192, 558, [20, 23, 24]], +[23, ["number", 90], 250, 558, [22, null]], +[24, "forward", 192, 600, [22, 31, 25]], +[25, "right", 192, 642, [24, 26, 27]], +[26, ["number", 90], 250, 642, [25, null]], +[27, "forward", 192, 684, [25, 28, 29]], +[28, ["number", 100], 263, 684, [27, null]], +[29, "right", 192, 726, [27, 30, null]], +[30, ["number", 90], 250, 726, [29, null]], +[31, ["number", 15], 263, 600, [24, null]]] diff --git a/challenges/help-4.ta b/challenges/help-4.ta new file mode 100644 index 0000000..491a021 --- /dev/null +++ b/challenges/help-4.ta @@ -0,0 +1,14 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "right", 565, 176, [10, 2, 3]], +[2, ["number", 60.0], 623, 176, [1, null]], +[3, "forward", 565, 218, [1, 4, 5]], +[4, ["number", 55.0], 636, 218, [3, null]], +[5, "right", 565, 260, [3, 6, 7]], +[6, ["number", 60.0], 623, 260, [5, null]], +[7, "forward", 565, 302, [5, 8, null]], +[8, ["number", 55.0], 636, 302, [7, null]], +[9, "penup", 565, 8, [null, 11]], +[10, "pendown", 565, 134, [11, 1]], +[11, ["setxy2", 0], 565, 50, [9, 12, 13, 10]], +[12, ["number", 50.0], 623, 50, [11, null]], +[13, ["number", 0], 623, 92, [11, null]]] diff --git a/challenges/help-40.ta b/challenges/help-40.ta new file mode 100644 index 0000000..c79cc97 --- /dev/null +++ b/challenges/help-40.ta @@ -0,0 +1,66 @@ +[[0, "hat1", 293, 397, [null, 2]], +[1, "hat2", 540, 387, [null, 34]], +[2, "right", 293, 439, [0, 3, 4]], +[3, ["number", 45.0], 351, 439, [2, null]], +[4, "forward", 293, 481, [2, 5, 6]], +[5, ["number", 25.0], 364, 481, [4, null]], +[6, "left", 293, 523, [4, 7, 8]], +[7, ["number", 90], 351, 523, [6, null]], +[8, "forward", 293, 565, [6, 9, 10]], +[9, ["number", 25.0], 364, 565, [8, null]], +[10, "right", 293, 607, [8, 11, 12]], +[11, ["number", 45.0], 351, 607, [10, null]], +[12, "forward", 293, 649, [10, 13, 14]], +[13, ["number", 25.0], 364, 649, [12, null]], +[14, "left", 293, 691, [12, 15, 16]], +[15, ["number", 90], 351, 691, [14, null]], +[16, "forward", 293, 733, [14, 17, 18]], +[17, ["number", 25.0], 364, 733, [16, null]], +[18, "right", 293, 775, [16, 19, 20]], +[19, ["number", 90], 351, 775, [18, null]], +[20, "forward", 293, 817, [18, 21, 22]], +[21, ["number", 25.0], 364, 817, [20, null]], +[22, "right", 293, 859, [20, 23, 24]], +[23, ["number", 90], 351, 859, [22, null]], +[24, "forward", 293, 901, [22, 25, 26]], +[25, ["number", 25.0], 364, 901, [24, null]], +[26, "left", 293, 943, [24, 27, 28]], +[27, ["number", 135.0], 351, 943, [26, null]], +[28, "forward", 293, 985, [26, 29, 30]], +[29, ["number", 25.0], 364, 985, [28, null]], +[30, "left", 293, 1027, [28, 31, 32]], +[31, ["number", 90], 351, 1027, [30, null]], +[32, "forward", 293, 1069, [30, 33, null]], +[33, ["number", 25.0], 364, 1069, [32, null]], +[34, "right", 540, 429, [1, 35, 36]], +[35, ["number", 45.0], 598, 429, [34, null]], +[36, "forward", 540, 471, [34, 37, 38]], +[37, ["number", 25.0], 611, 471, [36, null]], +[38, "left", 540, 513, [36, 39, 40]], +[39, ["number", 90], 598, 513, [38, null]], +[40, "forward", 540, 555, [38, 41, 42]], +[41, ["number", 25.0], 611, 555, [40, null]], +[42, "left", 540, 597, [40, 43, 44]], +[43, ["number", 135.0], 598, 597, [42, null]], +[44, "forward", 540, 639, [42, 45, 46]], +[45, ["number", 25.0], 611, 639, [44, null]], +[46, "right", 540, 681, [44, 47, 48]], +[47, ["number", 90], 598, 681, [46, null]], +[48, "forward", 540, 723, [46, 49, 50]], +[49, ["number", 25.0], 611, 723, [48, null]], +[50, "right", 540, 765, [48, 51, 52]], +[51, ["number", 90], 598, 765, [50, null]], +[52, "forward", 540, 807, [50, 53, 54]], +[53, ["number", 25.0], 611, 807, [52, null]], +[54, "left", 540, 849, [52, 55, 56]], +[55, ["number", 90], 598, 849, [54, null]], +[56, "forward", 540, 891, [54, 57, 58]], +[57, ["number", 25.0], 611, 891, [56, null]], +[58, "right", 540, 933, [56, 59, 60]], +[59, ["number", 45.0], 598, 933, [58, null]], +[60, "forward", 540, 975, [58, 61, 62]], +[61, ["number", 25.0], 611, 975, [60, null]], +[62, "left", 540, 1017, [60, 63, 64]], +[63, ["number", 90], 598, 1017, [62, null]], +[64, "forward", 540, 1059, [62, 65, null]], +[65, ["number", 25.0], 611, 1059, [64, null]]] diff --git a/challenges/help-5.ta b/challenges/help-5.ta new file mode 100644 index 0000000..f4b32fa --- /dev/null +++ b/challenges/help-5.ta @@ -0,0 +1,21 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "right", 629, 278, [16, 2, 3]], +[2, ["number", 60], 687, 278, [1, null]], +[3, "forward", 629, 320, [1, 4, 5]], +[4, ["number", 55], 700, 320, [3, null]], +[5, "right", 629, 362, [3, 6, 7]], +[6, ["number", 60], 687, 362, [5, null]], +[7, "forward", 629, 404, [5, 8, 19]], +[8, ["number", 55], 700, 404, [7, null]], +[9, "penup", 564, 8, [null, 11]], +[10, "pendown", 564, 134, [11, 14]], +[11, ["setxy2", 0], 564, 50, [9, 12, 13, 10]], +[12, ["number", 50], 622, 50, [11, null]], +[13, ["number", 0], 622, 92, [11, null]], +[14, "startfill", 564, 176, [10, 16]], +[15, "stopfill", 564, 338, [18, null]], +[16, "repeat", 564, 218, [14, 17, 1, 18]], +[17, ["number", 2.0], 615, 218, [16, null]], +[18, ["vspace", 0], 564, 296, [16, 15]], +[19, "right", 629, 446, [7, 20, null]], +[20, ["number", 60.0], 687, 446, [19, null]]] diff --git a/challenges/help-6.ta b/challenges/help-6.ta new file mode 100644 index 0000000..e0a72f9 --- /dev/null +++ b/challenges/help-6.ta @@ -0,0 +1,32 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "penup", 301, 132, [null, 3]], +[2, "pendown", 301, 258, [3, null]], +[3, ["setxy2", 0], 301, 174, [1, 4, 5, 2]], +[4, ["number", 50], 359, 174, [3, null]], +[5, ["number", 0], 359, 216, [3, null]], +[6, "setcolor", 520, 401, [29, 7, 31]], +[7, "white", 597, 401, [6, null]], +[8, "setcolor", 515, 74, [23, 22, 28]], +[9, "startfill", 27, 171, [27, 10]], +[10, "repeat", 27, 213, [9, 11, 12, 20]], +[11, ["number", 2], 78, 213, [10, null]], +[12, "right", 92, 273, [10, 13, 14]], +[13, ["number", 60], 150, 273, [12, null]], +[14, "forward", 92, 315, [12, 25, 15]], +[15, "right", 92, 357, [14, 16, 17]], +[16, ["number", 60], 150, 357, [15, null]], +[17, "forward", 92, 399, [15, 26, 18]], +[18, "right", 92, 441, [17, 19, null]], +[19, ["number", 60], 150, 441, [18, null]], +[20, ["vspace", 0], 27, 291, [10, 21]], +[21, "stopfill", 27, 333, [20, null]], +[22, "red", 592, 74, [8, null]], +[23, "storeinbox1", 515, 32, [null, 24, 8]], +[24, ["number", 110.0], 633, 32, [23, null]], +[25, "box1", 163, 315, [14, null]], +[26, "box1", 163, 399, [17, null]], +[27, "hat1", 27, 129, [null, 9]], +[28, "stack1", 515, 116, [8, null]], +[29, "storeinbox1", 520, 359, [null, 30, 6]], +[30, ["number", 55.0], 638, 359, [29, null]], +[31, "stack1", 520, 443, [6, null]]] diff --git a/challenges/help-7.ta b/challenges/help-7.ta new file mode 100644 index 0000000..5525e76 --- /dev/null +++ b/challenges/help-7.ta @@ -0,0 +1,34 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, "penup", 306, 136, [null, 3]], +[2, "pendown", 306, 262, [3, null]], +[3, ["setxy2", 0], 306, 178, [1, 4, 5, 2]], +[4, ["number", 50], 364, 178, [3, null]], +[5, ["number", 0], 364, 220, [3, null]], +[6, "repeat", 12, 211, [21, 7, 8, 16]], +[7, ["number", 2], 63, 211, [6, null]], +[8, "right", 77, 271, [6, 9, 10]], +[9, ["number", 60], 135, 271, [8, null]], +[10, "forward", 77, 313, [8, 19, 11]], +[11, "right", 77, 355, [10, 12, 13]], +[12, ["number", 60], 135, 355, [11, null]], +[13, "forward", 77, 397, [11, 20, 14]], +[14, "right", 77, 439, [13, 15, null]], +[15, ["number", 60], 135, 439, [14, null]], +[16, ["vspace", 0], 12, 289, [6, null]], +[17, "storeinbox1", 515, 32, [null, 18, 22]], +[18, ["number", 110.0], 633, 32, [17, null]], +[19, "box1", 148, 313, [10, null]], +[20, "box1", 148, 397, [13, null]], +[21, "hat1", 12, 169, [null, 6]], +[22, "stack1", 515, 74, [17, null]], +[23, "storeinbox1", 524, 154, [null, 24, 25]], +[24, ["number", 82.5], 642, 154, [23, null]], +[25, "stack1", 524, 196, [23, null]], +[26, "penup", 350, 316, [null, 27]], +[27, ["setxy2", 0], 350, 358, [26, 28, 29, 30]], +[28, ["number", 25.0], 408, 358, [27, null]], +[29, ["number", 0], 408, 400, [27, null]], +[30, "pendown", 350, 442, [27, null]], +[31, "storeinbox1", 559, 304, [null, 32, 33]], +[32, ["number", 55], 677, 304, [31, null]], +[33, "stack1", 559, 346, [31, null]]] diff --git a/challenges/help-8.ta b/challenges/help-8.ta new file mode 100644 index 0000000..88b5fab --- /dev/null +++ b/challenges/help-8.ta @@ -0,0 +1,39 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "penup", 306, 136, [null, 6]], +[5, "pendown", 306, 262, [6, null]], +[6, ["setxy2", 0], 306, 178, [4, 7, 8, 5]], +[7, ["number", 50], 364, 178, [6, null]], +[8, ["number", 0], 364, 220, [6, null]], +[9, "repeat", 12, 211, [24, 10, 11, 19]], +[10, ["number", 2], 63, 211, [9, null]], +[11, "right", 77, 271, [9, 12, 13]], +[12, ["number", 60], 135, 271, [11, null]], +[13, "forward", 77, 313, [11, 22, 14]], +[14, "right", 77, 355, [13, 15, 16]], +[15, ["number", 60], 135, 355, [14, null]], +[16, "forward", 77, 397, [14, 23, 17]], +[17, "right", 77, 439, [16, 18, null]], +[18, ["number", 60], 135, 439, [17, null]], +[19, ["vspace", 0], 12, 289, [9, null]], +[20, "storeinbox1", 515, 32, [null, 21, 25]], +[21, ["number", 110], 633, 32, [20, null]], +[22, "box1", 148, 313, [13, null]], +[23, "box1", 148, 397, [16, null]], +[24, "hat1", 12, 169, [null, 9]], +[25, "stack1", 515, 74, [20, null]], +[26, "storeinbox1", 524, 154, [null, 27, 28]], +[27, ["number", 82.5], 642, 154, [26, null]], +[28, "stack1", 524, 196, [26, null]], +[29, "penup", 350, 316, [null, 30]], +[30, ["setxy2", 0], 350, 358, [29, 31, 32, 33]], +[31, ["number", 25], 408, 358, [30, null]], +[32, ["number", 0], 408, 400, [30, null]], +[33, "pendown", 350, 442, [30, null]], +[34, "storeinbox1", 559, 304, [38, 35, 36]], +[35, ["number", 55], 677, 304, [34, null]], +[36, "stack1", 559, 346, [34, 37]], +[37, "stopfill", 559, 388, [36, null]], +[38, "startfill", 559, 262, [null, 34]]] diff --git a/challenges/help-9.ta b/challenges/help-9.ta new file mode 100644 index 0000000..4aa4484 --- /dev/null +++ b/challenges/help-9.ta @@ -0,0 +1,45 @@ +[[0, ["start", 2.0], 195, 140, [null, null]], +[1, ["start", 2.0], 195, 140, [null, null]], +[2, ["start", 2.0], 195, 140, [null, null]], +[3, ["start", 2.0], 195, 140, [null, null]], +[4, "penup", 306, 135, [null, 6]], +[5, "pendown", 306, 261, [6, null]], +[6, ["setxy2", 0], 306, 177, [4, 7, 8, 5]], +[7, ["number", 50], 364, 177, [6, null]], +[8, ["number", 0], 364, 219, [6, null]], +[9, "repeat", 12, 211, [24, 10, 11, 19]], +[10, ["number", 2], 63, 211, [9, null]], +[11, "right", 77, 271, [9, 12, 13]], +[12, ["number", 60], 135, 271, [11, null]], +[13, "forward", 77, 313, [11, 22, 14]], +[14, "right", 77, 355, [13, 15, 16]], +[15, ["number", 60], 135, 355, [14, null]], +[16, "forward", 77, 397, [14, 23, 17]], +[17, "right", 77, 439, [16, 18, null]], +[18, ["number", 60], 135, 439, [17, null]], +[19, ["vspace", 0], 12, 289, [9, null]], +[20, "storeinbox1", 515, 32, [null, 21, 25]], +[21, ["number", 110], 633, 32, [20, null]], +[22, "box1", 148, 313, [13, null]], +[23, "box1", 148, 397, [16, null]], +[24, "hat1", 12, 169, [null, 9]], +[25, "stack1", 515, 74, [20, null]], +[26, "storeinbox1", 601, 166, [40, 27, 28]], +[27, ["number", 82.5], 719, 166, [26, null]], +[28, "stack1", 601, 208, [26, 39]], +[29, "penup", 350, 316, [null, 30]], +[30, ["setxy2", 0], 350, 358, [29, 31, 32, 33]], +[31, ["number", 25], 408, 358, [30, null]], +[32, ["number", 0], 408, 400, [30, null]], +[33, "pendown", 350, 442, [30, null]], +[34, "storeinbox1", 590, 404, [38, 35, 36]], +[35, ["number", 55], 708, 404, [34, null]], +[36, "stack1", 590, 446, [34, 37]], +[37, "stopfill", 590, 488, [36, null]], +[38, "startfill", 590, 362, [43, 34]], +[39, "stopfill", 601, 250, [28, null]], +[40, "startfill", 601, 124, [41, 26]], +[41, "setcolor", 601, 82, [null, 42, 40]], +[42, "red", 678, 82, [41, null]], +[43, "setcolor", 590, 320, [null, 44, 38]], +[44, "white", 667, 320, [43, null]]] diff --git a/challenges/offsets b/challenges/offsets new file mode 100644 index 0000000..b991582 --- /dev/null +++ b/challenges/offsets @@ -0,0 +1,23 @@ +1:0, -100 +2:0, -100 +3:0, -100 +4:0, -100 +5:0, -100 +6:0, -100 +7:0, -100 +8:0, -100 +9:0, -100 +10:0, -100 +11:0, -100 +12:0, -100 +13:0, -100 +14:0, -100 +15:0, -100 +16:0, -80 +17:0, -80 +18:0, -80 +19:0, -80 +20:0, -80 +21:0, -80 + + diff --git a/images/amazonas-0.jpg b/images/amazonas-0.jpg Binary files differnew file mode 100644 index 0000000..1b093ab --- /dev/null +++ b/images/amazonas-0.jpg diff --git a/images/amazonas-1.jpg b/images/amazonas-1.jpg Binary files differnew file mode 100644 index 0000000..a05f9d8 --- /dev/null +++ b/images/amazonas-1.jpg diff --git a/images/amazonas-2.jpg b/images/amazonas-2.jpg Binary files differnew file mode 100644 index 0000000..31968cc --- /dev/null +++ b/images/amazonas-2.jpg diff --git a/images/amazonas-3.jpg b/images/amazonas-3.jpg Binary files differnew file mode 100644 index 0000000..5a5c72c --- /dev/null +++ b/images/amazonas-3.jpg diff --git a/images/amazonas-tortuga.png b/images/amazonas-tortuga.png Binary files differnew file mode 100644 index 0000000..9d22370 --- /dev/null +++ b/images/amazonas-tortuga.png diff --git a/plugins/accelerometer/accelerometer.py b/plugins/accelerometer/accelerometer.py deleted file mode 100644 index 26aefd4..0000000 --- a/plugins/accelerometer/accelerometer.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -#Copyright (c) 2011 Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import os - -from gettext import gettext as _ - -from plugins.plugin import Plugin - -from TurtleArt.tapalette import make_palette -from TurtleArt.talogo import primitive_dictionary -from TurtleArt.tautils import debug_output - -import logging -_logger = logging.getLogger('turtleart-activity accelerometer plugin') - - -ACCELEROMETER_DEVICE = '/sys/devices/platform/lis3lv02d/position' - - -class Accelerometer(Plugin): - - def __init__(self, parent): - self._parent = parent - if os.path.exists(ACCELEROMETER_DEVICE): - self._status = True - else: - self._status = False - self.running_sugar = self._parent.running_sugar - - def setup(self): - # set up accelerometer specific blocks - palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_('Palette of sensor blocks'), - position=6) - - primitive_dictionary['xyz'] = self.prim_xyz - if self._status: - palette.add_block('xyz', - style='basic-style-extended-vertical', - label=_('acceleration'), - help_string=\ - _('push acceleration in x, y, z to heap'), - prim_name='xyz') - else: - palette.add_block('xyz', - style='basic-style-extended-vertical', - label=_('acceleration'), - help_string=\ - _('push acceleration in x, y, z to heap'), - hidden=True, - prim_name='xyz') - - self._parent.lc.def_prim( - 'xyz', 0, lambda self: primitive_dictionary['xyz']()) - - def _status_report(self): - debug_output('Reporting accelerator status: %s' % (str(self._status))) - return self._status - - # Block primitives used in talogo - - def prim_xyz(self): - ''' push accelerometer xyz to stack ''' - if not self._status: - self._parent.lc.heap.append(0) - self._parent.lc.heap.append(0) - self._parent.lc.heap.append(0) - else: - fh = open(ACCELEROMETER_DEVICE) - string = fh.read() - xyz = string[1:-2].split(',') - self._parent.lc.heap.append(float(xyz[2]) / 18) - self._parent.lc.heap.append(float(xyz[1]) / 18) - self._parent.lc.heap.append(float(xyz[0]) / 18) - fh.close() diff --git a/plugins/accelerometer/icons/sensoroff.svg b/plugins/accelerometer/icons/sensoroff.svg deleted file mode 100644 index 0a16670..0000000 --- a/plugins/accelerometer/icons/sensoroff.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<rect - width="42.763924" - height="42.763924" - x="6.1180382" - y="6.1180382" - id="rect2986" - style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.23607516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g - transform="matrix(0.87078705,0,0,0.87078705,3.2821055,2.9298726)" - id="network-wired_1_" - style="display:block"> - <g - id="network-wired"> - <line - id="line3076" - y2="23.993" - y1="32.438999" - x2="16.966999" - x1="16.966999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - <line - id="line3078" - y2="28.215" - y1="28.215" - x2="34.938" - x1="29.636999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - - <rect - width="9.7939997" - height="7.599" - x="42.157001" - y="24.312" - id="rect3080" - style="fill:#ffffff;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round" /> - <path - d="m 16.967,23.993 c 0,-2.334 -1.892,-4.224 -4.224,-4.224 -2.332,0 -4.223,1.889 -4.223,4.224" - id="path3082" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,2.334 -1.891,4.224 -4.224,4.224 -2.332,0 -4.223,-1.89 -4.223,-4.224" - id="path3084" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,-2.332 1.893,-4.226 4.224,-4.226" - id="path3086" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 8.52,23.993 c 0,2.332 -1.892,4.222 -4.223,4.222" - id="path3088" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - - <rect - width="14.477" - height="11.35" - x="31.945" - y="22.438" - id="rect3090" - style="fill:#ffffff;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - </g> -</g></svg>
\ No newline at end of file diff --git a/plugins/accelerometer/icons/sensoron.svg b/plugins/accelerometer/icons/sensoron.svg deleted file mode 100644 index d756860..0000000 --- a/plugins/accelerometer/icons/sensoron.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /><rect - width="55" - height="55" - x="0" - y="0" - id="rect3269" - style="fill:#ffd200;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g - transform="translate(0.27777716,18.796296)" - id="g4054"><line - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="17.778971" - x2="17.778971" - y1="12.381037" - y2="5.0263696" - id="line3076" /><line - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="28.811842" - x2="33.427887" - y1="8.7028332" - y2="8.7028332" - id="line3078" /><rect - width="8.5284882" - height="6.6171107" - x="39.7141" - y="5.3041511" - id="rect3080" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1.95927083;stroke-linecap:round;stroke-opacity:1" /><path - d="m 17.778971,5.0263697 c 0,-2.032417 -1.647529,-3.6782045 -3.678204,-3.6782045 -2.030675,0 -3.677334,1.6449167 -3.677334,3.6782045" - id="path3082" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,2.032417 -1.646658,3.678205 -3.678205,3.678205 -2.030675,0 -3.677333,-1.645788 -3.677333,-3.678205" - id="path3084" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,-2.030675 1.6484,-3.679946 3.678204,-3.679946" - id="path3086" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 10.423433,5.0263697 c 0,2.0306754 -1.6475288,3.6764629 -3.6773334,3.6764629" - id="path3088" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><rect - width="12.606384" - height="9.8834333" - x="30.821619" - y="3.6722956" - id="rect3090" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/plugins/audio_sensors/audio_sensors.py b/plugins/audio_sensors/audio_sensors.py deleted file mode 100644 index 8d45395..0000000 --- a/plugins/audio_sensors/audio_sensors.py +++ /dev/null @@ -1,468 +0,0 @@ -#!/usr/bin/env python -#Copyright (c) 2011, 2012 Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -from gettext import gettext as _ - -try: - from numpy import append - from numpy.fft import rfft - PITCH_AVAILABLE = True -except: - PITCH_AVAILABLE = False - -from plugins.plugin import Plugin - -from plugins.audio_sensors.audiograb import (AudioGrab, - SENSOR_DC_NO_BIAS, SENSOR_DC_BIAS, SENSOR_AC_BIAS) - -from plugins.audio_sensors.ringbuffer import RingBuffer1d - -from TurtleArt.tapalette import make_palette -from TurtleArt.taconstants import XO1, XO15, XO175, XO30, XO4 -from TurtleArt.talogo import primitive_dictionary -from TurtleArt.tautils import debug_output - -import logging -_logger = logging.getLogger('turtleart-activity audio sensors plugin') - - -def _avg(array, abs_value=False): - ''' Calc. the average value of an array ''' - if len(array) == 0: - return 0 - array_sum = 0 - if abs_value: - for a in array: - array_sum += abs(a) - else: - for a in array: - array_sum += a - return float(array_sum) / len(array) - - -class Audio_sensors(Plugin): - - def __init__(self, parent): - self._parent = parent - self._status = True # TODO: test for audio device - # These flags are referenced by audiograb - self.hw = self._parent.hw - self.running_sugar = self._parent.running_sugar - - def setup(self): - ''' set up audio-sensor-specific blocks ''' - self.max_samples = 1500 - self.input_step = 1 - - self.ringbuffer = [] - - palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_('Palette of sensor blocks'), - position=6) - - primitive_dictionary['sound'] = self.prim_sound - primitive_dictionary['volume'] = self.prim_volume - if self._status: - palette.add_block('sound', - style='box-style', - label=_('sound'), - help_string=_('raw microphone input signal'), - value_block=True, - prim_name='sound') - - palette.add_block('volume', - style='box-style', - label=_('loudness'), - help_string=_('microphone input volume'), - value_block=True, - prim_name='volume') - else: - palette.add_block('sound', - hidden=True, - style='box-style', - label=_('sound'), - help_string=_('raw microphone input signal'), - value_block=True, - prim_name='sound') - palette.add_block('volume', - hidden=True, - style='box-style', - label=_('loudness'), - help_string=_('microphone input volume'), - value_block=True, - prim_name='volume') - - self._parent.lc.def_prim( - 'sound', 0, lambda self: primitive_dictionary['sound'](0)) - self._parent.lc.def_prim( - 'volume', 0, lambda self: primitive_dictionary['volume'](0)) - - primitive_dictionary['pitch'] = self.prim_pitch - if PITCH_AVAILABLE and self._status: - palette.add_block('pitch', - style='box-style', - label=_('pitch'), - help_string=_('microphone input pitch'), - value_block=True, - prim_name='pitch') - else: - palette.add_block('pitch', - hidden=True, - style='box-style', - label=_('pitch'), - help_string=_('microphone input pitch'), - value_block=True, - prim_name='pitch') - self._parent.lc.def_prim('pitch', 0, - lambda self: primitive_dictionary['pitch'](0)) - - primitive_dictionary['resistance'] = self.prim_resistance - primitive_dictionary['voltage'] = self.prim_voltage - if self.hw in [XO1, XO15, XO175, XO4, XO30] and self._status: - if self.hw == XO1: - self.voltage_gain = 0.000022 - self.voltage_bias = 1.14 - elif self.hw == XO15: - self.voltage_gain = -0.00015 - self.voltage_bias = 1.70 - elif self.hw in [XO175, XO4]: # recalibrate in light of #3675? - self.voltage_gain = 0.000071 - self.voltage_bias = 0.55 - else: # XO 3.0 - self.voltage_gain = 0.000077 - self.voltage_bias = 0.72 - palette.add_block('resistance', - style='box-style', - label=_('resistance'), - help_string=_('microphone input resistance'), - value_block=True, - prim_name='resistance') - palette.add_block('voltage', - style='box-style', - label=_('voltage'), - help_string=_('microphone input voltage'), - value_block=True, - prim_name='voltage') - else: - palette.add_block('resistance', - hidden=True, - style='box-style', - label=_('resistance'), - help_string=_('microphone input resistance'), - prim_name='resistance') - palette.add_block('voltage', - hidden=True, - style='box-style', - label=_('voltage'), - help_string=_('microphone input voltage'), - prim_name='voltage') - - # FIXME: Only add stereo capture for XO15 (broken on ARM #3675) - if self.hw in [XO15] and self._status: - palette.add_block('resistance2', - style='box-style', - label=_('resistance') + '2', - help_string=_('microphone input resistance'), - value_block=True, - prim_name='resistance2') - palette.add_block('voltage2', - style='box-style', - label=_('voltage') + '2', - help_string=_('microphone input voltage'), - value_block=True, - prim_name='voltage2') - else: - palette.add_block('resistance2', - hidden=True, - style='box-style', - label=_('resistance') + '2', - help_string=_('microphone input resistance'), - prim_name='resistance2') - palette.add_block('voltage2', - hidden=True, - style='box-style', - label=_('voltage') + '2', - help_string=_('microphone input voltage'), - prim_name='voltage2') - self._parent.lc.def_prim( - 'resistance', 0, - lambda self: primitive_dictionary['resistance'](0)) - self._parent.lc.def_prim( - 'voltage', 0, lambda self: primitive_dictionary['voltage'](0)) - self._parent.lc.def_prim( - 'resistance2', 0, - lambda self: primitive_dictionary['resistance'](1)) - self._parent.lc.def_prim( - 'voltage2', 0, lambda self: primitive_dictionary['voltage'](1)) - - self.audio_started = False - if self.hw in [XO175, XO30, XO4]: - self.PARAMETERS = { - SENSOR_AC_BIAS: (False, True, 80, True), - SENSOR_DC_NO_BIAS: (True, False, 80, False), - SENSOR_DC_BIAS: (True, True, 90, False) - } - elif self.hw == XO15: - self.PARAMETERS = { - SENSOR_AC_BIAS: (False, True, 80, True), - SENSOR_DC_NO_BIAS: (True, False, 80, False), - SENSOR_DC_BIAS: (True, True, 90, False) - } - elif self.hw == XO1: - self.PARAMETERS = { - SENSOR_AC_BIAS: (False, True, 40, True), - SENSOR_DC_NO_BIAS: (True, False, 0, False), - SENSOR_DC_BIAS: (True, True, 0, False) - } - else: - self.PARAMETERS = { - SENSOR_AC_BIAS: (None, True, 40, True), - SENSOR_DC_NO_BIAS: (True, False, 80, False), - SENSOR_DC_BIAS: (True, True, 90, False) - } - - def start(self): - ''' Start grabbing audio if there is an audio block in use ''' - if not self._status: - return - if self.audio_started: - self.audiograb.stop_grabbing() - if len(self._parent.block_list.get_similar_blocks( - 'block', ['volume', 'sound', 'pitch'])) > 0: - mode, bias, gain, boost = self.PARAMETERS[SENSOR_AC_BIAS] - elif len(self._parent.block_list.get_similar_blocks( - 'block', ['resistance', 'resistance2'])) > 0: - mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_BIAS] - elif len(self._parent.block_list.get_similar_blocks( - 'block', ['voltage', 'voltage2'])) > 0: - mode, bias, gain, boost = self.PARAMETERS[SENSOR_DC_NO_BIAS] - else: - return # No audio blocks in use. - self.audiograb = AudioGrab(self.new_buffer, self, - mode, bias, gain, boost) - self._channels = self.audiograb.channels - for i in range(self._channels): - self.ringbuffer.append(RingBuffer1d(self.max_samples, - dtype='int16')) - self.audiograb.start_grabbing() - self.audio_started = True - - def new_buffer(self, buf, channel=0): - ''' Append a new buffer to the ringbuffer ''' - self.ringbuffer[channel].append(buf) - return True - - def stop(self): - ''' This gets called by the stop button ''' - if self._status and self.audio_started: - self.audiograb.on_activity_quit() # reset all setting - self.audio_started = False - - def goto_background(self): - ''' This gets called when your process is sent to the background ''' - pass - - def return_to_foreground(self): - ''' This gets called when your process returns from the background ''' - pass - - def quit(self): - ''' This gets called by the quit button ''' - if self._status and self.audio_started: - self.audiograb.on_activity_quit() - - def _status_report(self): - debug_output( - 'Reporting audio sensor status: %s' % (str(self._status)), - self._parent.running_sugar) - return self._status - - # Block primitives used in talogo - - def prim_volume(self, channel): - if not self._status: - return 0 - # Return average of both channels if sampling in stereo - if self._channels == 2: - chan0 = self._prim_volume(0) - chan1 = self._prim_volume(1) - return (chan0 + chan1) / 2 - else: - return self._prim_volume(0) - - def _prim_volume(self, channel): - ''' return mic in value ''' - buf = self.ringbuffer[channel].read(None, self.input_step) - if len(buf) > 0: - volume = float(_avg(buf, abs_value=True)) - self._parent.lc.update_label_value('volume', volume) - return volume - else: - return 0 - - def prim_sound(self, channel): - if not self._status: - return 0 - # Return average of both channels if sampling in stereo - if self._channels == 2: - chan0 = self._prim_sound(0) - chan1 = self._prim_sound(1) - return (chan0 + chan1) / 2 - else: - return self._prim_sound(0) - - def _prim_sound(self, channel): - ''' return raw mic in value ''' - buf = self.ringbuffer[channel].read(None, self.input_step) - if len(buf) > 0: - sound = float(buf[0]) - if self._parent.lc.update_values: - self._parent.lc.update_label_value('sound', sound) - return sound - else: - return 0 - - def prim_pitch(self, channel): - if not PITCH_AVAILABLE or not self._status: - return 0 - # Return average of both channels if sampling in stereo - if self._channels == 2: - chan0 = self._prim_pitch(0) - chan1 = self._prim_pitch(1) - return (chan0 + chan1) / 2 - else: - return self._prim_pitch(0) - - def _prim_pitch(self, channel): - ''' return index of max value in fft of mic in values ''' - buf = self.ringbuffer[channel].read(None, self.input_step) - if len(buf) > 0: - buf = rfft(buf) - buf = abs(buf) - maxi = buf.argmax() - if maxi == 0: - pitch = 0 - else: # Simple interpolation - a, b, c = buf[maxi - 1], buf[maxi], buf[maxi + 1] - maxi -= a / float(a + b + c) - maxi += c / float(a + b + c) - pitch = maxi * 48000 / (len(buf) * 2) - - if self._parent.lc.update_values: - self._parent.lc.update_label_value('pitch', pitch) - return pitch - else: - return 0 - - def prim_resistance(self, channel): - if not self.hw in [XO1, XO15, XO175, XO30, XO4] or not self._status: - return 0 - if self.hw in [XO1, XO4]: - resistance = self._prim_resistance(0) - if self._parent.lc.update_values: - self._update_resistance_labels(0, resistance) - return resistance - elif self.hw == XO15: - resistance = self._prim_resistance(channel) - if self._parent.lc.update_values: - self._update_resistance_labels(channel, resistance) - return resistance - # FIXME: For XO175: channel assignment is seemingly random - # (#3675), so sum both channels (one of them will be 0) - else: - chan0 = self._prim_resistance(0) - chan1 = self._prim_resistance(1) - resistance = chan0 + chan1 - if self._parent.lc.update_values: - self._update_resistance_labels(0, resistance) - return resistance - - def _prim_resistance(self, channel): - ''' return resistance sensor value ''' - buf = self.ringbuffer[channel].read(None, self.input_step) - if len(buf) > 0: - # See <http://bugs.sugarlabs.org/ticket/552#comment:7> - # TODO: test this calibration on XO 1.5, XO 1.75 - avg_buf = float(_avg(buf)) - if self.hw == XO1: - resistance = 2.718 ** ((avg_buf * 0.000045788) + 8.0531) - elif self.hw == XO15: - if avg_buf > 0: - resistance = (420000000 / avg_buf) - 13500 - else: - resistance = 420000000 - elif self.hw in [XO175, XO4]: - if avg_buf < 30700: - resistance = .12 * ((180000000 / (30700 - avg_buf)) - 3150) - else: - resistance = 999999999 - else: # XO 3.0 - if avg_buf < 30514: - resistance = (46000000 / (30514 - avg_buf)) - 1150 - else: - resistance = 999999999 - if resistance < 0: - resistance = 0 - return resistance - else: - return 0 - - def _update_resistance_labels(self, channel, resistance): - if channel == 0: - self._parent.lc.update_label_value('resistance', resistance) - else: - self._parent.lc.update_label_value('resistance2', resistance) - - def prim_voltage(self, channel): - if not self.hw in [XO1, XO15, XO175, XO30, XO4] or not self._status: - return 0 - if self.hw in [XO1, XO4]: - voltage = self._prim_voltage(0) - if self._parent.lc.update_values: - self._update_voltage_labels(0, voltage) - return voltage - elif self.hw == XO15: - voltage = self._prim_voltage(channel) - if self._parent.lc.update_values: - self._update_voltage_labels(channel, voltage) - return voltage - # FIXME: For XO175: channel assignment is seemingly random - # (#3675), so sum both channels (one of them will be 0) - else: - chan0 = self._prim_voltage(0) - chan1 = self._prim_voltage(1) - voltage = chan0 + chan1 - if self._parent.lc.update_values: - self._update_voltage_labels(0, voltage) - return voltage - - def _prim_voltage(self, channel): - ''' return voltage sensor value ''' - buf = self.ringbuffer[channel].read(None, self.input_step) - if len(buf) > 0: - # See <http://bugs.sugarlabs.org/ticket/552#comment:7> - voltage = float(_avg(buf)) * self.voltage_gain + self.voltage_bias - return voltage - else: - return 0 - - def _update_voltage_labels(self, channel, voltage): - if channel == 0: - self._parent.lc.update_label_value('voltage', voltage) - else: - self._parent.lc.update_label_value('voltage2', voltage) diff --git a/plugins/audio_sensors/audiograb.py b/plugins/audio_sensors/audiograb.py deleted file mode 100644 index 228e4c2..0000000 --- a/plugins/audio_sensors/audiograb.py +++ /dev/null @@ -1,673 +0,0 @@ -#! /usr/bin/python -# -# Author: Arjun Sarwal arjun@laptop.org -# Copyright (C) 2007, Arjun Sarwal -# Copyright (C) 2009-12 Walter Bender -# Copyright (C) 2009, Benjamin Berg, Sebastian Berg -# Copyright (C) 2009, Sayamindu Dasgupta -# Copyright (C) 2010, Sascha Silbe -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# You should have received a copy of the GNU General Public License -# along with this library; if not, write to the Free Software -# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA - -import pygst -import gst -import gst.interfaces -from numpy import fromstring -import subprocess -import traceback -from string import find -from threading import Timer - -from TurtleArt.taconstants import XO1, XO4 -from TurtleArt.tautils import debug_output - -# Initial device settings -RATE = 48000 -MIC_BOOST = True -DC_MODE_ENABLE = False -CAPTURE_GAIN = 50 -BIAS = True - -# Setting on quit -QUIT_MIC_BOOST = False -QUIT_DC_MODE_ENABLE = False -QUIT_CAPTURE_GAIN = 100 -QUIT_BIAS = True - -# Capture modes -SENSOR_AC_NO_BIAS = 'external' -SENSOR_AC_BIAS = 'sound' -SENSOR_DC_NO_BIAS = 'voltage' -SENSOR_DC_BIAS = 'resistance' - - -class AudioGrab(): - """ The interface between measure and the audio device """ - - def __init__(self, callable1, parent, - mode=None, bias=None, gain=None, boost=None): - """ Initialize the class: callable1 is a data buffer; - parent is the parent class""" - - self.callable1 = callable1 - self.parent = parent - self.sensor = None - - self.temp_buffer = [0] - - self.rate = RATE - # Force XO1 and XO4 to use just 1 channel - if self.parent.hw in [XO1, XO4]: - self.channels = 1 - else: - self.channels = None - - self._dc_control = None - self._mic_bias_control = None - self._capture_control = None - self._mic_boost_control = None - self._labels_available = True # Query controls for device names - - self._query_mixer() - # If Channels was not found in the Capture controller, guess. - if self.channels is None: - debug_output('Guessing there are 2 channels', - self.parent.running_sugar) - self.channels = 2 - - # Set mixer to known state - self.set_dc_mode(DC_MODE_ENABLE) - self.set_bias(BIAS) - self.set_capture_gain(CAPTURE_GAIN) - self.set_mic_boost(MIC_BOOST) - - self.master = self.get_master() - self.dc_mode = self.get_dc_mode() - self.bias = self.get_bias() - self.capture_gain = self.get_capture_gain() - self.mic_boost = self.get_mic_boost() - - # Set mixer to desired state - self._set_sensor_type(mode, bias, gain, boost) - self.dc_mode = self.get_dc_mode() - self.bias = self.get_bias() - self.capture_gain = self.get_capture_gain() - self.mic_boost = self.get_mic_boost() - - # Set up gstreamer pipeline - self._pad_count = 0 - self.pads = [] - self.queue = [] - self.fakesink = [] - self.pipeline = gst.Pipeline('pipeline') - self.alsasrc = gst.element_factory_make('alsasrc', 'alsa-source') - self.pipeline.add(self.alsasrc) - self.caps1 = gst.element_factory_make('capsfilter', 'caps1') - self.pipeline.add(self.caps1) - caps_str = 'audio/x-raw-int,rate=%d,channels=%d,depth=16' % ( - RATE, self.channels) - self.caps1.set_property('caps', gst.caps_from_string(caps_str)) - if self.channels == 1: - self.fakesink.append(gst.element_factory_make('fakesink', 'fsink')) - self.pipeline.add(self.fakesink[0]) - self.fakesink[0].connect('handoff', self.on_buffer, 0) - self.fakesink[0].set_property('signal-handoffs', True) - gst.element_link_many(self.alsasrc, self.caps1, self.fakesink[0]) - else: - if not hasattr(self, 'splitter'): - self.splitter = gst.element_factory_make('deinterleave') - self.pipeline.add(self.splitter) - self.splitter.set_properties('keep-positions=true', 'name=d') - self.splitter.connect('pad-added', self._splitter_pad_added) - gst.element_link_many(self.alsasrc, self.caps1, self.splitter) - for i in range(self.channels): - self.queue.append(gst.element_factory_make('queue')) - self.pipeline.add(self.queue[i]) - self.fakesink.append(gst.element_factory_make('fakesink')) - self.pipeline.add(self.fakesink[i]) - self.fakesink[i].connect('handoff', self.on_buffer, i) - self.fakesink[i].set_property('signal-handoffs', True) - - self.dont_queue_the_buffer = False - - # Timer for interval sampling and switch to indicate when to capture - self.capture_timer = None - self.capture_interval_sample = False - - def _query_mixer(self): - self._mixer = gst.element_factory_make('alsamixer') - rc = self._mixer.set_state(gst.STATE_PAUSED) - assert rc == gst.STATE_CHANGE_SUCCESS - - # Query the available controls - tracks_list = self._mixer.list_tracks() - if hasattr(tracks_list[0].props, 'untranslated_label'): - self._capture_control = self._find_control(['capture', 'axi']) - self._dc_control = self._find_control(['dc mode']) - self._mic_bias_control = self._find_control(['mic bias', - 'dc input bias', - 'v_refout']) - self._mic_boost_control = self._find_control(['mic boost', - 'mic1 boost', - 'mic boost (+20db)', - 'internal mic boost', - 'analog mic boost']) - self._mic_gain_control = self._find_control(['mic']) - self._master_control = self._find_control(['master']) - else: # Use hardwired values - self._labels_available = False - - def _unlink_sink_queues(self): - ''' Build the sink pipelines ''' - - # If there were existing pipelines, unlink them - for i in range(self._pad_count): - try: - self.splitter.unlink(self.queue[i]) - self.queue[i].unlink(self.fakesink[i]) - except: - traceback.print_exc() - - # Build the new pipelines - self._pad_count = 0 - self.pads = [] - - def _splitter_pad_added(self, element, pad): - ''' Seems to be the case that ring is right channel 0, - tip is left channel 1''' - ''' - debug_output('splitter pad %d added' % (self._pad_count), - self.parent.running_sugar) - ''' - self.pads.append(pad) - if self._pad_count < self.channels: - pad.link(self.queue[self._pad_count].get_pad('sink')) - self.queue[self._pad_count].get_pad('src').link( - self.fakesink[self._pad_count].get_pad('sink')) - self._pad_count += 1 - else: - debug_output('ignoring channels > %d' % (self.channels), - self.parent.running_sugar) - - def set_handoff_signal(self, handoff_state): - '''Sets whether the handoff signal would generate an interrupt - or not''' - for i in range(len(self.fakesink)): - self.fakesink[i].set_property('signal-handoffs', handoff_state) - - def _new_buffer(self, buf, channel): - ''' Use a new buffer ''' - if not self.dont_queue_the_buffer: - self.temp_buffer = buf - self.callable1(buf, channel=channel) - else: - pass - - def on_buffer(self, element, data_buffer, pad, channel): - '''The function that is called whenever new data is available - This is the signal handler for the handoff signal''' - temp_buffer = fromstring(data_buffer, 'int16') - if not self.dont_queue_the_buffer: - self._new_buffer(temp_buffer, channel=channel) - return False - - def start_sound_device(self): - '''Start or Restart grabbing data from the audio capture''' - gst.event_new_flush_start() - self.pipeline.set_state(gst.STATE_PLAYING) - - def stop_sound_device(self): - '''Stop grabbing data from capture device''' - gst.event_new_flush_stop() - self.pipeline.set_state(gst.STATE_NULL) - - def sample_now(self): - ''' Log the current sample now. This method is called from the - capture_timer object when the interval expires. ''' - self.capture_interval_sample = True - self.make_timer() - - def set_buffer_interval_logging(self, interval=0): - '''Sets the number of buffers after which a buffer needs to be - emitted''' - self.buffer_interval_logging = interval - - def set_sampling_rate(self, sr): - '''Sets the sampling rate of the capture device - Sampling rate must be given as an integer for example 16000 for - setting 16Khz sampling rate - The sampling rate would be set in the device to the nearest available''' - self.pause_grabbing() - caps_str = 'audio/x-raw-int,rate=%d,channels=%d,depth=16' % ( - sr, self.channels) - self.caps1.set_property('caps', gst.caps_from_string(caps_str)) - self.resume_grabbing() - - def get_sampling_rate(self): - '''Gets the sampling rate of the capture device''' - return int(self.caps1.get_property('caps')[0]['rate']) - - def set_callable1(self, callable1): - '''Sets the callable to the drawing function for giving the - data at the end of idle-add''' - self.callable1 = callable1 - - def start_grabbing(self): - '''Called right at the start of the Activity''' - self.start_sound_device() - self.set_handoff_signal(True) - - def pause_grabbing(self): - '''When Activity goes into background''' - self.save_state() - self.stop_sound_device() - - def resume_grabbing(self): - '''When Activity becomes active after going to background''' - self.start_sound_device() - self.resume_state() - self.set_handoff_signal(True) - - def stop_grabbing(self): - '''Not used ???''' - self.stop_sound_device() - self.set_handoff_signal(False) - - def _find_control(self, prefixes): - '''Try to find a mixer control matching one of the prefixes. - - The control with the best match (smallest difference in length - between label and prefix) will be returned. If no match is found, - None is returned. - ''' - def best_prefix(label, prefixes): - matches =\ - [len(label) - len(p) for p in prefixes if label.startswith(p)] - if not matches: - return None - - matches.sort() - return matches[0] - - controls = [] - for track in self._mixer.list_tracks(): - label = track.props.untranslated_label.lower() - diff = best_prefix(label, prefixes) - if diff is not None: - controls.append((track, diff)) - - controls.sort(key=lambda e: e[1]) - if controls: - ''' - debug_output('Found control: %s' %\ - (str(controls[0][0].props.untranslated_label)), - self.parent.running_sugar) - ''' - if self.channels is None: - if hasattr(controls[0][0], 'num_channels'): - channels = controls[0][0].num_channels - if channels > 0: - self.channels = channels - ''' - debug_output('setting channels to %d' % (self.channels), - self.parent.running_sugar) - ''' - - return controls[0][0] - - return None - - def save_state(self): - '''Saves the state of all audio controls''' - self.master = self.get_master() - self.bias = self.get_bias() - self.dc_mode = self.get_dc_mode() - self.capture_gain = self.get_capture_gain() - self.mic_boost = self.get_mic_boost() - - def resume_state(self): - '''Put back all audio control settings from the saved state''' - self.set_master(self.master) - self.set_bias(self.bias) - self.set_dc_mode(self.dc_mode) - self.set_capture_gain(self.capture_gain) - self.set_mic_boost(self.mic_boost) - - def _get_mute(self, control, name, default): - '''Get mute status of a control''' - if not control: - return default - return bool(control.flags & gst.interfaces.MIXER_TRACK_MUTE) - - def _set_mute(self, control, name, value): - '''Mute a control''' - if not control: - return - self._mixer.set_mute(control, value) - - def _get_volume(self, control, name): - '''Get volume of a control and convert to a scale of 0-100''' - if not control: - return 100 - volume = self._mixer.get_volume(control) - if type(volume) == tuple: - hw_volume = volume[0] - else: - hw_volume = volume - min_vol = control.min_volume - max_vol = control.max_volume - if max_vol == min_vol: - percent = 100 - else: - percent = (hw_volume - min_vol) * 100 // (max_vol - min_vol) - return percent - - def _set_volume(self, control, name, value): - '''Sets the level of a control on a scale of 0-100''' - if not control: - return - # convert value to scale of control - min_vol = control.min_volume - max_vol = control.max_volume - if min_vol != max_vol: - hw_volume = value * (max_vol - min_vol) // 100 + min_vol - self._mixer.set_volume(control, - (hw_volume,) * control.num_channels) - - def amixer_set(self, control, state): - ''' Direct call to amixer for old systems. ''' - if state: - output = check_output( - ['amixer', 'set', "%s" % (control), 'unmute'], - 'Problem with amixer set "%s" unmute' % (control), - self.parent.running_sugar) - else: - output = check_output( - ['amixer', 'set', "%s" % (control), 'mute'], - 'Problem with amixer set "%s" mute' % (control), - self.parent.running_sugar) - - def mute_master(self): - '''Mutes the Master Control''' - if self._labels_available and self.parent.hw != XO1: - self._set_mute(self._master_control, 'Master', True) - else: - self.amixer_set('Master', False) - - def unmute_master(self): - '''Unmutes the Master Control''' - if self._labels_available and self.parent.hw != XO1: - self._set_mute(self._master_control, 'Master', True) - else: - self.amixer_set('Master', True) - - def set_master(self, master_val): - '''Sets the Master gain slider settings - master_val must be given as an integer between 0 and 100 indicating the - percentage of the slider to be set''' - if self._labels_available: - self._set_volume(self._master_control, 'Master', master_val) - else: - output = check_output( - ['amixer', 'set', 'Master', "%d%s" % (master_val, '%')], - 'Problem with amixer set Master', - self.parent.running_sugar) - - def get_master(self): - '''Gets the MIC gain slider settings. The value returned is an - integer between 0-100 and is an indicative of the percentage 0 - 100%''' - if self._labels_available: - return self._get_volume(self._master_control, 'master') - else: - output = check_output(['amixer', 'get', 'Master'], - 'amixer: Could not get Master volume', - self.parent.running_sugar) - if output is None: - return 100 - else: - output = output[find(output, 'Front Left:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, '%]')] - return int(output) - - def set_bias(self, bias_state=False): - '''Enables / disables bias voltage.''' - if self._labels_available and self.parent.hw != XO1: - if self._mic_bias_control is None: - return - # If there is a flag property, use set_mute - if self._mic_bias_control not in self._mixer.list_tracks() or \ - hasattr(self._mic_bias_control.props, 'flags'): - self._set_mute( - self._mic_bias_control, 'Mic Bias', not bias_state) - # We assume that values are sorted from lowest (=off) to highest. - # Since they are mixed strings ('Off', '50%', etc.), we cannot - # easily ensure this by sorting with the default sort order. - elif bias_state: # Otherwise, set with volume - self._mixer.set_volume(self._mic_bias_control, - self._mic_bias_control.max_volume) - else: - self._mixer.set_volume(self._mic_bias_control, - self._mic_bias_control.min_volume) - elif not self._labels_available: - self.amixer_set('V_REFOUT Enable', bias_state) - else: - self.amixer_set('MIC Bias Enable', bias_state) - - def get_bias(self): - '''Check whether bias voltage is enabled.''' - if self._labels_available: - if self._mic_bias_control is None: - return False - if self._mic_bias_control not in self._mixer.list_tracks() or \ - hasattr(self._mic_bias_control.props, 'flags'): - return not self._get_mute( - self._mic_bias_control, 'Mic Bias', False) - value = self._mixer.get_volume(self._mic_bias_control) - if value == self._mic_bias_control.min_volume: - return False - return True - else: - output = check_output(['amixer', 'get', "V_REFOUT Enable"], - 'amixer: Could not get mic bias voltage', - self.parent.running_sugar) - if output is None: - return False - else: - output = output[find(output, 'Mono:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, ']')] - if output == 'on': - return True - return False - - def set_dc_mode(self, dc_mode=False): - '''Sets the DC Mode Enable control - pass False to mute and True to unmute''' - if self._labels_available and self.parent.hw != XO1: - if self._dc_control is not None: - self._set_mute(self._dc_control, 'DC mode', not dc_mode) - else: - self.amixer_set('DC Mode Enable', dc_mode) - - def get_dc_mode(self): - '''Returns the setting of DC Mode Enable control - i.e. True: Unmuted and False: Muted''' - if self._labels_available and self.parent.hw != XO1: - if self._dc_control is not None: - return not self._get_mute(self._dc_control, 'DC mode', False) - else: - return False - else: - output = check_output(['amixer', 'get', "DC Mode Enable"], - 'amixer: Could not get DC Mode', - self.parent.running_sugar) - if output is None: - return False - else: - output = output[find(output, 'Mono:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, ']')] - if output == 'on': - return True - return False - - def set_mic_boost(self, mic_boost=False): - '''Set Mic Boost. - True = +20dB, False = 0dB''' - if self._labels_available: - if self._mic_boost_control is None: - return - # If there is a volume, use set volume - if hasattr(self._mic_boost_control, 'min_volume'): - if mic_boost: - self._set_volume(self._mic_boost_control, 'boost', 100) - else: - self._set_volume(self._mic_boost_control, 'boost', 0) - # Else if there is a flag property, use set_mute - elif self._mic_boost_control not in self._mixer.list_tracks() or \ - hasattr(self._mic_boost_control.props, 'flags'): - self._set_mute( - self._mic_boost_control, 'Mic Boost', not mic_boost) - else: - self.amixer_set('Mic Boost (+20dB)', mic_boost) - - def get_mic_boost(self): - '''Return Mic Boost setting. - True = +20dB, False = 0dB''' - if self._labels_available: - if self._mic_boost_control is None: - return False - if self._mic_boost_control not in self._mixer.list_tracks() or \ - hasattr(self._mic_boost_control.props, 'flags'): - return not self._get_mute( - self._mic_boost_control, 'Mic Boost', False) - else: # Compare to min value - value = self._mixer.get_volume(self._mic_boost_control) - if value != self._mic_boost_control.min_volume: - return True - return False - else: - output = check_output(['amixer', 'get', "Mic Boost (+20dB)"], - 'amixer: Could not get mic boost', - self.parent.running_sugar) - if output is None: - return False - else: - output = output[find(output, 'Mono:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, ']')] - if output == 'on': - return True - return False - - def set_capture_gain(self, capture_val): - '''Sets the Capture gain slider settings - capture_val must be given as an integer between 0 and 100 indicating the - percentage of the slider to be set''' - if self._labels_available and self.parent.hw != XO1: - if self._capture_control is not None: - self._set_volume(self._capture_control, 'Capture', capture_val) - else: - output = check_output( - ['amixer', 'set', 'Capture', "%d%s" % (capture_val, '%')], - 'Problem with amixer set Capture', - self.parent.running_sugar) - - def get_capture_gain(self): - '''Gets the Capture gain slider settings. The value returned is an - integer between 0-100 and is an indicative of the percentage 0 - 100%''' - if self._labels_available: - if self._capture_control is not None: - return self._get_volume(self._capture_control, 'Capture') - else: - return 0 - else: - output = check_output(['amixer', 'get', 'Capture'], - 'amixer: Could not get Capture level', - self.parent.running_sugar) - if output is None: - return 100 - else: - output = output[find(output, 'Front Left:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, '%]')] - return int(output) - - def set_mic_gain(self, mic_val): - '''Sets the MIC gain slider settings - mic_val must be given as an integer between 0 and 100 indicating the - percentage of the slider to be set''' - if self._labels_available and self.parent.hw != XO1: - self._set_volume(self._mic_gain_control, 'Mic', mic_val) - else: - output = check_output( - ['amixer', 'set', 'Mic', "%d%s" % (mic_val, '%')], - 'Problem with amixer set Mic', - self.parent.running_sugar) - - def get_mic_gain(self): - '''Gets the MIC gain slider settings. The value returned is an - integer between 0-100 and is an indicative of the percentage 0 - 100%''' - if self._labels_available and self.parent.hw != XO1: - return self._get_volume(self._mic_gain_control, 'Mic') - else: - output = check_output(['amixer', 'get', 'Mic'], - 'amixer: Could not get mic gain level', - self.parent.running_sugar) - if output is None: - return 100 - else: - output = output[find(output, 'Mono:'):] - output = output[find(output, '[') + 1:] - output = output[:find(output, '%]')] - return int(output) - - def _set_sensor_type(self, mode=None, bias=None, gain=None, boost=None): - '''Helper to modify (some) of the sensor settings.''' - if mode is not None: - self.set_dc_mode(mode) - if bias is not None: - self.set_bias(bias) - if gain is not None: - self.set_capture_gain(gain) - if boost is not None: - self.set_mic_boost(boost) - self.save_state() - - def on_activity_quit(self): - '''When Activity quits''' - self.set_mic_boost(QUIT_MIC_BOOST) - self.set_dc_mode(QUIT_DC_MODE_ENABLE) - self.set_capture_gain(QUIT_CAPTURE_GAIN) - self.set_bias(QUIT_BIAS) - self.stop_sound_device() - - -def check_output(command, warning, running_sugar=True): - ''' Workaround for old systems without subprocess.check_output''' - if hasattr(subprocess, 'check_output'): - try: - output = subprocess.check_output(command) - except subprocess.CalledProcessError: - debug_output(warning, running_sugar) - return None - else: - import commands - - cmd = '' - for c in command: - cmd += c - cmd += ' ' - (status, output) = commands.getstatusoutput(cmd) - if status != 0: - debug_output(warning, running_sugar) - return None - return output diff --git a/plugins/audio_sensors/icons/sensoroff.svg b/plugins/audio_sensors/icons/sensoroff.svg deleted file mode 100644 index 0a16670..0000000 --- a/plugins/audio_sensors/icons/sensoroff.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<rect - width="42.763924" - height="42.763924" - x="6.1180382" - y="6.1180382" - id="rect2986" - style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.23607516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g - transform="matrix(0.87078705,0,0,0.87078705,3.2821055,2.9298726)" - id="network-wired_1_" - style="display:block"> - <g - id="network-wired"> - <line - id="line3076" - y2="23.993" - y1="32.438999" - x2="16.966999" - x1="16.966999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - <line - id="line3078" - y2="28.215" - y1="28.215" - x2="34.938" - x1="29.636999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - - <rect - width="9.7939997" - height="7.599" - x="42.157001" - y="24.312" - id="rect3080" - style="fill:#ffffff;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round" /> - <path - d="m 16.967,23.993 c 0,-2.334 -1.892,-4.224 -4.224,-4.224 -2.332,0 -4.223,1.889 -4.223,4.224" - id="path3082" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,2.334 -1.891,4.224 -4.224,4.224 -2.332,0 -4.223,-1.89 -4.223,-4.224" - id="path3084" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,-2.332 1.893,-4.226 4.224,-4.226" - id="path3086" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 8.52,23.993 c 0,2.332 -1.892,4.222 -4.223,4.222" - id="path3088" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - - <rect - width="14.477" - height="11.35" - x="31.945" - y="22.438" - id="rect3090" - style="fill:#ffffff;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - </g> -</g></svg>
\ No newline at end of file diff --git a/plugins/audio_sensors/icons/sensoron.svg b/plugins/audio_sensors/icons/sensoron.svg deleted file mode 100644 index d756860..0000000 --- a/plugins/audio_sensors/icons/sensoron.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /><rect - width="55" - height="55" - x="0" - y="0" - id="rect3269" - style="fill:#ffd200;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g - transform="translate(0.27777716,18.796296)" - id="g4054"><line - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="17.778971" - x2="17.778971" - y1="12.381037" - y2="5.0263696" - id="line3076" /><line - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="28.811842" - x2="33.427887" - y1="8.7028332" - y2="8.7028332" - id="line3078" /><rect - width="8.5284882" - height="6.6171107" - x="39.7141" - y="5.3041511" - id="rect3080" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1.95927083;stroke-linecap:round;stroke-opacity:1" /><path - d="m 17.778971,5.0263697 c 0,-2.032417 -1.647529,-3.6782045 -3.678204,-3.6782045 -2.030675,0 -3.677334,1.6449167 -3.677334,3.6782045" - id="path3082" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,2.032417 -1.646658,3.678205 -3.678205,3.678205 -2.030675,0 -3.677333,-1.645788 -3.677333,-3.678205" - id="path3084" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,-2.030675 1.6484,-3.679946 3.678204,-3.679946" - id="path3086" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 10.423433,5.0263697 c 0,2.0306754 -1.6475288,3.6764629 -3.6773334,3.6764629" - id="path3088" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><rect - width="12.606384" - height="9.8834333" - x="30.821619" - y="3.6722956" - id="rect3090" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/plugins/audio_sensors/ringbuffer.py b/plugins/audio_sensors/ringbuffer.py deleted file mode 100644 index 2afb5c9..0000000 --- a/plugins/audio_sensors/ringbuffer.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (C) 2009, Benjamin Berg, Sebastian Berg -# Copyright (C) 2010, Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -import numpy as np - - -class RingBuffer1d(object): - """This class implements an array being written in as a ring and that can - be read from continuously ending with the newest data or starting with the - oldest. It returns a numpy array copy of the data; - """ - - def __init__(self, length, dtype=None): - """Initialize the 1 dimensional ring buffer with the given lengths. - The initial values are all 0s - """ - self.offset = 0 - - self._data = np.zeros(length, dtype=dtype) - - self.stored = 0 - - def fill(self, number): - self._data.fill(number) - self.offset = 0 - - def append(self, data): - """Append to the ring buffer (and overwrite old data). If len(data) - is greater then the ring buffers length, the newest data takes - precedence. - """ - data = np.asarray(data) - - if len(self._data) == 0: - return - - if len(data) >= len(self._data): - self._data[:] = data[-len(self._data):] - self.offset = 0 - self.stored = len(self._data) - - elif len(self._data) - self.offset >= len(data): - self._data[self.offset: self.offset + len(data)] = data - self.offset = self.offset + len(data) - self.stored += len(data) - else: - self._data[self.offset:] = data[:len(self._data) - self.offset] - self._data[:len(data) - (len(self._data) - self.offset)] = \ - data[-len(data) + (len(self._data) - self.offset):] - self.offset = len(data) - (len(self._data) - self.offset) - self.stored += len(data) - - if len(self._data) <= self.stored: - self.read = self._read - - def read(self, number=None, step=1): - """Read the ring Buffer. Number can be positive or negative. - Positive values will give the latest information, negative values will - give the newest added information from the buffer. (in normal order) - - Before the buffer is filled once: This returns just None - """ - return np.array([]) - - def _read(self, number=None, step=1): - """Read the ring Buffer. Number can be positive or negative. - Positive values will give the latest information, negative values will - give the newest added information from the buffer. (in normal order) - """ - if number == None: - number = len(self._data) // step - - number *= step - assert abs(number) <= len(self._data), \ - 'Number to read*step must be smaller then length' - - if number < 0: - if abs(number) <= self.offset: - return self._data[self.offset + number:self.offset:step] - - spam = (self.offset - 1) % step - - return np.concatenate( - (self._data[step - spam - 1 + self.offset + number::step], - self._data[spam:self.offset:step])) - - if number - (len(self._data) - self.offset) > 0: - spam = ((self.offset + number) - self.offset - 1) % step - return np.concatenate( - (self._data[self.offset:self.offset + number:step], - self._data[spam:number - - (len(self._data) - self.offset):step])) - - return self._data[self.offset:self.offset + number:step].copy() diff --git a/plugins/camera_sensor/camera_sensor.py b/plugins/camera_sensor/camera_sensor.py deleted file mode 100644 index 6509a88..0000000 --- a/plugins/camera_sensor/camera_sensor.py +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env python -#Copyright (c) 2011, 2012 Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import gst -import gtk -from fcntl import ioctl -import os -from time import time - -from gettext import gettext as _ - -from plugins.camera_sensor.tacamera import Camera -from plugins.camera_sensor.v4l2 import v4l2_control, V4L2_CID_AUTOGAIN, \ - VIDIOC_G_CTRL, VIDIOC_S_CTRL - -from plugins.plugin import Plugin - -from TurtleArt.tapalette import make_palette -from TurtleArt.talogo import media_blocks_dictionary, primitive_dictionary -from TurtleArt.tautils import get_path, debug_output -from TurtleArt.taconstants import MEDIA_SHAPES, NO_IMPORT, SKIN_PATHS, \ - BLOCKS_WITH_SKIN - - -class Camera_sensor(Plugin): - - def __init__(self, parent): - ''' Make sure there is a camera device ''' - self._parent = parent - self._status = False - self._ag_control = None - self.devices = [] - self.cameras = [] - - if os.path.exists('/dev/video0'): - self.devices.append('/dev/video0') - if os.path.exists('/dev/video1'): - self.devices.append('/dev/video1') - if len(self.devices) > 0: - self._status = True - else: - self._status = False - - def setup(self): - ''' Set up the palettes ''' - sensors_palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_( - 'Palette of sensor blocks'), - position=6) - media_palette = make_palette('media', - colors=["#A0FF00", "#80A000"], - help_string=_('Palette of media objects'), - position=7) - - # set up camera-specific blocks - primitive_dictionary['read_camera'] = self.prim_read_camera - media_blocks_dictionary['camera'] = self.prim_take_picture0 - media_blocks_dictionary['camera1'] = self.prim_take_picture1 - - SKIN_PATHS.append('plugins/camera_sensor/images') - - if self._status: - sensors_palette.add_block('luminance', - style='box-style', - label=_('brightness'), - help_string=_( - 'light level detected by camera'), - value_block=True, - prim_name='luminance') - self._parent.lc.def_prim('luminance', 0, - lambda self: primitive_dictionary['read_camera']( - luminance_only=True)) - - # Depreciated block - sensors_palette.add_block('read_camera', - hidden=True, - style='box-style', - label=_('brightness'), - help_string=_( - 'Average RGB color from camera \ -is pushed to the stack'), - value_block=True, - prim_name='read_camera') - self._parent.lc.def_prim('read_camera', 0, - lambda self: primitive_dictionary['read_camera']()) - - media_palette.add_block('camera', - style='box-style-media', - label=' ', - default='CAMERA', - help_string=_('camera output'), - content_block=True) - if len(self.devices) > 1: - media_palette.add_block('camera1', - style='box-style-media', - label=' ', - default='CAMERA', - help_string=_('camera output'), - content_block=True) - else: - media_palette.add_block('camera1', - hidden=True, - style='box-style-media', - label=' ', - default='CAMERA', - help_string=_('camera output'), - content_block=True) - - else: # No camera, so blocks should do nothing - sensors_palette.add_block('luminance', - hidden=True, - style='box-style', - label=_('brightness'), - help_string=\ - _('light level detected by camera'), - value_block=True, - prim_name='read_camera') - self._parent.lc.def_prim('luminance', 0, - lambda self: primitive_dictionary['read_camera']( - luminance_only=True)) - - # Depreciated block - sensors_palette.add_block('read_camera', - hidden=True, - style='box-style', - label=_('brightness'), - help_string=_( - 'Average RGB color from camera \ -is pushed to the stack'), - value_block=True, - prim_name='read_camera') - self._parent.lc.def_prim('read_camera', 0, - lambda self: primitive_dictionary['read_camera']()) - - media_palette.add_block('camera', - hidden=True, - style='box-style-media', - label=' ', - default='CAMERA', - help_string=_('camera output'), - content_block=True) - - media_palette.add_block('camera1', - hidden=True, - style='box-style-media', - label=' ', - default='CAMERA', - help_string=_('camera output'), - content_block=True) - - NO_IMPORT.append('camera') - BLOCKS_WITH_SKIN.append('camera') - NO_IMPORT.append('camera1') - BLOCKS_WITH_SKIN.append('camera1') - MEDIA_SHAPES.append('camerasmall') - MEDIA_SHAPES.append('cameraoff') - MEDIA_SHAPES.append('camera1small') - MEDIA_SHAPES.append('camera1off') - - def start(self): - ''' Initialize the camera if there is an camera block in use ''' - if len(self._parent.block_list.get_similar_blocks('block', - ['camera', 'camera1', 'read_camera', 'luminance'])) > 0: - if self._status and len(self.cameras) == 0: - for device in self.devices: - self.cameras.append(Camera(device)) - - def quit(self): - ''' This gets called when the activity quits ''' - self._reset_the_camera() - - def stop(self): - ''' This gets called by the stop button ''' - self._reset_the_camera() - - def clear(self): - ''' This gets called by the clean button and erase button ''' - self._reset_the_camera() - - def _reset_the_camera(self): - if self._status and len(self.cameras) > 0: - for i, camera in enumerate(self.cameras): - camera.stop_camera_input() - self._set_autogain(1, camera=i) # enable AUTOGAIN - - def _status_report(self): - debug_output('Reporting camera status: %s' % (str(self._status)), - self._parent.running_sugar) - return self._status - - # Block primitives used in talogo - - def prim_take_picture0(self): - self._take_picture(camera=0) - - def prim_take_picture1(self): - self._take_picture(camera=1) - - def _take_picture(self, camera=0): - ''' method called by media block ''' - self._set_autogain(1, camera) # enable AUTOGAIN - self._get_pixbuf_from_camera(camera) - self._parent.lc.pixbuf = self.cameras[camera].pixbuf - - def prim_read_camera(self, luminance_only=False, camera=0): - """ Read average pixel from camera and push b, g, r to the stack """ - self.luminance_only = luminance_only - if not self._status: - if self.luminance_only: - return -1 - else: - self._parent.lc.heap.append(-1) - self._parent.lc.heap.append(-1) - self._parent.lc.heap.append(-1) - return - - array = None - self._set_autogain(0, camera=camera) # disable AUTOGAIN - self._get_pixbuf_from_camera(camera=camera) - self.calc_luminance(camera=camera) - if self.luminance_only: - self._parent.lc.update_label_value('luminance', self.luminance) - return self.luminance - else: - self._parent.lc.heap.append(self.b) - self._parent.lc.heap.append(self.g) - self._parent.lc.heap.append(self.r) - - def calc_luminance(self, camera=0): - array = self.cameras[camera].pixbuf.get_pixels() - width = self.cameras[camera].pixbuf.get_width() - height = self.cameras[camera].pixbuf.get_height() - - if array is not None: - length = int(len(array) / 3) - if length != width * height: - debug_output('array length != width x height (%d != %dx%d)' % \ - (length, width, height), - self._parent.running_sugar) - - # Average the 100 pixels in the center of the screen - r, g, b = 0, 0, 0 - row_offset = int((height / 2 - 5) * width * 3) - column_offset = int(width / 2 - 5) * 3 - for y in range(10): - i = row_offset + column_offset - for x in range(10): - r += ord(array[i]) - i += 1 - g += ord(array[i]) - i += 1 - b += ord(array[i]) - i += 1 - row_offset += width * 3 - if self.luminance_only: - self.luminance = int((r * 0.3 + g * 0.6 + b * 0.1) / 100) - else: - self.r = int(r / 100) - self.g = int(g / 100) - self.b = int(b / 100) - else: - if self.luminance_only: - self.luminance = -1 - else: - self.r = -1 - self.g = -1 - self.b = -1 - - def _set_autogain(self, state, camera=0): - ''' 0 is off; 1 is on ''' - if self._ag_control is not None and self._ag_control.value == state: - return - try: - video_capture_device = open(self.devices[camera], 'rw') - except: - video_capture_device = None - debug_output('video capture device not available', - self._parent.running_sugar) - return - self._ag_control = v4l2_control(V4L2_CID_AUTOGAIN) - try: - ioctl(video_capture_device, VIDIOC_G_CTRL, self._ag_control) - self._ag_control.value = state - ioctl(video_capture_device, VIDIOC_S_CTRL, self._ag_control) - except: - pass - video_capture_device.close() - - def _get_pixbuf_from_camera(self, camera): - ''' Regardless of how we get it, we want to return a pixbuf ''' - self._parent.lc.pixbuf = None - if self._status: - self.cameras[camera].start_camera_input() diff --git a/plugins/camera_sensor/icons/sensoroff.svg b/plugins/camera_sensor/icons/sensoroff.svg deleted file mode 100644 index 0a16670..0000000 --- a/plugins/camera_sensor/icons/sensoroff.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<rect - width="42.763924" - height="42.763924" - x="6.1180382" - y="6.1180382" - id="rect2986" - style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.23607516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g - transform="matrix(0.87078705,0,0,0.87078705,3.2821055,2.9298726)" - id="network-wired_1_" - style="display:block"> - <g - id="network-wired"> - <line - id="line3076" - y2="23.993" - y1="32.438999" - x2="16.966999" - x1="16.966999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - <line - id="line3078" - y2="28.215" - y1="28.215" - x2="34.938" - x1="29.636999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - - <rect - width="9.7939997" - height="7.599" - x="42.157001" - y="24.312" - id="rect3080" - style="fill:#ffffff;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round" /> - <path - d="m 16.967,23.993 c 0,-2.334 -1.892,-4.224 -4.224,-4.224 -2.332,0 -4.223,1.889 -4.223,4.224" - id="path3082" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,2.334 -1.891,4.224 -4.224,4.224 -2.332,0 -4.223,-1.89 -4.223,-4.224" - id="path3084" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,-2.332 1.893,-4.226 4.224,-4.226" - id="path3086" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 8.52,23.993 c 0,2.332 -1.892,4.222 -4.223,4.222" - id="path3088" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - - <rect - width="14.477" - height="11.35" - x="31.945" - y="22.438" - id="rect3090" - style="fill:#ffffff;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - </g> -</g></svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/icons/sensoron.svg b/plugins/camera_sensor/icons/sensoron.svg deleted file mode 100644 index d756860..0000000 --- a/plugins/camera_sensor/icons/sensoron.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /><rect - width="55" - height="55" - x="0" - y="0" - id="rect3269" - style="fill:#ffd200;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g - transform="translate(0.27777716,18.796296)" - id="g4054"><line - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="17.778971" - x2="17.778971" - y1="12.381037" - y2="5.0263696" - id="line3076" /><line - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="28.811842" - x2="33.427887" - y1="8.7028332" - y2="8.7028332" - id="line3078" /><rect - width="8.5284882" - height="6.6171107" - x="39.7141" - y="5.3041511" - id="rect3080" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1.95927083;stroke-linecap:round;stroke-opacity:1" /><path - d="m 17.778971,5.0263697 c 0,-2.032417 -1.647529,-3.6782045 -3.678204,-3.6782045 -2.030675,0 -3.677334,1.6449167 -3.677334,3.6782045" - id="path3082" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,2.032417 -1.646658,3.678205 -3.678205,3.678205 -2.030675,0 -3.677333,-1.645788 -3.677333,-3.678205" - id="path3084" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,-2.030675 1.6484,-3.679946 3.678204,-3.679946" - id="path3086" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 10.423433,5.0263697 c 0,2.0306754 -1.6475288,3.6764629 -3.6773334,3.6764629" - id="path3088" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><rect - width="12.606384" - height="9.8834333" - x="30.821619" - y="3.6722956" - id="rect3090" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/images/camera1off.svg b/plugins/camera_sensor/images/camera1off.svg deleted file mode 100644 index 2abf8d2..0000000 --- a/plugins/camera_sensor/images/camera1off.svg +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata29"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs27"> - - - - - - - - - - </defs><g - transform="matrix(1.0741382,0,0,1.0741382,-2.9531883,-3.3782508)" - id="media-flash-usb" - style="stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none;display:block"><g - id="g3115" - style="stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none;display:inline"><path - d="m 15.885,16.723 c -6.641,0 -12.023,5.385 -12.023,12.025 0,6.639 5.383,12.023 12.023,12.023 h 0.014 27.259 V 16.723 H 15.899" - id="path3117" - style="fill:#ffffff;stroke:#010101;stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none" /><rect - width="9.1400003" - height="14.182" - x="43.722" - y="21.731001" - id="rect3119" - style="fill:#ffffff;stroke:#010101;stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none" /></g></g><g - transform="matrix(0.57244766,0,0,0.57244766,11.646526,13.522259)" - id="camera-external" - style="display:block"><g - id="g5" - style="display:inline"><g - id="g7"><polygon - points="48.209,38.973 48.209,14.52 38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 " - id="polygon9" - style="fill:#ffffff" /></g><g - id="g11"><polygon - points="48.209,38.973 48.209,14.52 38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 " - id="polygon13" - style="fill:none;stroke:#010101;stroke-width:3.5" /></g></g><path - d="m 20.601,26.441 c 0,3.67 2.979,6.648 6.65,6.648 3.667,0 6.646,-2.979 6.646,-6.648 0,-3.668 -2.979,-6.652 -6.646,-6.652 -3.67,0 -6.65,2.986 -6.65,6.652 z" - id="path15" - style="fill:#ffffff;stroke:#010101;stroke-width:3.5;display:inline" /><rect - width="6.2870002" - height="4.1929998" - x="38.098999" - y="18.417999" - id="rect17" - style="fill:#010101;display:inline" /></g> -</svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/images/camera1small.svg b/plugins/camera_sensor/images/camera1small.svg deleted file mode 100644 index 4d7f756..0000000 --- a/plugins/camera_sensor/images/camera1small.svg +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="29" - height="15" - viewBox="0 0 29 15" - id="svg2" - xml:space="preserve"><metadata - id="metadata29"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs27"> - - - - - - - - - - </defs><g - transform="matrix(0.49560305,0,0,0.51274162,-0.00570885,-0.18882692)" - id="g2994"><g - transform="matrix(1.142777,0,0,1.142777,-3.1426369,-17.855891)" - id="media-flash-usb" - style="stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none;display:block"><g - id="g3115" - style="stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none;display:inline"><path - d="m 15.885,16.723 c -6.641,0 -12.023,5.385 -12.023,12.025 0,6.639 5.383,12.023 12.023,12.023 h 0.014 27.259 V 16.723 H 15.899" - id="path3117" - style="fill:#ffffff;stroke:#010101;stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none" /><rect - width="9.1400003" - height="14.182" - x="43.722" - y="21.731001" - id="rect3119" - style="fill:#ffffff;stroke:#010101;stroke-width:2.20384002;stroke-miterlimit:4;stroke-dasharray:none" /></g></g><g - transform="matrix(0.57244766,0,0,0.57244766,11.646526,1.105918)" - id="camera-external" - style="display:block"><g - id="g5" - style="display:inline"><g - id="g7"><polygon - points="34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 48.209,14.52 38.532,14.52 " - id="polygon9" - style="fill:#ffffff" /></g><g - id="g11"><polygon - points="34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 48.209,14.52 38.532,14.52 " - id="polygon13" - style="fill:none;stroke:#010101;stroke-width:3.5" /></g></g><path - d="m 20.601,26.441 c 0,3.67 2.979,6.648 6.65,6.648 3.667,0 6.646,-2.979 6.646,-6.648 0,-3.668 -2.979,-6.652 -6.646,-6.652 -3.67,0 -6.65,2.986 -6.65,6.652 z" - id="path15" - style="fill:#ffffff;stroke:#010101;stroke-width:3.5;display:inline" /><rect - width="6.2870002" - height="4.1929998" - x="38.098999" - y="18.417999" - id="rect17" - style="fill:#010101;display:inline" /></g></g> -</svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/images/cameraoff.svg b/plugins/camera_sensor/images/cameraoff.svg deleted file mode 100644 index 54d9c86..0000000 --- a/plugins/camera_sensor/images/cameraoff.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [ - <!ENTITY stroke_color "#010101"> - <!ENTITY fill_color "#ffffff"> -]><svg enable-background="new 0 0 55 55" height="55px" version="1.1" viewBox="0 0 55 55" width="55px" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px"><g display="block" id="camera-external"> - <g display="inline"> - <g> - <polygon fill="&fill_color;" points="38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 48.209,14.52 "/> - </g> - <g> - <polygon fill="none" points="38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 48.209,14.52 " stroke="&stroke_color;" stroke-width="3.5"/> - </g> - </g> - <path d="M20.601,26.441c0,3.67,2.979,6.648,6.65,6.648 c3.667,0,6.646-2.979,6.646-6.648c0-3.668-2.979-6.652-6.646-6.652C23.581,19.789,20.601,22.775,20.601,26.441z" display="inline" fill="&fill_color;" stroke="&stroke_color;" stroke-width="3.5"/> - <rect display="inline" fill="&stroke_color;" height="4.193" width="6.287" x="38.099" y="18.418"/> -</g></svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/images/camerasmall.svg b/plugins/camera_sensor/images/camerasmall.svg deleted file mode 100644 index 690e940..0000000 --- a/plugins/camera_sensor/images/camerasmall.svg +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="26" - height="18.668091" - viewBox="0 0 26 18.668091" - id="svg2" - xml:space="preserve"><metadata - id="metadata29"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs27"> - - - - - - - - - - </defs><g - transform="matrix(0.57244766,0,0,0.57244766,-2.5989125,-4.6436954)" - id="camera-external" - style="display:block"><g - id="g5" - style="display:inline"><g - id="g7"><polygon - points="48.209,14.52 38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 " - id="polygon9" - style="fill:#ffffff" /></g><g - id="g11"><polygon - points="48.209,14.52 38.532,14.52 34.904,9.862 18.783,9.862 15.155,14.52 6.29,14.52 6.29,38.973 48.209,38.973 " - id="polygon13" - style="fill:none;stroke:#010101;stroke-width:3.5" /></g></g><path - d="m 20.601,26.441 c 0,3.67 2.979,6.648 6.65,6.648 3.667,0 6.646,-2.979 6.646,-6.648 0,-3.668 -2.979,-6.652 -6.646,-6.652 -3.67,0 -6.65,2.986 -6.65,6.652 z" - id="path15" - style="fill:#ffffff;stroke:#010101;stroke-width:3.5;display:inline" /><rect - width="6.2870002" - height="4.1929998" - x="38.098999" - y="18.417999" - id="rect17" - style="fill:#010101;display:inline" /></g></svg>
\ No newline at end of file diff --git a/plugins/camera_sensor/tacamera.py b/plugins/camera_sensor/tacamera.py deleted file mode 100644 index fc0804d..0000000 --- a/plugins/camera_sensor/tacamera.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- coding: utf-8 -*- -#Copyright (c) 2010, Walter Bender -#Copyright (c) 2010, Tony Forster - -#Permission is hereby granted, free of charge, to any person obtaining a copy -#of this software and associated documentation files (the "Software"), to deal -#in the Software without restriction, including without limitation the rights -#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -#copies of the Software, and to permit persons to whom the Software is -#furnished to do so, subject to the following conditions: - -#The above copyright notice and this permission notice shall be included in -#all copies or substantial portions of the Software. - -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -#THE SOFTWARE. - -import gst, time -import gobject - -from TurtleArt.tautils import debug_output - - -class Camera(): - ''' Sets up a pipe from the camera to a pixbuf and emits a signal - when the image is ready. ''' - - def __init__(self, device='/dev/video0'): - ''' Prepare camera pipeline to pixbuf and signal watch ''' - self.pipe = gst.Pipeline('pipeline') - v4l2src = gst.element_factory_make('v4l2src', None) - v4l2src.props.device = device - self.pipe.add(v4l2src) - ffmpegcolorspace = gst.element_factory_make('ffmpegcolorspace', None) - self.pipe.add(ffmpegcolorspace) - gdkpixbufsink = gst.element_factory_make('gdkpixbufsink', None) - self.pipe.add(gdkpixbufsink) - gst.element_link_many(v4l2src, ffmpegcolorspace, gdkpixbufsink) - if self.pipe is not None: - self.bus = self.pipe.get_bus() - self.bus.add_signal_watch() - self.bus.connect('message', self._on_message) - status = True - else: - status = False - - def _on_message(self, bus, message): - ''' We get a message if a pixbuf is available ''' - if message.structure is not None: - if message.structure.get_name() == 'pixbuf': - self.pixbuf = message.structure['pixbuf'] - self.image_ready = True - - def start_camera_input(self): - ''' Start grabbing ''' - self.pixbuf = None - self.image_ready = False - self.pipe.set_state(gst.STATE_PLAYING) - while not self.image_ready: - self.bus.poll(gst.MESSAGE_ANY, -1) - - def stop_camera_input(self): - ''' Stop grabbing ''' - self.pipe.set_state(gst.STATE_NULL) diff --git a/plugins/camera_sensor/v4l2.py b/plugins/camera_sensor/v4l2.py deleted file mode 100644 index 9c052fd..0000000 --- a/plugins/camera_sensor/v4l2.py +++ /dev/null @@ -1,1914 +0,0 @@ -# Python bindings for the v4l2 userspace api - -# Copyright (C) 1999-2009 the contributors - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# Alternatively you can redistribute this file under the terms of the -# BSD license as stated below: - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. The names of its contributors may not be used to endorse or promote -# products derived from this software without specific prior written -# permission. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -""" -Python bindings for the v4l2 userspace api in Linux 2.6.34 -""" - -# see linux/videodev2.h - -import ctypes - - -_IOC_NRBITS = 8 -_IOC_TYPEBITS = 8 -_IOC_SIZEBITS = 14 -_IOC_DIRBITS = 2 - -_IOC_NRSHIFT = 0 -_IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS -_IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS -_IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS - -_IOC_NONE = 0 -_IOC_WRITE = 1 -_IOC_READ = 2 - - -def _IOC(dir_, type_, nr, size): - return ( - ctypes.c_int32(dir_ << _IOC_DIRSHIFT).value | - ctypes.c_int32(ord(type_) << _IOC_TYPESHIFT).value | - ctypes.c_int32(nr << _IOC_NRSHIFT).value | - ctypes.c_int32(size << _IOC_SIZESHIFT).value) - - -def _IOC_TYPECHECK(t): - return ctypes.sizeof(t) - - -def _IO(type_, nr): - return _IOC(_IOC_NONE, type_, nr, 0) - - -def _IOW(type_, nr, size): - return _IOC(_IOC_WRITE, type_, nr, _IOC_TYPECHECK(size)) - - -def _IOR(type_, nr, size): - return _IOC(_IOC_READ, type_, nr, _IOC_TYPECHECK(size)) - - -def _IOWR(type_, nr, size): - return _IOC(_IOC_READ | _IOC_WRITE, type_, nr, _IOC_TYPECHECK(size)) - - -# -# type alias -# - -enum = ctypes.c_uint -c_int = ctypes.c_int - - -# -# time -# - -class timeval(ctypes.Structure): - _fields_ = [ - ('secs', ctypes.c_long), - ('usecs', ctypes.c_long), - ] - - -# -# v4l2 -# - - -VIDEO_MAX_FRAME = 32 - - -VID_TYPE_CAPTURE = 1 -VID_TYPE_TUNER = 2 -VID_TYPE_TELETEXT = 4 -VID_TYPE_OVERLAY = 8 -VID_TYPE_CHROMAKEY = 16 -VID_TYPE_CLIPPING = 32 -VID_TYPE_FRAMERAM = 64 -VID_TYPE_SCALES = 128 -VID_TYPE_MONOCHROME = 256 -VID_TYPE_SUBCAPTURE = 512 -VID_TYPE_MPEG_DECODER = 1024 -VID_TYPE_MPEG_ENCODER = 2048 -VID_TYPE_MJPEG_DECODER = 4096 -VID_TYPE_MJPEG_ENCODER = 8192 - - -def v4l2_fourcc(a, b, c, d): - return ord(a) | (ord(b) << 8) | (ord(c) << 16) | (ord(d) << 24) - - -v4l2_field = enum -( - V4L2_FIELD_ANY, - V4L2_FIELD_NONE, - V4L2_FIELD_TOP, - V4L2_FIELD_BOTTOM, - V4L2_FIELD_INTERLACED, - V4L2_FIELD_SEQ_TB, - V4L2_FIELD_SEQ_BT, - V4L2_FIELD_ALTERNATE, - V4L2_FIELD_INTERLACED_TB, - V4L2_FIELD_INTERLACED_BT, -) = range(10) - - -def V4L2_FIELD_HAS_TOP(field): - return ( - field == V4L2_FIELD_TOP or - field == V4L2_FIELD_INTERLACED or - field == V4L2_FIELD_INTERLACED_TB or - field == V4L2_FIELD_INTERLACED_BT or - field == V4L2_FIELD_SEQ_TB or - field == V4L2_FIELD_SEQ_BT) - - -def V4L2_FIELD_HAS_BOTTOM(field): - return ( - field == V4L2_FIELD_BOTTOM or - field == V4L2_FIELD_INTERLACED or - field == V4L2_FIELD_INTERLACED_TB or - field == V4L2_FIELD_INTERLACED_BT or - field == V4L2_FIELD_SEQ_TB or - field == V4L2_FIELD_SEQ_BT) - - -def V4L2_FIELD_HAS_BOTH(field): - return ( - field == V4L2_FIELD_INTERLACED or - field == V4L2_FIELD_INTERLACED_TB or - field == V4L2_FIELD_INTERLACED_BT or - field == V4L2_FIELD_SEQ_TB or - field == V4L2_FIELD_SEQ_BT) - - -v4l2_buf_type = enum -( - V4L2_BUF_TYPE_VIDEO_CAPTURE, - V4L2_BUF_TYPE_VIDEO_OUTPUT, - V4L2_BUF_TYPE_VIDEO_OVERLAY, - V4L2_BUF_TYPE_VBI_CAPTURE, - V4L2_BUF_TYPE_VBI_OUTPUT, - V4L2_BUF_TYPE_SLICED_VBI_CAPTURE, - V4L2_BUF_TYPE_SLICED_VBI_OUTPUT, - V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY, - V4L2_BUF_TYPE_PRIVATE, -) = range(1, 9) + [0x80] - - -v4l2_ctrl_type = enum -( - V4L2_CTRL_TYPE_INTEGER, - V4L2_CTRL_TYPE_BOOLEAN, - V4L2_CTRL_TYPE_MENU, - V4L2_CTRL_TYPE_BUTTON, - V4L2_CTRL_TYPE_INTEGER64, - V4L2_CTRL_TYPE_CTRL_CLASS, - V4L2_CTRL_TYPE_STRING, -) = range(1, 8) - - -v4l2_tuner_type = enum -( - V4L2_TUNER_RADIO, - V4L2_TUNER_ANALOG_TV, - V4L2_TUNER_DIGITAL_TV, -) = range(1, 4) - - -v4l2_memory = enum -( - V4L2_MEMORY_MMAP, - V4L2_MEMORY_USERPTR, - V4L2_MEMORY_OVERLAY, -) = range(1, 4) - - -v4l2_colorspace = enum -( - V4L2_COLORSPACE_SMPTE170M, - V4L2_COLORSPACE_SMPTE240M, - V4L2_COLORSPACE_REC709, - V4L2_COLORSPACE_BT878, - V4L2_COLORSPACE_470_SYSTEM_M, - V4L2_COLORSPACE_470_SYSTEM_BG, - V4L2_COLORSPACE_JPEG, - V4L2_COLORSPACE_SRGB, -) = range(1, 9) - - -v4l2_priority = enum -( - V4L2_PRIORITY_UNSET, - V4L2_PRIORITY_BACKGROUND, - V4L2_PRIORITY_INTERACTIVE, - V4L2_PRIORITY_RECORD, - V4L2_PRIORITY_DEFAULT, -) = range(0, 4) + [2] - - -class v4l2_rect(ctypes.Structure): - _fields_ = [ - ('left', ctypes.c_int32), - ('top', ctypes.c_int32), - ('width', ctypes.c_int32), - ('height', ctypes.c_int32), - ] - - -class v4l2_fract(ctypes.Structure): - _fields_ = [ - ('numerator', ctypes.c_uint32), - ('denominator', ctypes.c_uint32), - ] - - -# -# Driver capabilities -# - -class v4l2_capability(ctypes.Structure): - _fields_ = [ - ('driver', ctypes.c_char * 16), - ('card', ctypes.c_char * 32), - ('bus_info', ctypes.c_char * 32), - ('version', ctypes.c_uint32), - ('capabilities', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -# -# Values for 'capabilities' field -# - -V4L2_CAP_VIDEO_CAPTURE = 0x00000001 -V4L2_CAP_VIDEO_OUTPUT = 0x00000002 -V4L2_CAP_VIDEO_OVERLAY = 0x00000004 -V4L2_CAP_VBI_CAPTURE = 0x00000010 -V4L2_CAP_VBI_OUTPUT = 0x00000020 -V4L2_CAP_SLICED_VBI_CAPTURE = 0x00000040 -V4L2_CAP_SLICED_VBI_OUTPUT = 0x00000080 -V4L2_CAP_RDS_CAPTURE = 0x00000100 -V4L2_CAP_VIDEO_OUTPUT_OVERLAY = 0x00000200 -V4L2_CAP_HW_FREQ_SEEK = 0x00000400 -V4L2_CAP_RDS_OUTPUT = 0x00000800 - -V4L2_CAP_TUNER = 0x00010000 -V4L2_CAP_AUDIO = 0x00020000 -V4L2_CAP_RADIO = 0x00040000 -V4L2_CAP_MODULATOR = 0x00080000 - -V4L2_CAP_READWRITE = 0x01000000 -V4L2_CAP_ASYNCIO = 0x02000000 -V4L2_CAP_STREAMING = 0x04000000 - - -# -# Video image format -# - -class v4l2_pix_format(ctypes.Structure): - _fields_ = [ - ('width', ctypes.c_uint32), - ('height', ctypes.c_uint32), - ('pixelformat', ctypes.c_uint32), - ('field', v4l2_field), - ('bytesperline', ctypes.c_uint32), - ('sizeimage', ctypes.c_uint32), - ('colorspace', v4l2_colorspace), - ('priv', ctypes.c_uint32), - ] - -# RGB formats -V4L2_PIX_FMT_RGB332 = v4l2_fourcc('R', 'G', 'B', '1') -V4L2_PIX_FMT_RGB444 = v4l2_fourcc('R', '4', '4', '4') -V4L2_PIX_FMT_RGB555 = v4l2_fourcc('R', 'G', 'B', 'O') -V4L2_PIX_FMT_RGB565 = v4l2_fourcc('R', 'G', 'B', 'P') -V4L2_PIX_FMT_RGB555X = v4l2_fourcc('R', 'G', 'B', 'Q') -V4L2_PIX_FMT_RGB565X = v4l2_fourcc('R', 'G', 'B', 'R') -V4L2_PIX_FMT_BGR24 = v4l2_fourcc('B', 'G', 'R', '3') -V4L2_PIX_FMT_RGB24 = v4l2_fourcc('R', 'G', 'B', '3') -V4L2_PIX_FMT_BGR32 = v4l2_fourcc('B', 'G', 'R', '4') -V4L2_PIX_FMT_RGB32 = v4l2_fourcc('R', 'G', 'B', '4') - -# Grey formats -V4L2_PIX_FMT_GREY = v4l2_fourcc('G', 'R', 'E', 'Y') -V4L2_PIX_FMT_Y10 = v4l2_fourcc('Y', '1', '0', ' ') -V4L2_PIX_FMT_Y16 = v4l2_fourcc('Y', '1', '6', ' ') - -# Palette formats -V4L2_PIX_FMT_PAL8 = v4l2_fourcc('P', 'A', 'L', '8') - -# Luminance+Chrominance formats -V4L2_PIX_FMT_YVU410 = v4l2_fourcc('Y', 'V', 'U', '9') -V4L2_PIX_FMT_YVU420 = v4l2_fourcc('Y', 'V', '1', '2') -V4L2_PIX_FMT_YUYV = v4l2_fourcc('Y', 'U', 'Y', 'V') -V4L2_PIX_FMT_YYUV = v4l2_fourcc('Y', 'Y', 'U', 'V') -V4L2_PIX_FMT_YVYU = v4l2_fourcc('Y', 'V', 'Y', 'U') -V4L2_PIX_FMT_UYVY = v4l2_fourcc('U', 'Y', 'V', 'Y') -V4L2_PIX_FMT_VYUY = v4l2_fourcc('V', 'Y', 'U', 'Y') -V4L2_PIX_FMT_YUV422P = v4l2_fourcc('4', '2', '2', 'P') -V4L2_PIX_FMT_YUV411P = v4l2_fourcc('4', '1', '1', 'P') -V4L2_PIX_FMT_Y41P = v4l2_fourcc('Y', '4', '1', 'P') -V4L2_PIX_FMT_YUV444 = v4l2_fourcc('Y', '4', '4', '4') -V4L2_PIX_FMT_YUV555 = v4l2_fourcc('Y', 'U', 'V', 'O') -V4L2_PIX_FMT_YUV565 = v4l2_fourcc('Y', 'U', 'V', 'P') -V4L2_PIX_FMT_YUV32 = v4l2_fourcc('Y', 'U', 'V', '4') -V4L2_PIX_FMT_YUV410 = v4l2_fourcc('Y', 'U', 'V', '9') -V4L2_PIX_FMT_YUV420 = v4l2_fourcc('Y', 'U', '1', '2') -V4L2_PIX_FMT_HI240 = v4l2_fourcc('H', 'I', '2', '4') -V4L2_PIX_FMT_HM12 = v4l2_fourcc('H', 'M', '1', '2') - -# two planes -- one Y, one Cr + Cb interleaved -V4L2_PIX_FMT_NV12 = v4l2_fourcc('N', 'V', '1', '2') -V4L2_PIX_FMT_NV21 = v4l2_fourcc('N', 'V', '2', '1') -V4L2_PIX_FMT_NV16 = v4l2_fourcc('N', 'V', '1', '6') -V4L2_PIX_FMT_NV61 = v4l2_fourcc('N', 'V', '6', '1') - -# Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm -V4L2_PIX_FMT_SBGGR8 = v4l2_fourcc('B', 'A', '8', '1') -V4L2_PIX_FMT_SGBRG8 = v4l2_fourcc('G', 'B', 'R', 'G') -V4L2_PIX_FMT_SGRBG8 = v4l2_fourcc('G', 'R', 'B', 'G') -V4L2_PIX_FMT_SRGGB8 = v4l2_fourcc('R', 'G', 'G', 'B') -V4L2_PIX_FMT_SBGGR10 = v4l2_fourcc('B', 'G', '1', '0') -V4L2_PIX_FMT_SGBRG10 = v4l2_fourcc('G', 'B', '1', '0') -V4L2_PIX_FMT_SGRBG10 = v4l2_fourcc('B', 'A', '1', '0') -V4L2_PIX_FMT_SRGGB10 = v4l2_fourcc('R', 'G', '1', '0') -V4L2_PIX_FMT_SGRBG10DPCM8 = v4l2_fourcc('B', 'D', '1', '0') -V4L2_PIX_FMT_SBGGR16 = v4l2_fourcc('B', 'Y', 'R', '2') - -# compressed formats -V4L2_PIX_FMT_MJPEG = v4l2_fourcc('M', 'J', 'P', 'G') -V4L2_PIX_FMT_JPEG = v4l2_fourcc('J', 'P', 'E', 'G') -V4L2_PIX_FMT_DV = v4l2_fourcc('d', 'v', 's', 'd') -V4L2_PIX_FMT_MPEG = v4l2_fourcc('M', 'P', 'E', 'G') - -# Vendor-specific formats -V4L2_PIX_FMT_CPIA1 = v4l2_fourcc('C', 'P', 'I', 'A') -V4L2_PIX_FMT_WNVA = v4l2_fourcc('W', 'N', 'V', 'A') -V4L2_PIX_FMT_SN9C10X = v4l2_fourcc('S', '9', '1', '0') -V4L2_PIX_FMT_SN9C20X_I420 = v4l2_fourcc('S', '9', '2', '0') -V4L2_PIX_FMT_PWC1 = v4l2_fourcc('P', 'W', 'C', '1') -V4L2_PIX_FMT_PWC2 = v4l2_fourcc('P', 'W', 'C', '2') -V4L2_PIX_FMT_ET61X251 = v4l2_fourcc('E', '6', '2', '5') -V4L2_PIX_FMT_SPCA501 = v4l2_fourcc('S', '5', '0', '1') -V4L2_PIX_FMT_SPCA505 = v4l2_fourcc('S', '5', '0', '5') -V4L2_PIX_FMT_SPCA508 = v4l2_fourcc('S', '5', '0', '8') -V4L2_PIX_FMT_SPCA561 = v4l2_fourcc('S', '5', '6', '1') -V4L2_PIX_FMT_PAC207 = v4l2_fourcc('P', '2', '0', '7') -V4L2_PIX_FMT_MR97310A = v4l2_fourcc('M', '3', '1', '0') -V4L2_PIX_FMT_SN9C2028 = v4l2_fourcc('S', 'O', 'N', 'X') -V4L2_PIX_FMT_SQ905C = v4l2_fourcc('9', '0', '5', 'C') -V4L2_PIX_FMT_PJPG = v4l2_fourcc('P', 'J', 'P', 'G') -V4L2_PIX_FMT_OV511 = v4l2_fourcc('O', '5', '1', '1') -V4L2_PIX_FMT_OV518 = v4l2_fourcc('O', '5', '1', '8') -V4L2_PIX_FMT_STV0680 = v4l2_fourcc('S', '6', '8', '0') - - -# -# Format enumeration -# - -class v4l2_fmtdesc(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('type', ctypes.c_int), - ('flags', ctypes.c_uint32), - ('description', ctypes.c_char * 32), - ('pixelformat', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - -V4L2_FMT_FLAG_COMPRESSED = 0x0001 -V4L2_FMT_FLAG_EMULATED = 0x0002 - - -# -# Experimental frame size and frame rate enumeration -# - -v4l2_frmsizetypes = enum -( - V4L2_FRMSIZE_TYPE_DISCRETE, - V4L2_FRMSIZE_TYPE_CONTINUOUS, - V4L2_FRMSIZE_TYPE_STEPWISE, -) = range(1, 4) - - -class v4l2_frmsize_discrete(ctypes.Structure): - _fields_ = [ - ('width', ctypes.c_uint32), - ('height', ctypes.c_uint32), - ] - - -class v4l2_frmsize_stepwise(ctypes.Structure): - _fields_ = [ - ('min_width', ctypes.c_uint32), - ('min_height', ctypes.c_uint32), - ('step_width', ctypes.c_uint32), - ('min_height', ctypes.c_uint32), - ('max_height', ctypes.c_uint32), - ('step_height', ctypes.c_uint32), - ] - - -class v4l2_frmsizeenum(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('discrete', v4l2_frmsize_discrete), - ('stepwise', v4l2_frmsize_stepwise), - ] - - _fields_ = [ - ('index', ctypes.c_uint32), - ('pixel_format', ctypes.c_uint32), - ('type', ctypes.c_uint32), - ('_u', _u), - ('reserved', ctypes.c_uint32 * 2) - ] - - _anonymous_ = ('_u',) - - -# -# Frame rate enumeration -# - -v4l2_frmivaltypes = enum -( - V4L2_FRMIVAL_TYPE_DISCRETE, - V4L2_FRMIVAL_TYPE_CONTINUOUS, - V4L2_FRMIVAL_TYPE_STEPWISE, -) = range(1, 4) - - -class v4l2_frmival_stepwise(ctypes.Structure): - _fields_ = [ - ('min', v4l2_fract), - ('max', v4l2_fract), - ('step', v4l2_fract), - ] - - -class v4l2_frmivalenum(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('discrete', v4l2_fract), - ('stepwise', v4l2_frmival_stepwise), - ] - - _fields_ = [ - ('index', ctypes.c_uint32), - ('pixel_format', ctypes.c_uint32), - ('width', ctypes.c_uint32), - ('height', ctypes.c_uint32), - ('type', ctypes.c_uint32), - ('_u', _u), - ('reserved', ctypes.c_uint32 * 2), - ] - - _anonymous_ = ('_u',) - - -# -# Timecode -# - -class v4l2_timecode(ctypes.Structure): - _fields_ = [ - ('type', ctypes.c_uint32), - ('flags', ctypes.c_uint32), - ('frames', ctypes.c_uint8), - ('seconds', ctypes.c_uint8), - ('minutes', ctypes.c_uint8), - ('hours', ctypes.c_uint8), - ('userbits', ctypes.c_uint8 * 4), - ] - - -V4L2_TC_TYPE_24FPS = 1 -V4L2_TC_TYPE_25FPS = 2 -V4L2_TC_TYPE_30FPS = 3 -V4L2_TC_TYPE_50FPS = 4 -V4L2_TC_TYPE_60FPS = 5 - -V4L2_TC_FLAG_DROPFRAME = 0x0001 -V4L2_TC_FLAG_COLORFRAME = 0x0002 -V4L2_TC_USERBITS_field = 0x000C -V4L2_TC_USERBITS_USERDEFINED = 0x0000 -V4L2_TC_USERBITS_8BITCHARS = 0x0008 - - -class v4l2_jpegcompression(ctypes.Structure): - _fields_ = [ - ('quality', ctypes.c_int), - ('APPn', ctypes.c_int), - ('APP_len', ctypes.c_int), - ('APP_data', ctypes.c_char * 60), - ('COM_len', ctypes.c_int), - ('COM_data', ctypes.c_char * 60), - ('jpeg_markers', ctypes.c_uint32), - ] - - -V4L2_JPEG_MARKER_DHT = 1 << 3 -V4L2_JPEG_MARKER_DQT = 1 << 4 -V4L2_JPEG_MARKER_DRI = 1 << 5 -V4L2_JPEG_MARKER_COM = 1 << 6 -V4L2_JPEG_MARKER_APP = 1 << 7 - - -# -# Memory-mapping buffers -# - -class v4l2_requestbuffers(ctypes.Structure): - _fields_ = [ - ('count', ctypes.c_uint32), - ('type', v4l2_buf_type), - ('memory', v4l2_memory), - ('reserved', ctypes.c_uint32 * 2), - ] - - -class v4l2_buffer(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('offset', ctypes.c_uint32), - ('userptr', ctypes.c_ulong), - ] - - _fields_ = [ - ('index', ctypes.c_uint32), - ('type', v4l2_buf_type), - ('bytesused', ctypes.c_uint32), - ('flags', ctypes.c_uint32), - ('field', v4l2_field), - ('timestamp', timeval), - ('timecode', v4l2_timecode), - ('sequence', ctypes.c_uint32), - ('memory', v4l2_memory), - ('m', _u), - ('length', ctypes.c_uint32), - ('input', ctypes.c_uint32), - ('reserved', ctypes.c_uint32), - ] - - -V4L2_BUF_FLAG_MAPPED = 0x0001 -V4L2_BUF_FLAG_QUEUED = 0x0002 -V4L2_BUF_FLAG_DONE = 0x0004 -V4L2_BUF_FLAG_KEYFRAME = 0x0008 -V4L2_BUF_FLAG_PFRAME = 0x0010 -V4L2_BUF_FLAG_BFRAME = 0x0020 -V4L2_BUF_FLAG_TIMECODE = 0x0100 -V4L2_BUF_FLAG_INPUT = 0x0200 - - -# -# Overlay preview -# - -class v4l2_framebuffer(ctypes.Structure): - _fields_ = [ - ('capability', ctypes.c_uint32), - ('flags', ctypes.c_uint32), - ('base', ctypes.c_void_p), - ('fmt', v4l2_pix_format), - ] - -V4L2_FBUF_CAP_EXTERNOVERLAY = 0x0001 -V4L2_FBUF_CAP_CHROMAKEY = 0x0002 -V4L2_FBUF_CAP_LIST_CLIPPING = 0x0004 -V4L2_FBUF_CAP_BITMAP_CLIPPING = 0x0008 -V4L2_FBUF_CAP_LOCAL_ALPHA = 0x0010 -V4L2_FBUF_CAP_GLOBAL_ALPHA = 0x0020 -V4L2_FBUF_CAP_LOCAL_INV_ALPHA = 0x0040 -V4L2_FBUF_CAP_SRC_CHROMAKEY = 0x0080 - -V4L2_FBUF_FLAG_PRIMARY = 0x0001 -V4L2_FBUF_FLAG_OVERLAY = 0x0002 -V4L2_FBUF_FLAG_CHROMAKEY = 0x0004 -V4L2_FBUF_FLAG_LOCAL_ALPHA = 0x0008 -V4L2_FBUF_FLAG_GLOBAL_ALPHA = 0x0010 -V4L2_FBUF_FLAG_LOCAL_INV_ALPHA = 0x0020 -V4L2_FBUF_FLAG_SRC_CHROMAKEY = 0x0040 - - -class v4l2_clip(ctypes.Structure): - pass -v4l2_clip._fields_ = [ - ('c', v4l2_rect), - ('next', ctypes.POINTER(v4l2_clip)), -] - - -class v4l2_window(ctypes.Structure): - _fields_ = [ - ('w', v4l2_rect), - ('field', v4l2_field), - ('chromakey', ctypes.c_uint32), - ('clips', ctypes.POINTER(v4l2_clip)), - ('clipcount', ctypes.c_uint32), - ('bitmap', ctypes.c_void_p), - ('global_alpha', ctypes.c_uint8), - ] - - -# -# Capture parameters -# - -class v4l2_captureparm(ctypes.Structure): - _fields_ = [ - ('capability', ctypes.c_uint32), - ('capturemode', ctypes.c_uint32), - ('timeperframe', v4l2_fract), - ('extendedmode', ctypes.c_uint32), - ('readbuffers', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -V4L2_MODE_HIGHQUALITY = 0x0001 -V4L2_CAP_TIMEPERFRAME = 0x1000 - - -class v4l2_outputparm(ctypes.Structure): - _fields_ = [ - ('capability', ctypes.c_uint32), - ('outputmode', ctypes.c_uint32), - ('timeperframe', v4l2_fract), - ('extendedmode', ctypes.c_uint32), - ('writebuffers', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -# -# Input image cropping -# - -class v4l2_cropcap(ctypes.Structure): - _fields_ = [ - ('type', v4l2_buf_type), - ('bounds', v4l2_rect), - ('defrect', v4l2_rect), - ('pixelaspect', v4l2_fract), - ] - - -class v4l2_crop(ctypes.Structure): - _fields_ = [ - ('type', ctypes.c_int), - ('c', v4l2_rect), - ] - - -# -# Analog video standard -# - -v4l2_std_id = ctypes.c_uint64 - - -V4L2_STD_PAL_B = 0x00000001 -V4L2_STD_PAL_B1 = 0x00000002 -V4L2_STD_PAL_G = 0x00000004 -V4L2_STD_PAL_H = 0x00000008 -V4L2_STD_PAL_I = 0x00000010 -V4L2_STD_PAL_D = 0x00000020 -V4L2_STD_PAL_D1 = 0x00000040 -V4L2_STD_PAL_K = 0x00000080 - -V4L2_STD_PAL_M = 0x00000100 -V4L2_STD_PAL_N = 0x00000200 -V4L2_STD_PAL_Nc = 0x00000400 -V4L2_STD_PAL_60 = 0x00000800 - -V4L2_STD_NTSC_M = 0x00001000 -V4L2_STD_NTSC_M_JP = 0x00002000 -V4L2_STD_NTSC_443 = 0x00004000 -V4L2_STD_NTSC_M_KR = 0x00008000 - -V4L2_STD_SECAM_B = 0x00010000 -V4L2_STD_SECAM_D = 0x00020000 -V4L2_STD_SECAM_G = 0x00040000 -V4L2_STD_SECAM_H = 0x00080000 -V4L2_STD_SECAM_K = 0x00100000 -V4L2_STD_SECAM_K1 = 0x00200000 -V4L2_STD_SECAM_L = 0x00400000 -V4L2_STD_SECAM_LC = 0x00800000 - -V4L2_STD_ATSC_8_VSB = 0x01000000 -V4L2_STD_ATSC_16_VSB = 0x02000000 - - -# some common needed stuff -V4L2_STD_PAL_BG = (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_PAL_G) -V4L2_STD_PAL_DK = (V4L2_STD_PAL_D | V4L2_STD_PAL_D1 | V4L2_STD_PAL_K) -V4L2_STD_PAL = (V4L2_STD_PAL_BG | V4L2_STD_PAL_DK | V4L2_STD_PAL_H | V4L2_STD_PAL_I) -V4L2_STD_NTSC = (V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_M_KR) -V4L2_STD_SECAM_DK = (V4L2_STD_SECAM_D | V4L2_STD_SECAM_K | V4L2_STD_SECAM_K1) -V4L2_STD_SECAM = (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G | V4L2_STD_SECAM_H | V4L2_STD_SECAM_DK | V4L2_STD_SECAM_L | V4L2_STD_SECAM_LC) - -V4L2_STD_525_60 = (V4L2_STD_PAL_M | V4L2_STD_PAL_60 | V4L2_STD_NTSC | V4L2_STD_NTSC_443) -V4L2_STD_625_50 = (V4L2_STD_PAL | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_SECAM) -V4L2_STD_ATSC = (V4L2_STD_ATSC_8_VSB | V4L2_STD_ATSC_16_VSB) - -V4L2_STD_UNKNOWN = 0 -V4L2_STD_ALL = (V4L2_STD_525_60 | V4L2_STD_625_50) - -# some merged standards -V4L2_STD_MN = (V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | V4L2_STD_NTSC) -V4L2_STD_B = (V4L2_STD_PAL_B | V4L2_STD_PAL_B1 | V4L2_STD_SECAM_B) -V4L2_STD_GH = (V4L2_STD_PAL_G | V4L2_STD_PAL_H|V4L2_STD_SECAM_G | V4L2_STD_SECAM_H) -V4L2_STD_DK = (V4L2_STD_PAL_DK | V4L2_STD_SECAM_DK) - - -class v4l2_standard(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('id', v4l2_std_id), - ('name', ctypes.c_char * 24), - ('frameperiod', v4l2_fract), - ('framelines', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -# -# Video timings dv preset -# - -class v4l2_dv_preset(ctypes.Structure): - _fields_ = [ - ('preset', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4) - ] - - -# -# DV preset enumeration -# - -class v4l2_dv_enum_preset(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('preset', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('width', ctypes.c_uint32), - ('height', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - -# -# DV preset values -# - -V4L2_DV_INVALID = 0 -V4L2_DV_480P59_94 = 1 -V4L2_DV_576P50 = 2 -V4L2_DV_720P24 = 3 -V4L2_DV_720P25 = 4 -V4L2_DV_720P30 = 5 -V4L2_DV_720P50 = 6 -V4L2_DV_720P59_94 = 7 -V4L2_DV_720P60 = 8 -V4L2_DV_1080I29_97 = 9 -V4L2_DV_1080I30 = 10 -V4L2_DV_1080I25 = 11 -V4L2_DV_1080I50 = 12 -V4L2_DV_1080I60 = 13 -V4L2_DV_1080P24 = 14 -V4L2_DV_1080P25 = 15 -V4L2_DV_1080P30 = 16 -V4L2_DV_1080P50 = 17 -V4L2_DV_1080P60 = 18 - - -# -# DV BT timings -# - -class v4l2_bt_timings(ctypes.Structure): - _fields_ = [ - ('width', ctypes.c_uint32), - ('height', ctypes.c_uint32), - ('interlaced', ctypes.c_uint32), - ('polarities', ctypes.c_uint32), - ('pixelclock', ctypes.c_uint64), - ('hfrontporch', ctypes.c_uint32), - ('hsync', ctypes.c_uint32), - ('hbackporch', ctypes.c_uint32), - ('vfrontporch', ctypes.c_uint32), - ('vsync', ctypes.c_uint32), - ('vbackporch', ctypes.c_uint32), - ('il_vfrontporch', ctypes.c_uint32), - ('il_vsync', ctypes.c_uint32), - ('il_vbackporch', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 16), - ] - - _pack_ = True - -# Interlaced or progressive format -V4L2_DV_PROGRESSIVE = 0 -V4L2_DV_INTERLACED = 1 - -# Polarities. If bit is not set, it is assumed to be negative polarity -V4L2_DV_VSYNC_POS_POL = 0x00000001 -V4L2_DV_HSYNC_POS_POL = 0x00000002 - - -class v4l2_dv_timings(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('bt', v4l2_bt_timings), - ('reserved', ctypes.c_uint32 * 32), - ] - - _fields_ = [ - ('type', ctypes.c_uint32), - ('_u', _u), - ] - - _anonymous_ = ('_u',) - _pack_ = True - - -# Values for the type field -V4L2_DV_BT_656_1120 = 0 - - -# -# Video inputs -# - -class v4l2_input(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('type', ctypes.c_uint32), - ('audioset', ctypes.c_uint32), - ('tuner', ctypes.c_uint32), - ('std', v4l2_std_id), - ('status', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -V4L2_INPUT_TYPE_TUNER = 1 -V4L2_INPUT_TYPE_CAMERA = 2 - -V4L2_IN_ST_NO_POWER = 0x00000001 -V4L2_IN_ST_NO_SIGNAL = 0x00000002 -V4L2_IN_ST_NO_COLOR = 0x00000004 - -V4L2_IN_ST_HFLIP = 0x00000010 -V4L2_IN_ST_VFLIP = 0x00000020 - -V4L2_IN_ST_NO_H_LOCK = 0x00000100 -V4L2_IN_ST_COLOR_KILL = 0x00000200 - -V4L2_IN_ST_NO_SYNC = 0x00010000 -V4L2_IN_ST_NO_EQU = 0x00020000 -V4L2_IN_ST_NO_CARRIER = 0x00040000 - -V4L2_IN_ST_MACROVISION = 0x01000000 -V4L2_IN_ST_NO_ACCESS = 0x02000000 -V4L2_IN_ST_VTR = 0x04000000 - -V4L2_IN_CAP_PRESETS = 0x00000001 -V4L2_IN_CAP_CUSTOM_TIMINGS = 0x00000002 -V4L2_IN_CAP_STD = 0x00000004 - -# -# Video outputs -# - -class v4l2_output(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('type', ctypes.c_uint32), - ('audioset', ctypes.c_uint32), - ('modulator', ctypes.c_uint32), - ('std', v4l2_std_id), - ('reserved', ctypes.c_uint32 * 4), - ] - - -V4L2_OUTPUT_TYPE_MODULATOR = 1 -V4L2_OUTPUT_TYPE_ANALOG = 2 -V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3 - -V4L2_OUT_CAP_PRESETS = 0x00000001 -V4L2_OUT_CAP_CUSTOM_TIMINGS = 0x00000002 -V4L2_OUT_CAP_STD = 0x00000004 - -# -# Controls -# - -class v4l2_control(ctypes.Structure): - _fields_ = [ - ('id', ctypes.c_uint32), - ('value', ctypes.c_int32), - ] - - -class v4l2_ext_control(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('value', ctypes.c_int32), - ('value64', ctypes.c_int64), - ('reserved', ctypes.c_void_p), - ] - - _fields_ = [ - ('id', ctypes.c_uint32), - ('reserved2', ctypes.c_uint32 * 2), - ('_u', _u) - ] - - _anonymous_ = ('_u',) - _pack_ = True - - -class v4l2_ext_controls(ctypes.Structure): - _fields_ = [ - ('ctrl_class', ctypes.c_uint32), - ('count', ctypes.c_uint32), - ('error_idx', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ('controls', ctypes.POINTER(v4l2_ext_control)), - ] - - -V4L2_CTRL_CLASS_USER = 0x00980000 -V4L2_CTRL_CLASS_MPEG = 0x00990000 -V4L2_CTRL_CLASS_CAMERA = 0x009a0000 -V4L2_CTRL_CLASS_FM_TX = 0x009b0000 - - -def V4L2_CTRL_ID_MASK(): - return 0x0fffffff - - -def V4L2_CTRL_ID2CLASS(id_): - return id_ & 0x0fff0000 # unsigned long - - -def V4L2_CTRL_DRIVER_PRIV(id_): - return (id_ & 0xffff) >= 0x1000 - - -class v4l2_queryctrl(ctypes.Structure): - _fields_ = [ - ('id', ctypes.c_uint32), - ('type', v4l2_ctrl_type), - ('name', ctypes.c_char * 32), - ('minimum', ctypes.c_int32), - ('maximum', ctypes.c_int32), - ('step', ctypes.c_int32), - ('default', ctypes.c_int32), - ('flags', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -class v4l2_querymenu(ctypes.Structure): - _fields_ = [ - ('id', ctypes.c_uint32), - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('reserved', ctypes.c_uint32), - ] - - -V4L2_CTRL_FLAG_DISABLED = 0x0001 -V4L2_CTRL_FLAG_GRABBED = 0x0002 -V4L2_CTRL_FLAG_READ_ONLY = 0x0004 -V4L2_CTRL_FLAG_UPDATE = 0x0008 -V4L2_CTRL_FLAG_INACTIVE = 0x0010 -V4L2_CTRL_FLAG_SLIDER = 0x0020 -V4L2_CTRL_FLAG_WRITE_ONLY = 0x0040 - -V4L2_CTRL_FLAG_NEXT_CTRL = 0x80000000 - -V4L2_CID_BASE = V4L2_CTRL_CLASS_USER | 0x900 -V4L2_CID_USER_BASE = V4L2_CID_BASE -V4L2_CID_PRIVATE_BASE = 0x08000000 - -V4L2_CID_USER_CLASS = V4L2_CTRL_CLASS_USER | 1 -V4L2_CID_BRIGHTNESS = V4L2_CID_BASE + 0 -V4L2_CID_CONTRAST = V4L2_CID_BASE + 1 -V4L2_CID_SATURATION = V4L2_CID_BASE + 2 -V4L2_CID_HUE = V4L2_CID_BASE + 3 -V4L2_CID_AUDIO_VOLUME = V4L2_CID_BASE + 5 -V4L2_CID_AUDIO_BALANCE = V4L2_CID_BASE + 6 -V4L2_CID_AUDIO_BASS = V4L2_CID_BASE + 7 -V4L2_CID_AUDIO_TREBLE = V4L2_CID_BASE + 8 -V4L2_CID_AUDIO_MUTE = V4L2_CID_BASE + 9 -V4L2_CID_AUDIO_LOUDNESS = V4L2_CID_BASE + 10 -V4L2_CID_BLACK_LEVEL = V4L2_CID_BASE + 11 # Deprecated -V4L2_CID_AUTO_WHITE_BALANCE = V4L2_CID_BASE + 12 -V4L2_CID_DO_WHITE_BALANCE = V4L2_CID_BASE + 13 -V4L2_CID_RED_BALANCE = V4L2_CID_BASE + 14 -V4L2_CID_BLUE_BALANCE = V4L2_CID_BASE + 15 -V4L2_CID_GAMMA = V4L2_CID_BASE + 16 -V4L2_CID_WHITENESS = V4L2_CID_GAMMA # Deprecated -V4L2_CID_EXPOSURE = V4L2_CID_BASE + 17 -V4L2_CID_AUTOGAIN = V4L2_CID_BASE + 18 -V4L2_CID_GAIN = V4L2_CID_BASE + 19 -V4L2_CID_HFLIP = V4L2_CID_BASE + 20 -V4L2_CID_VFLIP = V4L2_CID_BASE + 21 - -# Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET -V4L2_CID_HCENTER = V4L2_CID_BASE + 22 -V4L2_CID_VCENTER = V4L2_CID_BASE + 23 - -V4L2_CID_POWER_LINE_FREQUENCY = V4L2_CID_BASE + 24 - -v4l2_power_line_frequency = enum -( - V4L2_CID_POWER_LINE_FREQUENCY_DISABLED, - V4L2_CID_POWER_LINE_FREQUENCY_50HZ, - V4L2_CID_POWER_LINE_FREQUENCY_60HZ, -) = range(3) - -V4L2_CID_HUE_AUTO = V4L2_CID_BASE + 25 -V4L2_CID_WHITE_BALANCE_TEMPERATURE = V4L2_CID_BASE + 26 -V4L2_CID_SHARPNESS = V4L2_CID_BASE + 27 -V4L2_CID_BACKLIGHT_COMPENSATION = V4L2_CID_BASE + 28 -V4L2_CID_CHROMA_AGC = V4L2_CID_BASE + 29 -V4L2_CID_COLOR_KILLER = V4L2_CID_BASE + 30 -V4L2_CID_COLORFX = V4L2_CID_BASE + 31 - -v4l2_colorfx = enum -( - V4L2_COLORFX_NONE, - V4L2_COLORFX_BW, - V4L2_COLORFX_SEPIA, -) = range(3) - -V4L2_CID_AUTOBRIGHTNESS = V4L2_CID_BASE + 32 -V4L2_CID_BAND_STOP_FILTER = V4L2_CID_BASE + 33 - -V4L2_CID_ROTATE = V4L2_CID_BASE + 34 -V4L2_CID_BG_COLOR = V4L2_CID_BASE + 35 -V4L2_CID_LASTP1 = V4L2_CID_BASE + 36 - -V4L2_CID_MPEG_BASE = V4L2_CTRL_CLASS_MPEG | 0x900 -V4L2_CID_MPEG_CLASS = V4L2_CTRL_CLASS_MPEG | 1 - -# MPEG streams -V4L2_CID_MPEG_STREAM_TYPE = V4L2_CID_MPEG_BASE + 0 - -v4l2_mpeg_stream_type = enum -( - V4L2_MPEG_STREAM_TYPE_MPEG2_PS, - V4L2_MPEG_STREAM_TYPE_MPEG2_TS, - V4L2_MPEG_STREAM_TYPE_MPEG1_SS, - V4L2_MPEG_STREAM_TYPE_MPEG2_DVD, - V4L2_MPEG_STREAM_TYPE_MPEG1_VCD, - V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD, -) = range(6) - -V4L2_CID_MPEG_STREAM_PID_PMT = V4L2_CID_MPEG_BASE + 1 -V4L2_CID_MPEG_STREAM_PID_AUDIO = V4L2_CID_MPEG_BASE + 2 -V4L2_CID_MPEG_STREAM_PID_VIDEO = V4L2_CID_MPEG_BASE + 3 -V4L2_CID_MPEG_STREAM_PID_PCR = V4L2_CID_MPEG_BASE + 4 -V4L2_CID_MPEG_STREAM_PES_ID_AUDIO = V4L2_CID_MPEG_BASE + 5 -V4L2_CID_MPEG_STREAM_PES_ID_VIDEO = V4L2_CID_MPEG_BASE + 6 -V4L2_CID_MPEG_STREAM_VBI_FMT = V4L2_CID_MPEG_BASE + 7 - -v4l2_mpeg_stream_vbi_fmt = enum -( - V4L2_MPEG_STREAM_VBI_FMT_NONE, - V4L2_MPEG_STREAM_VBI_FMT_IVTV, -) = range(2) - -V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ = V4L2_CID_MPEG_BASE + 100 - -v4l2_mpeg_audio_sampling_freq = enum -( - V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100, - V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000, - V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000, -) = range(3) - -V4L2_CID_MPEG_AUDIO_ENCODING = V4L2_CID_MPEG_BASE + 101 - -v4l2_mpeg_audio_encoding = enum -( - V4L2_MPEG_AUDIO_ENCODING_LAYER_1, - V4L2_MPEG_AUDIO_ENCODING_LAYER_2, - V4L2_MPEG_AUDIO_ENCODING_LAYER_3, - V4L2_MPEG_AUDIO_ENCODING_AAC, - V4L2_MPEG_AUDIO_ENCODING_AC3, -) = range(5) - -V4L2_CID_MPEG_AUDIO_L1_BITRATE = V4L2_CID_MPEG_BASE + 102 - -v4l2_mpeg_audio_l1_bitrate = enum -( - V4L2_MPEG_AUDIO_L1_BITRATE_32K, - V4L2_MPEG_AUDIO_L1_BITRATE_64K, - V4L2_MPEG_AUDIO_L1_BITRATE_96K, - V4L2_MPEG_AUDIO_L1_BITRATE_128K, - V4L2_MPEG_AUDIO_L1_BITRATE_160K, - V4L2_MPEG_AUDIO_L1_BITRATE_192K, - V4L2_MPEG_AUDIO_L1_BITRATE_224K, - V4L2_MPEG_AUDIO_L1_BITRATE_256K, - V4L2_MPEG_AUDIO_L1_BITRATE_288K, - V4L2_MPEG_AUDIO_L1_BITRATE_320K, - V4L2_MPEG_AUDIO_L1_BITRATE_352K, - V4L2_MPEG_AUDIO_L1_BITRATE_384K, - V4L2_MPEG_AUDIO_L1_BITRATE_416K, - V4L2_MPEG_AUDIO_L1_BITRATE_448K, -) = range(14) - -V4L2_CID_MPEG_AUDIO_L2_BITRATE = V4L2_CID_MPEG_BASE + 103 - -v4l2_mpeg_audio_l2_bitrate = enum -( - V4L2_MPEG_AUDIO_L2_BITRATE_32K, - V4L2_MPEG_AUDIO_L2_BITRATE_48K, - V4L2_MPEG_AUDIO_L2_BITRATE_56K, - V4L2_MPEG_AUDIO_L2_BITRATE_64K, - V4L2_MPEG_AUDIO_L2_BITRATE_80K, - V4L2_MPEG_AUDIO_L2_BITRATE_96K, - V4L2_MPEG_AUDIO_L2_BITRATE_112K, - V4L2_MPEG_AUDIO_L2_BITRATE_128K, - V4L2_MPEG_AUDIO_L2_BITRATE_160K, - V4L2_MPEG_AUDIO_L2_BITRATE_192K, - V4L2_MPEG_AUDIO_L2_BITRATE_224K, - V4L2_MPEG_AUDIO_L2_BITRATE_256K, - V4L2_MPEG_AUDIO_L2_BITRATE_320K, - V4L2_MPEG_AUDIO_L2_BITRATE_384K, -) = range(14) - -V4L2_CID_MPEG_AUDIO_L3_BITRATE = V4L2_CID_MPEG_BASE + 104 - -v4l2_mpeg_audio_l3_bitrate = enum -( - V4L2_MPEG_AUDIO_L3_BITRATE_32K, - V4L2_MPEG_AUDIO_L3_BITRATE_40K, - V4L2_MPEG_AUDIO_L3_BITRATE_48K, - V4L2_MPEG_AUDIO_L3_BITRATE_56K, - V4L2_MPEG_AUDIO_L3_BITRATE_64K, - V4L2_MPEG_AUDIO_L3_BITRATE_80K, - V4L2_MPEG_AUDIO_L3_BITRATE_96K, - V4L2_MPEG_AUDIO_L3_BITRATE_112K, - V4L2_MPEG_AUDIO_L3_BITRATE_128K, - V4L2_MPEG_AUDIO_L3_BITRATE_160K, - V4L2_MPEG_AUDIO_L3_BITRATE_192K, - V4L2_MPEG_AUDIO_L3_BITRATE_224K, - V4L2_MPEG_AUDIO_L3_BITRATE_256K, - V4L2_MPEG_AUDIO_L3_BITRATE_320K, -) = range(14) - -V4L2_CID_MPEG_AUDIO_MODE = V4L2_CID_MPEG_BASE + 105 - -v4l2_mpeg_audio_mode = enum -( - V4L2_MPEG_AUDIO_MODE_STEREO, - V4L2_MPEG_AUDIO_MODE_JOINT_STEREO, - V4L2_MPEG_AUDIO_MODE_DUAL, - V4L2_MPEG_AUDIO_MODE_MONO, -) = range(4) - -V4L2_CID_MPEG_AUDIO_MODE_EXTENSION = V4L2_CID_MPEG_BASE + 106 - -v4l2_mpeg_audio_mode_extension = enum -( - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12, - V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16, -) = range(4) - -V4L2_CID_MPEG_AUDIO_EMPHASIS = V4L2_CID_MPEG_BASE + 107 - -v4l2_mpeg_audio_emphasis = enum -( - V4L2_MPEG_AUDIO_EMPHASIS_NONE, - V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS, - V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17, -) = range(3) - -V4L2_CID_MPEG_AUDIO_CRC = V4L2_CID_MPEG_BASE + 108 - -v4l2_mpeg_audio_crc = enum -( - V4L2_MPEG_AUDIO_CRC_NONE, - V4L2_MPEG_AUDIO_CRC_CRC16, -) = range(2) - -V4L2_CID_MPEG_AUDIO_MUTE = V4L2_CID_MPEG_BASE + 109 -V4L2_CID_MPEG_AUDIO_AAC_BITRATE = V4L2_CID_MPEG_BASE + 110 -V4L2_CID_MPEG_AUDIO_AC3_BITRATE = V4L2_CID_MPEG_BASE + 111 - -v4l2_mpeg_audio_ac3_bitrate = enum -( - V4L2_MPEG_AUDIO_AC3_BITRATE_32K, - V4L2_MPEG_AUDIO_AC3_BITRATE_40K, - V4L2_MPEG_AUDIO_AC3_BITRATE_48K, - V4L2_MPEG_AUDIO_AC3_BITRATE_56K, - V4L2_MPEG_AUDIO_AC3_BITRATE_64K, - V4L2_MPEG_AUDIO_AC3_BITRATE_80K, - V4L2_MPEG_AUDIO_AC3_BITRATE_96K, - V4L2_MPEG_AUDIO_AC3_BITRATE_112K, - V4L2_MPEG_AUDIO_AC3_BITRATE_128K, - V4L2_MPEG_AUDIO_AC3_BITRATE_160K, - V4L2_MPEG_AUDIO_AC3_BITRATE_192K, - V4L2_MPEG_AUDIO_AC3_BITRATE_224K, - V4L2_MPEG_AUDIO_AC3_BITRATE_256K, - V4L2_MPEG_AUDIO_AC3_BITRATE_320K, - V4L2_MPEG_AUDIO_AC3_BITRATE_384K, - V4L2_MPEG_AUDIO_AC3_BITRATE_448K, - V4L2_MPEG_AUDIO_AC3_BITRATE_512K, - V4L2_MPEG_AUDIO_AC3_BITRATE_576K, - V4L2_MPEG_AUDIO_AC3_BITRATE_640K, -) = range(19) - -V4L2_CID_MPEG_VIDEO_ENCODING = V4L2_CID_MPEG_BASE + 200 - -v4l2_mpeg_video_encoding = enum -( - V4L2_MPEG_VIDEO_ENCODING_MPEG_1, - V4L2_MPEG_VIDEO_ENCODING_MPEG_2, - V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC, -) = range(3) - -V4L2_CID_MPEG_VIDEO_ASPECT = V4L2_CID_MPEG_BASE + 201 - -v4l2_mpeg_video_aspect = enum -( - V4L2_MPEG_VIDEO_ASPECT_1x1, - V4L2_MPEG_VIDEO_ASPECT_4x3, - V4L2_MPEG_VIDEO_ASPECT_16x9, - V4L2_MPEG_VIDEO_ASPECT_221x100, -) = range(4) - -V4L2_CID_MPEG_VIDEO_B_FRAMES = V4L2_CID_MPEG_BASE + 202 -V4L2_CID_MPEG_VIDEO_GOP_SIZE = V4L2_CID_MPEG_BASE + 203 -V4L2_CID_MPEG_VIDEO_GOP_CLOSURE = V4L2_CID_MPEG_BASE + 204 -V4L2_CID_MPEG_VIDEO_PULLDOWN = V4L2_CID_MPEG_BASE + 205 -V4L2_CID_MPEG_VIDEO_BITRATE_MODE = V4L2_CID_MPEG_BASE + 206 - -v4l2_mpeg_video_bitrate_mode = enum -( - V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, -) = range(2) - -V4L2_CID_MPEG_VIDEO_BITRATE = V4L2_CID_MPEG_BASE + 207 -V4L2_CID_MPEG_VIDEO_BITRATE_PEAK = V4L2_CID_MPEG_BASE + 208 -V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION = V4L2_CID_MPEG_BASE + 209 -V4L2_CID_MPEG_VIDEO_MUTE = V4L2_CID_MPEG_BASE + 210 -V4L2_CID_MPEG_VIDEO_MUTE_YUV = V4L2_CID_MPEG_BASE + 211 - -V4L2_CID_MPEG_CX2341X_BASE = V4L2_CTRL_CLASS_MPEG | 0x1000 -V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE = V4L2_CID_MPEG_CX2341X_BASE + 0 - -v4l2_mpeg_cx2341x_video_spatial_filter_mode = enum -( - V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL, - V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO, -) = range(2) - -V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER = V4L2_CID_MPEG_CX2341X_BASE + 1 -V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE = V4L2_CID_MPEG_CX2341X_BASE + 2 - -v4l2_mpeg_cx2341x_video_luma_spatial_filter_type = enum -( - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE, - V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE, -) = range(5) - -V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE = V4L2_CID_MPEG_CX2341X_BASE + 3 - -v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type = enum -( - V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF, - V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR, -) = range(2) - -V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE = V4L2_CID_MPEG_CX2341X_BASE + 4 - -v4l2_mpeg_cx2341x_video_temporal_filter_mode = enum -( - V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL, - V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO, -) = range(2) - -V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER = V4L2_CID_MPEG_CX2341X_BASE + 5 -V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE = V4L2_CID_MPEG_CX2341X_BASE + 6 - -v4l2_mpeg_cx2341x_video_median_filter_type = enum -( - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT, - V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG, -) = range(5) - -V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM = V4L2_CID_MPEG_CX2341X_BASE + 7 -V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP = V4L2_CID_MPEG_CX2341X_BASE + 8 -V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM = V4L2_CID_MPEG_CX2341X_BASE + 9 -V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP = V4L2_CID_MPEG_CX2341X_BASE + 10 -V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS = V4L2_CID_MPEG_CX2341X_BASE + 11 - -V4L2_CID_CAMERA_CLASS_BASE = V4L2_CTRL_CLASS_CAMERA | 0x900 -V4L2_CID_CAMERA_CLASS = V4L2_CTRL_CLASS_CAMERA | 1 - -V4L2_CID_EXPOSURE_AUTO = V4L2_CID_CAMERA_CLASS_BASE + 1 - -v4l2_exposure_auto_type = enum -( - V4L2_EXPOSURE_AUTO, - V4L2_EXPOSURE_MANUAL, - V4L2_EXPOSURE_SHUTTER_PRIORITY, - V4L2_EXPOSURE_APERTURE_PRIORITY, -) = range(4) - -V4L2_CID_EXPOSURE_ABSOLUTE = V4L2_CID_CAMERA_CLASS_BASE + 2 -V4L2_CID_EXPOSURE_AUTO_PRIORITY = V4L2_CID_CAMERA_CLASS_BASE + 3 - -V4L2_CID_PAN_RELATIVE = V4L2_CID_CAMERA_CLASS_BASE + 4 -V4L2_CID_TILT_RELATIVE = V4L2_CID_CAMERA_CLASS_BASE + 5 -V4L2_CID_PAN_RESET = V4L2_CID_CAMERA_CLASS_BASE + 6 -V4L2_CID_TILT_RESET = V4L2_CID_CAMERA_CLASS_BASE + 7 - -V4L2_CID_PAN_ABSOLUTE = V4L2_CID_CAMERA_CLASS_BASE + 8 -V4L2_CID_TILT_ABSOLUTE = V4L2_CID_CAMERA_CLASS_BASE + 9 - -V4L2_CID_FOCUS_ABSOLUTE = V4L2_CID_CAMERA_CLASS_BASE + 10 -V4L2_CID_FOCUS_RELATIVE = V4L2_CID_CAMERA_CLASS_BASE + 11 -V4L2_CID_FOCUS_AUTO = V4L2_CID_CAMERA_CLASS_BASE + 12 - -V4L2_CID_ZOOM_ABSOLUTE = V4L2_CID_CAMERA_CLASS_BASE + 13 -V4L2_CID_ZOOM_RELATIVE = V4L2_CID_CAMERA_CLASS_BASE + 14 -V4L2_CID_ZOOM_CONTINUOUS = V4L2_CID_CAMERA_CLASS_BASE + 15 - -V4L2_CID_PRIVACY = V4L2_CID_CAMERA_CLASS_BASE + 16 - -V4L2_CID_FM_TX_CLASS_BASE = V4L2_CTRL_CLASS_FM_TX | 0x900 -V4L2_CID_FM_TX_CLASS = V4L2_CTRL_CLASS_FM_TX | 1 - -V4L2_CID_RDS_TX_DEVIATION = V4L2_CID_FM_TX_CLASS_BASE + 1 -V4L2_CID_RDS_TX_PI = V4L2_CID_FM_TX_CLASS_BASE + 2 -V4L2_CID_RDS_TX_PTY = V4L2_CID_FM_TX_CLASS_BASE + 3 -V4L2_CID_RDS_TX_PS_NAME = V4L2_CID_FM_TX_CLASS_BASE + 5 -V4L2_CID_RDS_TX_RADIO_TEXT = V4L2_CID_FM_TX_CLASS_BASE + 6 - -V4L2_CID_AUDIO_LIMITER_ENABLED = V4L2_CID_FM_TX_CLASS_BASE + 64 -V4L2_CID_AUDIO_LIMITER_RELEASE_TIME = V4L2_CID_FM_TX_CLASS_BASE + 65 -V4L2_CID_AUDIO_LIMITER_DEVIATION = V4L2_CID_FM_TX_CLASS_BASE + 66 - -V4L2_CID_AUDIO_COMPRESSION_ENABLED = V4L2_CID_FM_TX_CLASS_BASE + 80 -V4L2_CID_AUDIO_COMPRESSION_GAIN = V4L2_CID_FM_TX_CLASS_BASE + 81 -V4L2_CID_AUDIO_COMPRESSION_THRESHOLD = V4L2_CID_FM_TX_CLASS_BASE + 82 -V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME = V4L2_CID_FM_TX_CLASS_BASE + 83 -V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME = V4L2_CID_FM_TX_CLASS_BASE + 84 - -V4L2_CID_PILOT_TONE_ENABLED = V4L2_CID_FM_TX_CLASS_BASE + 96 -V4L2_CID_PILOT_TONE_DEVIATION = V4L2_CID_FM_TX_CLASS_BASE + 97 -V4L2_CID_PILOT_TONE_FREQUENCY = V4L2_CID_FM_TX_CLASS_BASE + 98 - -V4L2_CID_TUNE_PREEMPHASIS = V4L2_CID_FM_TX_CLASS_BASE + 112 - -v4l2_preemphasis = enum -( - V4L2_PREEMPHASIS_DISABLED, - V4L2_PREEMPHASIS_50_uS, - V4L2_PREEMPHASIS_75_uS, -) = range(3) - -V4L2_CID_TUNE_POWER_LEVEL = V4L2_CID_FM_TX_CLASS_BASE + 113 -V4L2_CID_TUNE_ANTENNA_CAPACITOR = V4L2_CID_FM_TX_CLASS_BASE + 114 - - -# -# Tuning -# - -class v4l2_tuner(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('type', v4l2_tuner_type), - ('capability', ctypes.c_uint32), - ('rangelow', ctypes.c_uint32), - ('rangehigh', ctypes.c_uint32), - ('rxsubchans', ctypes.c_uint32), - ('audmode', ctypes.c_uint32), - ('signal', ctypes.c_int32), - ('afc', ctypes.c_int32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -class v4l2_modulator(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('capability', ctypes.c_uint32), - ('rangelow', ctypes.c_uint32), - ('rangehigh', ctypes.c_uint32), - ('txsubchans', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ] - - -V4L2_TUNER_CAP_LOW = 0x0001 -V4L2_TUNER_CAP_NORM = 0x0002 -V4L2_TUNER_CAP_STEREO = 0x0010 -V4L2_TUNER_CAP_LANG2 = 0x0020 -V4L2_TUNER_CAP_SAP = 0x0020 -V4L2_TUNER_CAP_LANG1 = 0x0040 -V4L2_TUNER_CAP_RDS = 0x0080 - -V4L2_TUNER_SUB_MONO = 0x0001 -V4L2_TUNER_SUB_STEREO = 0x0002 -V4L2_TUNER_SUB_LANG2 = 0x0004 -V4L2_TUNER_SUB_SAP = 0x0004 -V4L2_TUNER_SUB_LANG1 = 0x0008 -V4L2_TUNER_SUB_RDS = 0x0010 - -V4L2_TUNER_MODE_MONO = 0x0000 -V4L2_TUNER_MODE_STEREO = 0x0001 -V4L2_TUNER_MODE_LANG2 = 0x0002 -V4L2_TUNER_MODE_SAP = 0x0002 -V4L2_TUNER_MODE_LANG1 = 0x0003 -V4L2_TUNER_MODE_LANG1_LANG2 = 0x0004 - - -class v4l2_frequency(ctypes.Structure): - _fields_ = [ - ('tuner', ctypes.c_uint32), - ('type', v4l2_tuner_type), - ('frequency', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 8), - ] - - -class v4l2_hw_freq_seek(ctypes.Structure): - _fields_ = [ - ('tuner', ctypes.c_uint32), - ('type', v4l2_tuner_type), - ('seek_upward', ctypes.c_uint32), - ('wrap_around', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 8), - ] - - -# -# RDS -# - -class v4l2_rds_data(ctypes.Structure): - _fields_ = [ - ('lsb', ctypes.c_char), - ('msb', ctypes.c_char), - ('block', ctypes.c_char), - ] - - _pack_ = True - - -V4L2_RDS_BLOCK_MSK = 0x7 -V4L2_RDS_BLOCK_A = 0 -V4L2_RDS_BLOCK_B = 1 -V4L2_RDS_BLOCK_C = 2 -V4L2_RDS_BLOCK_D = 3 -V4L2_RDS_BLOCK_C_ALT = 4 -V4L2_RDS_BLOCK_INVALID = 7 - -V4L2_RDS_BLOCK_CORRECTED = 0x40 -V4L2_RDS_BLOCK_ERROR = 0x80 - - -# -# Audio -# - -class v4l2_audio(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('capability', ctypes.c_uint32), - ('mode', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -V4L2_AUDCAP_STEREO = 0x00001 -V4L2_AUDCAP_AVL = 0x00002 - -V4L2_AUDMODE_AVL = 0x00001 - - -class v4l2_audioout(ctypes.Structure): - _fields_ = [ - ('index', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ('capability', ctypes.c_uint32), - ('mode', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -# -# Mpeg services (experimental) -# - -V4L2_ENC_IDX_FRAME_I = 0 -V4L2_ENC_IDX_FRAME_P = 1 -V4L2_ENC_IDX_FRAME_B = 2 -V4L2_ENC_IDX_FRAME_MASK = 0xf - - -class v4l2_enc_idx_entry(ctypes.Structure): - _fields_ = [ - ('offset', ctypes.c_uint64), - ('pts', ctypes.c_uint64), - ('length', ctypes.c_uint32), - ('flags', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -V4L2_ENC_IDX_ENTRIES = 64 - - -class v4l2_enc_idx(ctypes.Structure): - _fields_ = [ - ('entries', ctypes.c_uint32), - ('entries_cap', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 4), - ('entry', v4l2_enc_idx_entry * V4L2_ENC_IDX_ENTRIES), - ] - - -V4L2_ENC_CMD_START = 0 -V4L2_ENC_CMD_STOP = 1 -V4L2_ENC_CMD_PAUSE = 2 -V4L2_ENC_CMD_RESUME = 3 - -V4L2_ENC_CMD_STOP_AT_GOP_END = 1 << 0 - - -class v4l2_encoder_cmd(ctypes.Structure): - class _u(ctypes.Union): - class _s(ctypes.Structure): - _fields_ = [ - ('data', ctypes.c_uint32 * 8), - ] - - _fields_ = [ - ('raw', _s), - ] - - _fields_ = [ - ('cmd', ctypes.c_uint32), - ('flags', ctypes.c_uint32), - ('_u', _u), - ] - - _anonymous_ = ('_u',) - - -# -# Data services (VBI) -# - -class v4l2_vbi_format(ctypes.Structure): - _fields_ = [ - ('sampling_rate', ctypes.c_uint32), - ('offset', ctypes.c_uint32), - ('samples_per_line', ctypes.c_uint32), - ('sample_format', ctypes.c_uint32), - ('start', ctypes.c_int32 * 2), - ('count', ctypes.c_uint32 * 2), - ('flags', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -V4L2_VBI_UNSYNC = 1 << 0 -V4L2_VBI_INTERLACED = 1 << 1 - - -class v4l2_sliced_vbi_format(ctypes.Structure): - _fields_ = [ - ('service_set', ctypes.c_uint16), - ('service_lines', ctypes.c_uint16 * 2 * 24), - ('io_size', ctypes.c_uint32), - ('reserved', ctypes.c_uint32 * 2), - ] - - -V4L2_SLICED_TELETEXT_B = 0x0001 -V4L2_SLICED_VPS = 0x0400 -V4L2_SLICED_CAPTION_525 = 0x1000 -V4L2_SLICED_WSS_625 = 0x4000 -V4L2_SLICED_VBI_525 = V4L2_SLICED_CAPTION_525 -V4L2_SLICED_VBI_625 = ( - V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) - - -class v4l2_sliced_vbi_cap(ctypes.Structure): - _fields_ = [ - ('service_set', ctypes.c_uint16), - ('service_lines', ctypes.c_uint16 * 2 * 24), - ('type', v4l2_buf_type), - ('reserved', ctypes.c_uint32 * 3), - ] - - -class v4l2_sliced_vbi_data(ctypes.Structure): - _fields_ = [ - ('id', ctypes.c_uint32), - ('field', ctypes.c_uint32), - ('line', ctypes.c_uint32), - ('reserved', ctypes.c_uint32), - ('data', ctypes.c_char * 48), - ] - - -# -# Sliced VBI data inserted into MPEG Streams -# - - -V4L2_MPEG_VBI_IVTV_TELETEXT_B = 1 -V4L2_MPEG_VBI_IVTV_CAPTION_525 = 4 -V4L2_MPEG_VBI_IVTV_WSS_625 = 5 -V4L2_MPEG_VBI_IVTV_VPS = 7 - - -class v4l2_mpeg_vbi_itv0_line(ctypes.Structure): - _fields_ = [ - ('id', ctypes.c_char), - ('data', ctypes.c_char * 42), - ] - - _pack_ = True - - -class v4l2_mpeg_vbi_itv0(ctypes.Structure): - _fields_ = [ - ('linemask', ctypes.c_uint32 * 2), # how to define __le32 in ctypes? - ('line', v4l2_mpeg_vbi_itv0_line * 35), - ] - - _pack_ = True - - -class v4l2_mpeg_vbi_ITV0(ctypes.Structure): - _fields_ = [ - ('line', v4l2_mpeg_vbi_itv0_line * 36), - ] - - _pack_ = True - - -V4L2_MPEG_VBI_IVTV_MAGIC0 = "itv0" -V4L2_MPEG_VBI_IVTV_MAGIC1 = "ITV0" - - -class v4l2_mpeg_vbi_fmt_ivtv(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('itv0', v4l2_mpeg_vbi_itv0), - ('ITV0', v4l2_mpeg_vbi_ITV0), - ] - - _fields_ = [ - ('magic', ctypes.c_char * 4), - ('_u', _u) - ] - - _anonymous_ = ('_u',) - _pack_ = True - - -# -# Aggregate structures -# - -class v4l2_format(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('pix', v4l2_pix_format), - ('win', v4l2_window), - ('vbi', v4l2_vbi_format), - ('sliced', v4l2_sliced_vbi_format), - ('raw_data', ctypes.c_char * 200), - ] - - _fields_ = [ - ('type', v4l2_buf_type), - ('fmt', _u), - ] - - -class v4l2_streamparm(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('capture', v4l2_captureparm), - ('output', v4l2_outputparm), - ('raw_data', ctypes.c_char * 200), - ] - - _fields_ = [ - ('type', v4l2_buf_type), - ('parm', _u) - ] - - -# -# Advanced debugging -# - -V4L2_CHIP_MATCH_HOST = 0 -V4L2_CHIP_MATCH_I2C_DRIVER = 1 -V4L2_CHIP_MATCH_I2C_ADDR = 2 -V4L2_CHIP_MATCH_AC97 = 3 - - -class v4l2_dbg_match(ctypes.Structure): - class _u(ctypes.Union): - _fields_ = [ - ('addr', ctypes.c_uint32), - ('name', ctypes.c_char * 32), - ] - - _fields_ = [ - ('type', ctypes.c_uint32), - ('_u', _u), - ] - - _anonymous_ = ('_u',) - _pack_ = True - - -class v4l2_dbg_register(ctypes.Structure): - _fields_ = [ - ('match', v4l2_dbg_match), - ('size', ctypes.c_uint32), - ('reg', ctypes.c_uint64), - ('val', ctypes.c_uint64), - ] - - _pack_ = True - - -class v4l2_dbg_chip_ident(ctypes.Structure): - _fields_ = [ - ('match', v4l2_dbg_match), - ('ident', ctypes.c_uint32), - ('revision', ctypes.c_uint32), - ] - - _pack_ = True - - -# -# ioctl codes for video devices -# - -VIDIOC_QUERYCAP = _IOR('V', 0, v4l2_capability) -VIDIOC_RESERVED = _IO('V', 1) -VIDIOC_ENUM_FMT = _IOWR('V', 2, v4l2_fmtdesc) -VIDIOC_G_FMT = _IOWR('V', 4, v4l2_format) -VIDIOC_S_FMT = _IOWR('V', 5, v4l2_format) -VIDIOC_REQBUFS = _IOWR('V', 8, v4l2_requestbuffers) -VIDIOC_QUERYBUF = _IOWR('V', 9, v4l2_buffer) -VIDIOC_G_FBUF = _IOR('V', 10, v4l2_framebuffer) -VIDIOC_S_FBUF = _IOW('V', 11, v4l2_framebuffer) -VIDIOC_OVERLAY = _IOW('V', 14, ctypes.c_int) -VIDIOC_QBUF = _IOWR('V', 15, v4l2_buffer) -VIDIOC_DQBUF = _IOWR('V', 17, v4l2_buffer) -VIDIOC_STREAMON = _IOW('V', 18, ctypes.c_int) -VIDIOC_STREAMOFF = _IOW('V', 19, ctypes.c_int) -VIDIOC_G_PARM = _IOWR('V', 21, v4l2_streamparm) -VIDIOC_S_PARM = _IOWR('V', 22, v4l2_streamparm) -VIDIOC_G_STD = _IOR('V', 23, v4l2_std_id) -VIDIOC_S_STD = _IOW('V', 24, v4l2_std_id) -VIDIOC_ENUMSTD = _IOWR('V', 25, v4l2_standard) -VIDIOC_ENUMINPUT = _IOWR('V', 26, v4l2_input) -VIDIOC_G_CTRL = _IOWR('V', 27, v4l2_control) -VIDIOC_S_CTRL = _IOWR('V', 28, v4l2_control) -VIDIOC_G_TUNER = _IOWR('V', 29, v4l2_tuner) -VIDIOC_S_TUNER = _IOW('V', 30, v4l2_tuner) -VIDIOC_G_AUDIO = _IOR('V', 33, v4l2_audio) -VIDIOC_S_AUDIO = _IOW('V', 34, v4l2_audio) -VIDIOC_QUERYCTRL = _IOWR('V', 36, v4l2_queryctrl) -VIDIOC_QUERYMENU = _IOWR('V', 37, v4l2_querymenu) -VIDIOC_G_INPUT = _IOR('V', 38, ctypes.c_int) -VIDIOC_S_INPUT = _IOWR('V', 39, ctypes.c_int) -VIDIOC_G_OUTPUT = _IOR('V', 46, ctypes.c_int) -VIDIOC_S_OUTPUT = _IOWR('V', 47, ctypes.c_int) -VIDIOC_ENUMOUTPUT = _IOWR('V', 48, v4l2_output) -VIDIOC_G_AUDOUT = _IOR('V', 49, v4l2_audioout) -VIDIOC_S_AUDOUT = _IOW('V', 50, v4l2_audioout) -VIDIOC_G_MODULATOR = _IOWR('V', 54, v4l2_modulator) -VIDIOC_S_MODULATOR = _IOW('V', 55, v4l2_modulator) -VIDIOC_G_FREQUENCY = _IOWR('V', 56, v4l2_frequency) -VIDIOC_S_FREQUENCY = _IOW('V', 57, v4l2_frequency) -VIDIOC_CROPCAP = _IOWR('V', 58, v4l2_cropcap) -VIDIOC_G_CROP = _IOWR('V', 59, v4l2_crop) -VIDIOC_S_CROP = _IOW('V', 60, v4l2_crop) -VIDIOC_G_JPEGCOMP = _IOR('V', 61, v4l2_jpegcompression) -VIDIOC_S_JPEGCOMP = _IOW('V', 62, v4l2_jpegcompression) -VIDIOC_QUERYSTD = _IOR('V', 63, v4l2_std_id) -VIDIOC_TRY_FMT = _IOWR('V', 64, v4l2_format) -VIDIOC_ENUMAUDIO = _IOWR('V', 65, v4l2_audio) -VIDIOC_ENUMAUDOUT = _IOWR('V', 66, v4l2_audioout) -VIDIOC_G_PRIORITY = _IOR('V', 67, v4l2_priority) -VIDIOC_S_PRIORITY = _IOW('V', 68, v4l2_priority) -VIDIOC_G_SLICED_VBI_CAP = _IOWR('V', 69, v4l2_sliced_vbi_cap) -VIDIOC_LOG_STATUS = _IO('V', 70) -VIDIOC_G_EXT_CTRLS = _IOWR('V', 71, v4l2_ext_controls) -VIDIOC_S_EXT_CTRLS = _IOWR('V', 72, v4l2_ext_controls) -VIDIOC_TRY_EXT_CTRLS = _IOWR('V', 73, v4l2_ext_controls) - -VIDIOC_ENUM_FRAMESIZES = _IOWR('V', 74, v4l2_frmsizeenum) -VIDIOC_ENUM_FRAMEINTERVALS = _IOWR('V', 75, v4l2_frmivalenum) -VIDIOC_G_ENC_INDEX = _IOR('V', 76, v4l2_enc_idx) -VIDIOC_ENCODER_CMD = _IOWR('V', 77, v4l2_encoder_cmd) -VIDIOC_TRY_ENCODER_CMD = _IOWR('V', 78, v4l2_encoder_cmd) - -VIDIOC_DBG_S_REGISTER = _IOW('V', 79, v4l2_dbg_register) -VIDIOC_DBG_G_REGISTER = _IOWR('V', 80, v4l2_dbg_register) - -VIDIOC_DBG_G_CHIP_IDENT = _IOWR('V', 81, v4l2_dbg_chip_ident) - -VIDIOC_S_HW_FREQ_SEEK = _IOW('V', 82, v4l2_hw_freq_seek) -VIDIOC_ENUM_DV_PRESETS = _IOWR('V', 83, v4l2_dv_enum_preset) -VIDIOC_S_DV_PRESET = _IOWR('V', 84, v4l2_dv_preset) -VIDIOC_G_DV_PRESET = _IOWR('V', 85, v4l2_dv_preset) -VIDIOC_QUERY_DV_PRESET = _IOR('V', 86, v4l2_dv_preset) -VIDIOC_S_DV_TIMINGS = _IOWR('V', 87, v4l2_dv_timings) -VIDIOC_G_DV_TIMINGS = _IOWR('V', 88, v4l2_dv_timings) - -VIDIOC_OVERLAY_OLD = _IOWR('V', 14, ctypes.c_int) -VIDIOC_S_PARM_OLD = _IOW('V', 22, v4l2_streamparm) -VIDIOC_S_CTRL_OLD = _IOW('V', 28, v4l2_control) -VIDIOC_G_AUDIO_OLD = _IOWR('V', 33, v4l2_audio) -VIDIOC_G_AUDOUT_OLD = _IOWR('V', 49, v4l2_audioout) -VIDIOC_CROPCAP_OLD = _IOR('V', 58, v4l2_cropcap) - -BASE_VIDIOC_PRIVATE = 192 diff --git a/plugins/light_sensor/icons/sensoroff.svg b/plugins/light_sensor/icons/sensoroff.svg deleted file mode 100644 index 0a16670..0000000 --- a/plugins/light_sensor/icons/sensoroff.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<rect - width="42.763924" - height="42.763924" - x="6.1180382" - y="6.1180382" - id="rect2986" - style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.23607516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g - transform="matrix(0.87078705,0,0,0.87078705,3.2821055,2.9298726)" - id="network-wired_1_" - style="display:block"> - <g - id="network-wired"> - <line - id="line3076" - y2="23.993" - y1="32.438999" - x2="16.966999" - x1="16.966999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - <line - id="line3078" - y2="28.215" - y1="28.215" - x2="34.938" - x1="29.636999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - - <rect - width="9.7939997" - height="7.599" - x="42.157001" - y="24.312" - id="rect3080" - style="fill:#ffffff;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round" /> - <path - d="m 16.967,23.993 c 0,-2.334 -1.892,-4.224 -4.224,-4.224 -2.332,0 -4.223,1.889 -4.223,4.224" - id="path3082" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,2.334 -1.891,4.224 -4.224,4.224 -2.332,0 -4.223,-1.89 -4.223,-4.224" - id="path3084" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,-2.332 1.893,-4.226 4.224,-4.226" - id="path3086" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 8.52,23.993 c 0,2.332 -1.892,4.222 -4.223,4.222" - id="path3088" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - - <rect - width="14.477" - height="11.35" - x="31.945" - y="22.438" - id="rect3090" - style="fill:#ffffff;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - </g> -</g></svg>
\ No newline at end of file diff --git a/plugins/light_sensor/icons/sensoron.svg b/plugins/light_sensor/icons/sensoron.svg deleted file mode 100644 index d756860..0000000 --- a/plugins/light_sensor/icons/sensoron.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /><rect - width="55" - height="55" - x="0" - y="0" - id="rect3269" - style="fill:#ffd200;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g - transform="translate(0.27777716,18.796296)" - id="g4054"><line - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="17.778971" - x2="17.778971" - y1="12.381037" - y2="5.0263696" - id="line3076" /><line - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="28.811842" - x2="33.427887" - y1="8.7028332" - y2="8.7028332" - id="line3078" /><rect - width="8.5284882" - height="6.6171107" - x="39.7141" - y="5.3041511" - id="rect3080" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1.95927083;stroke-linecap:round;stroke-opacity:1" /><path - d="m 17.778971,5.0263697 c 0,-2.032417 -1.647529,-3.6782045 -3.678204,-3.6782045 -2.030675,0 -3.677334,1.6449167 -3.677334,3.6782045" - id="path3082" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,2.032417 -1.646658,3.678205 -3.678205,3.678205 -2.030675,0 -3.677333,-1.645788 -3.677333,-3.678205" - id="path3084" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,-2.030675 1.6484,-3.679946 3.678204,-3.679946" - id="path3086" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 10.423433,5.0263697 c 0,2.0306754 -1.6475288,3.6764629 -3.6773334,3.6764629" - id="path3088" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><rect - width="12.606384" - height="9.8834333" - x="30.821619" - y="3.6722956" - id="rect3090" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/plugins/light_sensor/light_sensor.py b/plugins/light_sensor/light_sensor.py deleted file mode 100644 index bd5655e..0000000 --- a/plugins/light_sensor/light_sensor.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python -#Copyright (c) 2011 Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import os - -from gettext import gettext as _ - -from plugins.plugin import Plugin - -from TurtleArt.tapalette import make_palette -from TurtleArt.talogo import primitive_dictionary -from TurtleArt.tautils import debug_output - -import logging -_logger = logging.getLogger('turtleart-activity light-sensor plugin') - - -LIGHT_SENSOR_DEVICE = '/sys/devices/platform/olpc-ols.0/level' - - -class Light_sensor(Plugin): - - def __init__(self, parent): - self._parent = parent - if os.path.exists(LIGHT_SENSOR_DEVICE): - self._status = True - else: - self._status = False - self.running_sugar = self._parent.running_sugar - - def setup(self): - # set up light-sensor specific blocks - palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_('Palette of sensor blocks'), - position=6) - - primitive_dictionary['lightsensor'] = self.prim_lightsensor - if self._status: - palette.add_block('lightsensor', - style='box-style', - label=_('brightness'), - help_string=\ - _('light level detected by light sensor'), - prim_name='lightsensor') - else: - palette.add_block('lightsensor', - style='box-style', - label=_('brightness'), - help_string=\ - _('light level detected by light sensor'), - hidden=True, - prim_name='lightsensor') - - self._parent.lc.def_prim( - 'lightsensor', 0, - lambda self: primitive_dictionary['lightsensor']()) - - def _status_report(self): - debug_output('Reporting light-sensor status: %s' % (str(self._status))) - return self._status - - # Block primitives used in talogo - - def prim_lightsensor(self): - ''' push accelerometer xyz to stack ''' - if not self._status: - return -1 - else: - fh = open(LIGHT_SENSOR_DEVICE) - string = fh.read() - fh.close() - return float(string) diff --git a/plugins/rfid/device.py b/plugins/rfid/device.py deleted file mode 100644 index 04a82b2..0000000 --- a/plugins/rfid/device.py +++ /dev/null @@ -1,61 +0,0 @@ -import gobject - -class RFIDDevice(gobject.GObject): - """ - Ancestor class for every supported device. - The main class for the device driver must be called "RFIDReader". - """ - # signal "tag-read" has to be emitted when a tag has been read. - # The handler must receive the ISO-11784 hex value of the tag. - # signal "disconnected" has to be emitted when the device is - # unplugged or an error has been detected. - __gsignals__ = { - 'tag-read': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, - (gobject.TYPE_STRING,)), - 'disconnected': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, - (gobject.TYPE_STRING,)) - } - def __init__(self): - """ - Initializer. Subclasses must call this method. - """ - self.__gobject_init__() - - def get_present(self): - """ - This method must detect if the device is present, returning True if so, - or False otherwise. - """ - raise NotImplementedError - - def get_version(self): - """ - Returns a descriptive text of the device. - """ - raise NotImplementedError - - def do_connect(self): - """ - Connects to the device. - Must return True if successfull, False otherwise. - """ - raise NotImplementedError - - def do_disconnect(self): - """ - Disconnects from the device. - """ - raise NotImplementedError - - def read_tag(self): - """ - Returns the 64 bit data in hex format of the last read tag. - """ - raise NotImplementedError - - def write_tag(self, hex_val): - """ - Could be implemented if the device is capable of writing tags. - Receives the hex value (according to ISO 11784) to be written. - Returns True if successfull or False if something went wrong. - """ diff --git a/plugins/rfid/icons/sensoroff.svg b/plugins/rfid/icons/sensoroff.svg deleted file mode 100644 index 0a16670..0000000 --- a/plugins/rfid/icons/sensoroff.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /> -<rect - width="42.763924" - height="42.763924" - x="6.1180382" - y="6.1180382" - id="rect2986" - style="fill:#282828;fill-opacity:1;stroke:#282828;stroke-width:2.23607516;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><g - transform="matrix(0.87078705,0,0,0.87078705,3.2821055,2.9298726)" - id="network-wired_1_" - style="display:block"> - <g - id="network-wired"> - <line - id="line3076" - y2="23.993" - y1="32.438999" - x2="16.966999" - x1="16.966999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - <line - id="line3078" - y2="28.215" - y1="28.215" - x2="34.938" - x1="29.636999" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round" /> - - <rect - width="9.7939997" - height="7.599" - x="42.157001" - y="24.312" - id="rect3080" - style="fill:#ffffff;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round" /> - <path - d="m 16.967,23.993 c 0,-2.334 -1.892,-4.224 -4.224,-4.224 -2.332,0 -4.223,1.889 -4.223,4.224" - id="path3082" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,2.334 -1.891,4.224 -4.224,4.224 -2.332,0 -4.223,-1.89 -4.223,-4.224" - id="path3084" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 25.413,32.439 c 0,-2.332 1.893,-4.226 4.224,-4.226" - id="path3086" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - <path - d="m 8.52,23.993 c 0,2.332 -1.892,4.222 -4.223,4.222" - id="path3088" - style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - - <rect - width="14.477" - height="11.35" - x="31.945" - y="22.438" - id="rect3090" - style="fill:#ffffff;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" /> - </g> -</g></svg>
\ No newline at end of file diff --git a/plugins/rfid/icons/sensoron.svg b/plugins/rfid/icons/sensoron.svg deleted file mode 100644 index d756860..0000000 --- a/plugins/rfid/icons/sensoron.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - version="1.1" - width="55" - height="55" - viewBox="0 0 55 55" - id="svg2" - xml:space="preserve"><metadata - id="metadata15"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs - id="defs13" /><rect - width="55" - height="55" - x="0" - y="0" - id="rect3269" - style="fill:#ffd200;fill-opacity:1;fill-rule:nonzero;stroke:none" /><g - transform="translate(0.27777716,18.796296)" - id="g4054"><line - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="17.778971" - x2="17.778971" - y1="12.381037" - y2="5.0263696" - id="line3076" /><line - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-opacity:1" - x1="28.811842" - x2="33.427887" - y1="8.7028332" - y2="8.7028332" - id="line3078" /><rect - width="8.5284882" - height="6.6171107" - x="39.7141" - y="5.3041511" - id="rect3080" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1.95927083;stroke-linecap:round;stroke-opacity:1" /><path - d="m 17.778971,5.0263697 c 0,-2.032417 -1.647529,-3.6782045 -3.678204,-3.6782045 -2.030675,0 -3.677334,1.6449167 -3.677334,3.6782045" - id="path3082" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,2.032417 -1.646658,3.678205 -3.678205,3.678205 -2.030675,0 -3.677333,-1.645788 -3.677333,-3.678205" - id="path3084" - style="fill:none;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 25.133639,12.381037 c 0,-2.030675 1.6484,-3.679946 3.678204,-3.679946" - id="path3086" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path - d="m 10.423433,5.0263697 c 0,2.0306754 -1.6475288,3.6764629 -3.6773334,3.6764629" - id="path3088" - style="fill:#000000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><rect - width="12.606384" - height="9.8834333" - x="30.821619" - y="3.6722956" - id="rect3090" - style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:3.04775476;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></svg>
\ No newline at end of file diff --git a/plugins/rfid/rfid.py b/plugins/rfid/rfid.py deleted file mode 100644 index de96a1f..0000000 --- a/plugins/rfid/rfid.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -#Copyright (C) 2010,11 Emiliano Pastorino <epastorino@plan.ceibal.edu.uy> -#Copyright (c) 2011 Walter Bender -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import dbus -from dbus.mainloop.glib import DBusGMainLoop -from gettext import gettext as _ - -from plugins.rfid.rfidutils import strhex2bin, strbin2dec, find_device -from plugins.plugin import Plugin - -from TurtleArt.tapalette import make_palette -from TurtleArt.talogo import primitive_dictionary -from TurtleArt.tautils import debug_output - -import logging -_logger = logging.getLogger('turtleart-activity RFID plugin') - -HAL_SERVICE = 'org.freedesktop.Hal' -HAL_MGR_PATH = '/org/freedesktop/Hal/Manager' -HAL_MGR_IFACE = 'org.freedesktop.Hal.Manager' -HAL_DEV_IFACE = 'org.freedesktop.Hal.Device' -REGEXP_SERUSB = '\/org\/freedesktop\/Hal\/devices\/usb_device['\ - 'a-z,A-Z,0-9,_]*serial_usb_[0-9]' - - -class Rfid(Plugin): - - def __init__(self, parent): - self._parent = parent - self._status = False - - """ - The following code will initialize a USB RFID reader. Please note that - in order to make this initialization function work, it is necessary to - set the permission for the ttyUSB device to 0666. You can do this by - adding a rule to /etc/udev/rules.d - - As root (using sudo or su), copy the following text into a new file in - /etc/udev/rules.d/94-ttyUSB-rules - - KERNEL=="ttyUSB[0-9]",MODE="0666" - - You only have to do this once. - """ - - self.rfid_connected = False - self.rfid_device = find_device() - self.rfid_idn = '' - - if self.rfid_device is not None: - _logger.info("RFID device found") - self.rfid_connected = self.rfid_device.do_connect() - if self.rfid_connected: - self.rfid_device.connect("tag-read", self._tag_read_cb) - self.rfid_device.connect("disconnected", self._disconnected_cb) - - loop = DBusGMainLoop() - bus = dbus.SystemBus(mainloop=loop) - hmgr_iface = dbus.Interface(bus.get_object(HAL_SERVICE, - HAL_MGR_PATH), HAL_MGR_IFACE) - - hmgr_iface.connect_to_signal('DeviceAdded', self._device_added_cb) - - self._status = True - - def setup(self): - # set up RFID-specific blocks - primitive_dictionary['rfid'] = self.prim_read_rfid - palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_('Palette of sensor blocks'), - position=6) - - if self._status: - palette.add_block('rfid', - style='box-style', - label=_('RFID'), - help_string=_('read value from RFID device'), - value_block=True, - prim_name='rfid') - else: - palette.add_block('rfid', - hidden=True, - style='box-style', - label=_('RFID'), - help_string=_('read value from RFID device'), - value_block=True, - prim_name='rfid') - - self._parent.lc.def_prim( - 'rfid', 0, lambda self: primitive_dictionary['rfid']()) - - def _status_report(self): - debug_output('Reporting RFID status: %s' % (str(self._status))) - return self._status - - def _device_added_cb(self, path): - """ - Called from hal connection when a new device is plugged. - """ - if not self.rfid_connected: - self.rfid_device = find_device() - _logger.debug("DEVICE_ADDED: %s" % self.rfid_device) - if self.rfid_device is not None: - _logger.debug("DEVICE_ADDED: RFID device is not None!") - self.rfid_connected = self._device.do_connect() - if self.rfid_connected: - _logger.debug("DEVICE_ADDED: Connected!") - self.rfid_device.connect("tag-read", self._tag_read_cb) - self.rfid_device.connect("disconnected", self._disconnected_cb) - - def _disconnected_cb(self, device, text): - """ - Called when the device is disconnected. - """ - self.rfid_connected = False - self.rfid_device = None - - def _tag_read_cb(self, device, tagid): - """ - Callback for "tag-read" signal. Receives the read tag id. - """ - idbin = strhex2bin(tagid) - self.rfid_idn = strbin2dec(idbin[26:64]) - while self.rfid_idn.__len__() < 9: - self.rfid_idn = '0' + self.rfid_idn - print tagid, idbin, self.rfid_idn - self.tw.lc.update_label_value('rfid', self.rfid_idn) - - # Block primitives used in talogo - - def prim_read_rfid(self): - if self._status: - return self.rfid_idn - else: - return '0' diff --git a/plugins/rfid/rfidrweusb.py b/plugins/rfid/rfidrweusb.py deleted file mode 100644 index bd12631..0000000 --- a/plugins/rfid/rfidrweusb.py +++ /dev/null @@ -1,200 +0,0 @@ -from device import RFIDDevice -from serial import Serial -import dbus -from dbus.mainloop.glib import DBusGMainLoop -import gobject -from time import sleep -import utils - -HAL_SERVICE = 'org.freedesktop.Hal' -HAL_MGR_PATH = '/org/freedesktop/Hal/Manager' -HAL_MGR_IFACE = 'org.freedesktop.Hal.Manager' -HAL_DEV_IFACE = 'org.freedesktop.Hal.Device' -REGEXP_SERUSB = '\/org\/freedesktop\/Hal\/devices\/usb_device['\ - 'a-z,A-Z,0-9,_]*serial_usb_[0-9]' - -VERSIONS = ['301'] - -class RFIDReader(RFIDDevice): - """ - RFIDRW-E-W interface. - """ - - def __init__(self): - - RFIDDevice.__init__(self) - self.last_tag = "" - self.tags = [] - self.ser = Serial() - self.device = '' - self.device_path = '' - self._connected = False - - loop = DBusGMainLoop() - self.bus = dbus.SystemBus(mainloop=loop) - hmgr_iface = dbus.Interface(self.bus.get_object(HAL_SERVICE, - HAL_MGR_PATH), HAL_MGR_IFACE) - - hmgr_iface.connect_to_signal('DeviceRemoved', self._device_removed_cb) - - def get_present(self): - """ - Checks if RFID-RW-USB device is present. - Returns True if so, False otherwise. - """ - hmgr_if = dbus.Interface(self.bus.get_object(HAL_SERVICE, HAL_MGR_PATH), - HAL_MGR_IFACE) - serialusb_devices = set(hmgr_if.FindDeviceStringMatch('serial.type', - 'usb')) & set(hmgr_if.FindDeviceStringMatch( - 'info.subsystem', 'tty')) - for i in serialusb_devices: - serialusb_if = dbus.Interface(self.bus.get_object(HAL_SERVICE, i), - HAL_DEV_IFACE) - if serialusb_if.PropertyExists('info.parent'): - parent_udi = str(serialusb_if.GetProperty('info.parent')) - parent = dbus.Interface(self.bus.get_object(HAL_SERVICE, - parent_udi), HAL_DEV_IFACE) - if parent.PropertyExists('info.linux.driver') and \ - str(parent.GetProperty('info.linux.driver')) == 'ftdi_sio': - device = str(serialusb_if.GetProperty('linux.device_file')) - ser = Serial(device, 9600, timeout=0.1) - ser.read(100) - ser.write('v') - ser.write('e') - ser.write('r') - ser.write('\x0D') - resp = ser.read(4) - if resp[0:-1] in VERSIONS: - self.device = device - self.device_path = i - return True - return False - - def do_connect(self): - """ - Connects to the device. - Returns True if successfull, False otherwise. - """ - retval = False - if self.get_present(): - try: - self.ser = Serial(self.device, 9600, timeout=0.1) - self._connected = True - if self._select_animal_tag: - #gobject.idle_add(self._loop) - gobject.timeout_add(1000, self._loop) - retval = True - except: - self._connected = False - return retval - - def do_disconnect(self): - """ - Disconnect from the device. - """ - self.ser.close() - self._connected = False - - def read_tag(self): - """ - Returns the last read value. - """ - return self.last_tag - - def _select_animal_tag(self): - """ - Sends the "Select Tag 2" (animal tag) command to the device. - """ - self.ser.read(100) - self.ser.write('s') - self.ser.write('t') - self.ser.write('2') - self.ser.write('\x0d') - resp = self.ser.read(3)[0:-1] - if resp == 'OK': - return True - return False - - def get_version(self): - """ - Sends the version command to the device and returns - a string with the device version. - """ - #self.ser.flushInput() - ver = "???" - self.ser.read(100) - self.ser.write('v') - self.ser.write('e') - self.ser.write('r') - self.ser.write('\x0d') - resp = self.ser.read(4)[0:-1] - if resp in VERSIONS: - return "RFIDRW-E-USB " + resp - return ver - - def _device_removed_cb(self, path): - """ - Called when a device is removed. - Checks if the removed device is itself and emits the "disconnected" - signal if so. - """ - if path == self.device_path: - self.device_path = '' - self.ser.close() - self._connected = False - self.tags = [] - self.emit("disconnected","RFID-RW-USB") - - def _loop(self): - """ - Threaded loop for reading data from the device. - """ - if not self._connected: - return False - - self.ser.read(100) - self.ser.write('r') - self.ser.write('a') - self.ser.write('t') - self.ser.write('\x0d') - resp = self.ser.read(33)[0:-1].split('_') - if resp.__len__() is not 6 or resp in self.tags: - return True - - self.tags.append(resp) - anbit_bin = utils.dec2bin(int(resp[2])) - reserved_bin = '00000000000000' - databit_bin = utils.dec2bin(int(resp[3])) - country_bin = utils.dec2bin(int(resp[0])) - while country_bin.__len__() < 10: - country_bin = '0' + country_bin - id_bin = utils.dec2bin(int(resp[1])) - while id_bin.__len__() < 10: - id_bin = '0' + id_bin - - tag_bin = anbit_bin + reserved_bin + databit_bin + country_bin + id_bin - data = utils.bin2hex(tag_bin) - self.emit("tag-read", data) - self.last_tag = data - #sleep(1) - return True - -# Testing -#if __name__ == '__main__': -# def handler(device, idhex): -# """ -# Handler for "tag-read" signal. -# Prints the tag id. -# """ -# print "ID: ", idhex -# -# dev = RFIDReader() -# if dev.get_present(): -# print "SIPI!" -# dev.do_connect() -# dev.connect('tag-read', handler) -# else: -# print "Not connected" -# -# mloop = gobject.MainLoop() -# mloop.run() diff --git a/plugins/rfid/rfidutils.py b/plugins/rfid/rfidutils.py deleted file mode 100644 index 4e02619..0000000 --- a/plugins/rfid/rfidutils.py +++ /dev/null @@ -1,123 +0,0 @@ -# utils.py - Helper functions for tis2000.py -# Copyright (C) 2010 Emiliano Pastorino <epastorino@plan.ceibal.edu.uy> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -import os -import logging - -def find_device(): - """ - Search for devices. - Return a device instance or None. - """ - device = None - for i in os.listdir(os.path.join('.', 'plugins/rfid')): - if not os.path.isdir(os.path.join('.', 'plugins/rfid', i)): - try: - _tempmod = __import__('rfid.%s'%i.split('.')[0], globals(), - locals(), ['RFIDReader'], -1) - devtemp = _tempmod.RFIDReader() - if devtemp.get_present() == True: - device = devtemp - except Exception, e: - # logging.error("FIND_DEVICE: %s: %s"%(i, e)) - pass - if device is None: - logging.debug("No RFID device found") - return device - - -def strhex2bin(strhex): - """ - Convert a string representing an hex value into a - string representing the same value in binary format. - """ - dic = { '0':"0000", - '1':"0001", - '2':"0010", - '3':"0011", - '4':"0100", - '5':"0101", - '6':"0110", - '7':"0111", - '8':"1000", - '9':"1001", - 'A':"1010", - 'B':"1011", - 'C':"1100", - 'D':"1101", - 'E':"1110", - 'F':"1111" - } - binstr = "" - for i in strhex: - binstr = binstr + dic[i.upper()] - return binstr - -def strbin2dec(strbin): - """ - Convert a string representing a binary value into a - string representing the same value in decimal format. - """ - strdec = "0" - for i in range(1, strbin.__len__()+1): - strdec = str(int(strdec)+int(strbin[-i])*int(pow(2, i-1))) - return strdec - -def dec2bin(ndec): - """ - Convert a decimal number into a string representing - the same value in binary format. - """ - if ndec < 1: - return "0" - binary = [] - while ndec != 0: - binary.append(ndec%2) - ndec = ndec/2 - strbin = "" - binary.reverse() - for i in binary: - strbin = strbin+str(i) - return strbin - -def bin2hex(strbin): - """ - Convert a string representing a binary number into a string - representing the same value in hexadecimal format. - """ - dic = { "0000":"0", - "0001":"1", - "0010":"2", - "0011":"3", - "0100":"4", - "0101":"5", - "0110":"6", - "0111":"7", - "1000":"8", - "1001":"9", - "1010":"A", - "1011":"B", - "1100":"C", - "1101":"D", - "1110":"E", - "1111":"F" - } - while strbin.__len__()%4 != 0: - strbin = '0' + strbin - strh = "" - for i in range(0, strbin.__len__()/4): - strh = strh + dic[str(strbin[i*4:i*4+4])] - return strh diff --git a/plugins/rfid/serial/__init__.py b/plugins/rfid/serial/__init__.py deleted file mode 100644 index 681ad5c..0000000 --- a/plugins/rfid/serial/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -#portable serial port access with python -#this is a wrapper module for different platform implementations -# -# (C)2001-2002 Chris Liechti <cliechti@gmx.net> -# this is distributed under a free software license, see license.txt - -VERSION = '2.4' - -import sys - -if sys.platform == 'cli': - from serialcli import * -else: - import os - #chose an implementation, depending on os - if os.name == 'nt': #sys.platform == 'win32': - from serialwin32 import * - elif os.name == 'posix': - from serialposix import * - elif os.name == 'java': - from serialjava import * - else: - raise Exception("Sorry: no implementation for your platform ('%s') available" % os.name) - diff --git a/plugins/rfid/serial/serialposix.py b/plugins/rfid/serial/serialposix.py deleted file mode 100644 index 174e2f7..0000000 --- a/plugins/rfid/serial/serialposix.py +++ /dev/null @@ -1,492 +0,0 @@ -#!/usr/bin/env python -# Python Serial Port Extension for Win32, Linux, BSD, Jython -# module for serial IO for POSIX compatible systems, like Linux -# see __init__.py -# -# (C) 2001-2008 Chris Liechti <cliechti@gmx.net> -# this is distributed under a free software license, see license.txt -# -# parts based on code from Grant B. Edwards <grante@visi.com>: -# ftp://ftp.visi.com/users/grante/python/PosixSerial.py -# references: http://www.easysw.com/~mike/serial/serial.html - -import sys, os, fcntl, termios, struct, select, errno -from serialutil import * - -#Do check the Python version as some constants have moved. -if (sys.hexversion < 0x020100f0): - import TERMIOS -else: - TERMIOS = termios - -if (sys.hexversion < 0x020200f0): - import FCNTL -else: - FCNTL = fcntl - -#try to detect the os so that a device can be selected... -plat = sys.platform.lower() - -if plat[:5] == 'linux': #Linux (confirmed) - def device(port): - return '/dev/ttyS%d' % port - -elif plat == 'cygwin': #cywin/win32 (confirmed) - def device(port): - return '/dev/com%d' % (port + 1) - -elif plat == 'openbsd3': #BSD (confirmed) - def device(port): - return '/dev/ttyp%d' % port - -elif plat[:3] == 'bsd' or \ - plat[:7] == 'freebsd' or \ - plat[:7] == 'openbsd' or \ - plat[:6] == 'darwin': #BSD (confirmed for freebsd4: cuaa%d) - def device(port): - return '/dev/cuad%d' % port - -elif plat[:6] == 'netbsd': #NetBSD 1.6 testing by Erk - def device(port): - return '/dev/dty%02d' % port - -elif plat[:4] == 'irix': #IRIX (partialy tested) - def device(port): - return '/dev/ttyf%d' % (port+1) #XXX different device names depending on flow control - -elif plat[:2] == 'hp': #HP-UX (not tested) - def device(port): - return '/dev/tty%dp0' % (port+1) - -elif plat[:5] == 'sunos': #Solaris/SunOS (confirmed) - def device(port): - return '/dev/tty%c' % (ord('a')+port) - -elif plat[:3] == 'aix': #aix - def device(port): - return '/dev/tty%d' % (port) - -else: - #platform detection has failed... - print """don't know how to number ttys on this system. -! Use an explicit path (eg /dev/ttyS1) or send this information to -! the author of this module: - -sys.platform = %r -os.name = %r -serialposix.py version = %s - -also add the device name of the serial port and where the -counting starts for the first serial port. -e.g. 'first serial port: /dev/ttyS0' -and with a bit luck you can get this module running... -""" % (sys.platform, os.name, VERSION) - #no exception, just continue with a brave attempt to build a device name - #even if the device name is not correct for the platform it has chances - #to work using a string with the real device name as port paramter. - def device(portum): - return '/dev/ttyS%d' % portnum - #~ raise Exception, "this module does not run on this platform, sorry." - -#whats up with "aix", "beos", .... -#they should work, just need to know the device names. - - -#load some constants for later use. -#try to use values from TERMIOS, use defaults from linux otherwise -TIOCMGET = hasattr(TERMIOS, 'TIOCMGET') and TERMIOS.TIOCMGET or 0x5415 -TIOCMBIS = hasattr(TERMIOS, 'TIOCMBIS') and TERMIOS.TIOCMBIS or 0x5416 -TIOCMBIC = hasattr(TERMIOS, 'TIOCMBIC') and TERMIOS.TIOCMBIC or 0x5417 -TIOCMSET = hasattr(TERMIOS, 'TIOCMSET') and TERMIOS.TIOCMSET or 0x5418 - -#TIOCM_LE = hasattr(TERMIOS, 'TIOCM_LE') and TERMIOS.TIOCM_LE or 0x001 -TIOCM_DTR = hasattr(TERMIOS, 'TIOCM_DTR') and TERMIOS.TIOCM_DTR or 0x002 -TIOCM_RTS = hasattr(TERMIOS, 'TIOCM_RTS') and TERMIOS.TIOCM_RTS or 0x004 -#TIOCM_ST = hasattr(TERMIOS, 'TIOCM_ST') and TERMIOS.TIOCM_ST or 0x008 -#TIOCM_SR = hasattr(TERMIOS, 'TIOCM_SR') and TERMIOS.TIOCM_SR or 0x010 - -TIOCM_CTS = hasattr(TERMIOS, 'TIOCM_CTS') and TERMIOS.TIOCM_CTS or 0x020 -TIOCM_CAR = hasattr(TERMIOS, 'TIOCM_CAR') and TERMIOS.TIOCM_CAR or 0x040 -TIOCM_RNG = hasattr(TERMIOS, 'TIOCM_RNG') and TERMIOS.TIOCM_RNG or 0x080 -TIOCM_DSR = hasattr(TERMIOS, 'TIOCM_DSR') and TERMIOS.TIOCM_DSR or 0x100 -TIOCM_CD = hasattr(TERMIOS, 'TIOCM_CD') and TERMIOS.TIOCM_CD or TIOCM_CAR -TIOCM_RI = hasattr(TERMIOS, 'TIOCM_RI') and TERMIOS.TIOCM_RI or TIOCM_RNG -#TIOCM_OUT1 = hasattr(TERMIOS, 'TIOCM_OUT1') and TERMIOS.TIOCM_OUT1 or 0x2000 -#TIOCM_OUT2 = hasattr(TERMIOS, 'TIOCM_OUT2') and TERMIOS.TIOCM_OUT2 or 0x4000 -TIOCINQ = hasattr(TERMIOS, 'FIONREAD') and TERMIOS.FIONREAD or 0x541B - -TIOCM_zero_str = struct.pack('I', 0) -TIOCM_RTS_str = struct.pack('I', TIOCM_RTS) -TIOCM_DTR_str = struct.pack('I', TIOCM_DTR) - -TIOCSBRK = hasattr(TERMIOS, 'TIOCSBRK') and TERMIOS.TIOCSBRK or 0x5427 -TIOCCBRK = hasattr(TERMIOS, 'TIOCCBRK') and TERMIOS.TIOCCBRK or 0x5428 - -ASYNC_SPD_MASK = 0x1030 -ASYNC_SPD_CUST = 0x0030 - -baudrate_constants = { - 0: 0000000, # hang up - 50: 0000001, - 75: 0000002, - 110: 0000003, - 134: 0000004, - 150: 0000005, - 200: 0000006, - 300: 0000007, - 600: 0000010, - 1200: 0000011, - 1800: 0000012, - 2400: 0000013, - 4800: 0000014, - 9600: 0000015, - 19200: 0000016, - 38400: 0000017, - 57600: 0010001, - 115200: 0010002, - 230400: 0010003, - 460800: 0010004, - 500000: 0010005, - 576000: 0010006, - 921600: 0010007, - 1000000: 0010010, - 1152000: 0010011, - 1500000: 0010012, - 2000000: 0010013, - 2500000: 0010014, - 3000000: 0010015, - 3500000: 0010016, - 4000000: 0010017 -} - - -class Serial(SerialBase): - """Serial port class POSIX implementation. Serial port configuration is - done with termios and fcntl. Runs on Linux and many other Un*x like - systems.""" - - def open(self): - """Open port with current settings. This may throw a SerialException - if the port cannot be opened.""" - if self._port is None: - raise SerialException("Port must be configured before it can be used.") - self.fd = None - #open - try: - self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK) - except Exception, msg: - self.fd = None - raise SerialException("could not open port %s: %s" % (self._port, msg)) - #~ fcntl.fcntl(self.fd, FCNTL.F_SETFL, 0) #set blocking - - try: - self._reconfigurePort() - except: - os.close(self.fd) - self.fd = None - else: - self._isOpen = True - #~ self.flushInput() - - - def _reconfigurePort(self): - """Set communication parameters on opened port.""" - if self.fd is None: - raise SerialException("Can only operate on a valid port handle") - custom_baud = None - - vmin = vtime = 0 #timeout is done via select - if self._interCharTimeout is not None: - vmin = 1 - vtime = int(self._interCharTimeout * 10) - try: - iflag, oflag, cflag, lflag, ispeed, ospeed, cc = termios.tcgetattr(self.fd) - except termios.error, msg: #if a port is nonexistent but has a /dev file, it'll fail here - raise SerialException("Could not configure port: %s" % msg) - #set up raw mode / no echo / binary - cflag |= (TERMIOS.CLOCAL|TERMIOS.CREAD) - lflag &= ~(TERMIOS.ICANON|TERMIOS.ECHO|TERMIOS.ECHOE|TERMIOS.ECHOK|TERMIOS.ECHONL| - TERMIOS.ISIG|TERMIOS.IEXTEN) #|TERMIOS.ECHOPRT - for flag in ('ECHOCTL', 'ECHOKE'): #netbsd workaround for Erk - if hasattr(TERMIOS, flag): - lflag &= ~getattr(TERMIOS, flag) - - oflag &= ~(TERMIOS.OPOST) - iflag &= ~(TERMIOS.INLCR|TERMIOS.IGNCR|TERMIOS.ICRNL|TERMIOS.IGNBRK) - if hasattr(TERMIOS, 'IUCLC'): - iflag &= ~TERMIOS.IUCLC - if hasattr(TERMIOS, 'PARMRK'): - iflag &= ~TERMIOS.PARMRK - - #setup baudrate - try: - ispeed = ospeed = getattr(TERMIOS,'B%s' % (self._baudrate)) - except AttributeError: - try: - ispeed = ospeed = baudrate_constants[self._baudrate] - except KeyError: - #~ raise ValueError('Invalid baud rate: %r' % self._baudrate) - # may need custom baud rate, it isnt in our list. - ispeed = ospeed = getattr(TERMIOS, 'B38400') - custom_baud = int(self._baudrate) # store for later - - #setup char len - cflag &= ~TERMIOS.CSIZE - if self._bytesize == 8: - cflag |= TERMIOS.CS8 - elif self._bytesize == 7: - cflag |= TERMIOS.CS7 - elif self._bytesize == 6: - cflag |= TERMIOS.CS6 - elif self._bytesize == 5: - cflag |= TERMIOS.CS5 - else: - raise ValueError('Invalid char len: %r' % self._bytesize) - #setup stopbits - if self._stopbits == STOPBITS_ONE: - cflag &= ~(TERMIOS.CSTOPB) - elif self._stopbits == STOPBITS_TWO: - cflag |= (TERMIOS.CSTOPB) - else: - raise ValueError('Invalid stopit specification: %r' % self._stopbits) - #setup parity - iflag &= ~(TERMIOS.INPCK|TERMIOS.ISTRIP) - if self._parity == PARITY_NONE: - cflag &= ~(TERMIOS.PARENB|TERMIOS.PARODD) - elif self._parity == PARITY_EVEN: - cflag &= ~(TERMIOS.PARODD) - cflag |= (TERMIOS.PARENB) - elif self._parity == PARITY_ODD: - cflag |= (TERMIOS.PARENB|TERMIOS.PARODD) - else: - raise ValueError('Invalid parity: %r' % self._parity) - #setup flow control - #xonxoff - if hasattr(TERMIOS, 'IXANY'): - if self._xonxoff: - iflag |= (TERMIOS.IXON|TERMIOS.IXOFF) #|TERMIOS.IXANY) - else: - iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF|TERMIOS.IXANY) - else: - if self._xonxoff: - iflag |= (TERMIOS.IXON|TERMIOS.IXOFF) - else: - iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF) - #rtscts - if hasattr(TERMIOS, 'CRTSCTS'): - if self._rtscts: - cflag |= (TERMIOS.CRTSCTS) - else: - cflag &= ~(TERMIOS.CRTSCTS) - elif hasattr(TERMIOS, 'CNEW_RTSCTS'): #try it with alternate constant name - if self._rtscts: - cflag |= (TERMIOS.CNEW_RTSCTS) - else: - cflag &= ~(TERMIOS.CNEW_RTSCTS) - #XXX should there be a warning if setting up rtscts (and xonxoff etc) fails?? - - #buffer - #vmin "minimal number of characters to be read. = for non blocking" - if vmin < 0 or vmin > 255: - raise ValueError('Invalid vmin: %r ' % vmin) - cc[TERMIOS.VMIN] = vmin - #vtime - if vtime < 0 or vtime > 255: - raise ValueError('Invalid vtime: %r' % vtime) - cc[TERMIOS.VTIME] = vtime - #activate settings - termios.tcsetattr(self.fd, TERMIOS.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]) - - # apply custom baud rate, if any - if custom_baud is not None: - import array - buf = array.array('i', [0] * 32) - - # get serial_struct - FCNTL.ioctl(self.fd, TERMIOS.TIOCGSERIAL, buf) - - # set custom divisor - buf[6] = buf[7] / custom_baud - - # update flags - buf[4] &= ~ASYNC_SPD_MASK - buf[4] |= ASYNC_SPD_CUST - - # set serial_struct - try: - res = FCNTL.ioctl(self.fd, TERMIOS.TIOCSSERIAL, buf) - except IOError: - raise ValueError('Failed to set custom baud rate: %r' % self._baudrate) - - def close(self): - """Close port""" - if self._isOpen: - if self.fd is not None: - os.close(self.fd) - self.fd = None - self._isOpen = False - - def makeDeviceName(self, port): - return device(port) - - # - - - - - - - - - - - - - - - - - - - - - - - - - - def inWaiting(self): - """Return the number of characters currently in the input buffer.""" - #~ s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str) - s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str) - return struct.unpack('I',s)[0] - - def read(self, size=1): - """Read size bytes from the serial port. If a timeout is set it may - return less characters as requested. With no timeout it will block - until the requested number of bytes is read.""" - if self.fd is None: raise portNotOpenError - read = '' - inp = None - if size > 0: - while len(read) < size: - #print "\tread(): size",size, "have", len(read) #debug - ready,_,_ = select.select([self.fd],[],[], self._timeout) - if not ready: - break #timeout - buf = os.read(self.fd, size-len(read)) - read = read + buf - if (self._timeout >= 0 or self._interCharTimeout > 0) and not buf: - break #early abort on timeout - return read - - def write(self, data): - """Output the given string over the serial port.""" - if self.fd is None: raise portNotOpenError - if not isinstance(data, str): - raise TypeError('expected str, got %s' % type(data)) - t = len(data) - d = data - while t > 0: - try: - if self._writeTimeout is not None and self._writeTimeout > 0: - _,ready,_ = select.select([],[self.fd],[], self._writeTimeout) - if not ready: - raise writeTimeoutError - n = os.write(self.fd, d) - if self._writeTimeout is not None and self._writeTimeout > 0: - _,ready,_ = select.select([],[self.fd],[], self._writeTimeout) - if not ready: - raise writeTimeoutError - d = d[n:] - t = t - n - except OSError,v: - if v.errno != errno.EAGAIN: - raise - - def flush(self): - """Flush of file like objects. In this case, wait until all data - is written.""" - self.drainOutput() - - def flushInput(self): - """Clear input buffer, discarding all that is in the buffer.""" - if self.fd is None: - raise portNotOpenError - termios.tcflush(self.fd, TERMIOS.TCIFLUSH) - - def flushOutput(self): - """Clear output buffer, aborting the current output and - discarding all that is in the buffer.""" - if self.fd is None: - raise portNotOpenError - termios.tcflush(self.fd, TERMIOS.TCOFLUSH) - - def sendBreak(self, duration=0.25): - """Send break condition. Timed, returns to idle state after given duration.""" - if self.fd is None: - raise portNotOpenError - termios.tcsendbreak(self.fd, int(duration/0.25)) - - def setBreak(self, level=1): - """Set break: Controls TXD. When active, to transmitting is possible.""" - if self.fd is None: raise portNotOpenError - if level: - fcntl.ioctl(self.fd, TIOCSBRK) - else: - fcntl.ioctl(self.fd, TIOCCBRK) - - def setRTS(self, level=1): - """Set terminal status line: Request To Send""" - if self.fd is None: raise portNotOpenError - if level: - fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_RTS_str) - else: - fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_RTS_str) - - def setDTR(self, level=1): - """Set terminal status line: Data Terminal Ready""" - if self.fd is None: raise portNotOpenError - if level: - fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str) - else: - fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_DTR_str) - - def getCTS(self): - """Read terminal status line: Clear To Send""" - if self.fd is None: raise portNotOpenError - s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) - return struct.unpack('I',s)[0] & TIOCM_CTS != 0 - - def getDSR(self): - """Read terminal status line: Data Set Ready""" - if self.fd is None: raise portNotOpenError - s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) - return struct.unpack('I',s)[0] & TIOCM_DSR != 0 - - def getRI(self): - """Read terminal status line: Ring Indicator""" - if self.fd is None: raise portNotOpenError - s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) - return struct.unpack('I',s)[0] & TIOCM_RI != 0 - - def getCD(self): - """Read terminal status line: Carrier Detect""" - if self.fd is None: raise portNotOpenError - s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str) - return struct.unpack('I',s)[0] & TIOCM_CD != 0 - - # - - platform specific - - - - - - def drainOutput(self): - """internal - not portable!""" - if self.fd is None: raise portNotOpenError - termios.tcdrain(self.fd) - - def nonblocking(self): - """internal - not portable!""" - if self.fd is None: - raise portNotOpenError - fcntl.fcntl(self.fd, FCNTL.F_SETFL, FCNTL.O_NONBLOCK) - - def fileno(self): - """For easier of the serial port instance with select. - WARNING: this function is not portable to different platforms!""" - if self.fd is None: raise portNotOpenError - return self.fd - -if __name__ == '__main__': - s = Serial(0, - baudrate=19200, #baudrate - bytesize=EIGHTBITS, #number of databits - parity=PARITY_EVEN, #enable parity checking - stopbits=STOPBITS_ONE, #number of stopbits - timeout=3, #set a timeout value, None for waiting forever - xonxoff=0, #enable software flow control - rtscts=0, #enable RTS/CTS flow control - ) - s.setRTS(1) - s.setDTR(1) - s.flushInput() - s.flushOutput() - s.write('hello') - print repr(s.read(5)) - print s.inWaiting() - del s - diff --git a/plugins/rfid/serial/serialutil.py b/plugins/rfid/serial/serialutil.py deleted file mode 100644 index fd466f2..0000000 --- a/plugins/rfid/serial/serialutil.py +++ /dev/null @@ -1,400 +0,0 @@ -#! python -# Python Serial Port Extension for Win32, Linux, BSD, Jython -# see __init__.py -# -# (C) 2001-2008 Chris Liechti <cliechti@gmx.net> -# this is distributed under a free software license, see license.txt - -PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE = 'N', 'E', 'O', 'M', 'S' -STOPBITS_ONE, STOPBITS_TWO = (1, 2) -FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5,6,7,8) - -PARITY_NAMES = { - PARITY_NONE: 'None', - PARITY_EVEN: 'Even', - PARITY_ODD: 'Odd', - PARITY_MARK: 'Mark', - PARITY_SPACE:'Space', -} - -XON = chr(17) -XOFF = chr(19) - -#Python < 2.2.3 compatibility -try: - True -except: - True = 1 - False = not True - -class SerialException(Exception): - """Base class for serial port related exceptions.""" - -portNotOpenError = SerialException('Port not open') - -class SerialTimeoutException(SerialException): - """Write timeouts give an exception""" - -writeTimeoutError = SerialTimeoutException("Write timeout") - -class FileLike(object): - """An abstract file like class. - - This class implements readline and readlines based on read and - writelines based on write. - This class is used to provide the above functions for to Serial - port objects. - - Note that when the serial port was opened with _NO_ timeout that - readline blocks until it sees a newline (or the specified size is - reached) and that readlines would never return and therefore - refuses to work (it raises an exception in this case)! - """ - - def read(self, size): raise NotImplementedError - def write(self, s): raise NotImplementedError - - def readline(self, size=None, eol='\n'): - """read a line which is terminated with end-of-line (eol) character - ('\n' by default) or until timeout""" - line = '' - while 1: - c = self.read(1) - if c: - line += c #not very efficient but lines are usually not that long - if c == eol: - break - if size is not None and len(line) >= size: - break - else: - break - return line - - def readlines(self, sizehint=None, eol='\n'): - """read a list of lines, until timeout - sizehint is ignored""" - if self.timeout is None: - raise ValueError, "Serial port MUST have enabled timeout for this function!" - lines = [] - while 1: - line = self.readline(eol=eol) - if line: - lines.append(line) - if line[-1] != eol: #was the line received with a timeout? - break - else: - break - return lines - - def xreadlines(self, sizehint=None): - """just call readlines - here for compatibility""" - return self.readlines() - - def writelines(self, sequence): - for line in sequence: - self.write(line) - - def flush(self): - """flush of file like objects""" - pass - - # iterator for e.g. "for line in Serial(0): ..." usage - def next(self): - line = self.readline() - if not line: raise StopIteration - return line - - def __iter__(self): - return self - - -class SerialBase(FileLike): - """Serial port base class. Provides __init__ function and properties to - get/set port settings.""" - - #default values, may be overriden in subclasses that do not support all values - BAUDRATES = (50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600, - 19200,38400,57600,115200,230400,460800,500000,576000,921600, - 1000000,1152000,1500000,2000000,2500000,3000000,3500000,4000000) - BYTESIZES = (FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS) - PARITIES = (PARITY_NONE, PARITY_EVEN, PARITY_ODD) - STOPBITS = (STOPBITS_ONE, STOPBITS_TWO) - - def __init__(self, - port = None, #number of device, numbering starts at - #zero. if everything fails, the user - #can specify a device string, note - #that this isn't portable anymore - #port will be opened if one is specified - baudrate=9600, #baudrate - bytesize=EIGHTBITS, #number of databits - parity=PARITY_NONE, #enable parity checking - stopbits=STOPBITS_ONE, #number of stopbits - timeout=None, #set a timeout value, None to wait forever - xonxoff=0, #enable software flow control - rtscts=0, #enable RTS/CTS flow control - writeTimeout=None, #set a timeout for writes - dsrdtr=None, #None: use rtscts setting, dsrdtr override if true or false - interCharTimeout=None #Inter-character timeout, None to disable - ): - """Initialize comm port object. If a port is given, then the port will be - opened immediately. Otherwise a Serial port object in closed state - is returned.""" - - self._isOpen = False - self._port = None #correct value is assigned below trough properties - self._baudrate = None #correct value is assigned below trough properties - self._bytesize = None #correct value is assigned below trough properties - self._parity = None #correct value is assigned below trough properties - self._stopbits = None #correct value is assigned below trough properties - self._timeout = None #correct value is assigned below trough properties - self._writeTimeout = None #correct value is assigned below trough properties - self._xonxoff = None #correct value is assigned below trough properties - self._rtscts = None #correct value is assigned below trough properties - self._dsrdtr = None #correct value is assigned below trough properties - self._interCharTimeout = None #correct value is assigned below trough properties - - #assign values using get/set methods using the properties feature - self.port = port - self.baudrate = baudrate - self.bytesize = bytesize - self.parity = parity - self.stopbits = stopbits - self.timeout = timeout - self.writeTimeout = writeTimeout - self.xonxoff = xonxoff - self.rtscts = rtscts - self.dsrdtr = dsrdtr - self.interCharTimeout = interCharTimeout - - if port is not None: - self.open() - - def isOpen(self): - """Check if the port is opened.""" - return self._isOpen - - # - - - - - - - - - - - - - - - - - - - - - - - - - - #TODO: these are not realy needed as the is the BAUDRATES etc attribute... - #maybe i remove them before the final release... - - def getSupportedBaudrates(self): - return [(str(b), b) for b in self.BAUDRATES] - - def getSupportedByteSizes(self): - return [(str(b), b) for b in self.BYTESIZES] - - def getSupportedStopbits(self): - return [(str(b), b) for b in self.STOPBITS] - - def getSupportedParities(self): - return [(PARITY_NAMES[b], b) for b in self.PARITIES] - - # - - - - - - - - - - - - - - - - - - - - - - - - - - def setPort(self, port): - """Change the port. The attribute portstr is set to a string that - contains the name of the port.""" - - was_open = self._isOpen - if was_open: self.close() - if port is not None: - if type(port) in [type(''), type(u'')]: #strings are taken directly - self.portstr = port - else: - self.portstr = self.makeDeviceName(port) - else: - self.portstr = None - self._port = port - if was_open: self.open() - - def getPort(self): - """Get the current port setting. The value that was passed on init or using - setPort() is passed back. See also the attribute portstr which contains - the name of the port as a string.""" - return self._port - - port = property(getPort, setPort, doc="Port setting") - - - def setBaudrate(self, baudrate): - """Change baudrate. It raises a ValueError if the port is open and the - baudrate is not possible. If the port is closed, then tha value is - accepted and the exception is raised when the port is opened.""" - #~ if baudrate not in self.BAUDRATES: raise ValueError("Not a valid baudrate: %r" % baudrate) - try: - self._baudrate = int(baudrate) - except TypeError: - raise ValueError("Not a valid baudrate: %r" % (baudrate,)) - else: - if self._isOpen: self._reconfigurePort() - - def getBaudrate(self): - """Get the current baudrate setting.""" - return self._baudrate - - baudrate = property(getBaudrate, setBaudrate, doc="Baudrate setting") - - - def setByteSize(self, bytesize): - """Change byte size.""" - if bytesize not in self.BYTESIZES: raise ValueError("Not a valid byte size: %r" % (bytesize,)) - self._bytesize = bytesize - if self._isOpen: self._reconfigurePort() - - def getByteSize(self): - """Get the current byte size setting.""" - return self._bytesize - - bytesize = property(getByteSize, setByteSize, doc="Byte size setting") - - - def setParity(self, parity): - """Change parity setting.""" - if parity not in self.PARITIES: raise ValueError("Not a valid parity: %r" % (parity,)) - self._parity = parity - if self._isOpen: self._reconfigurePort() - - def getParity(self): - """Get the current parity setting.""" - return self._parity - - parity = property(getParity, setParity, doc="Parity setting") - - - def setStopbits(self, stopbits): - """Change stopbits size.""" - if stopbits not in self.STOPBITS: raise ValueError("Not a valid stopbit size: %r" % (stopbits,)) - self._stopbits = stopbits - if self._isOpen: self._reconfigurePort() - - def getStopbits(self): - """Get the current stopbits setting.""" - return self._stopbits - - stopbits = property(getStopbits, setStopbits, doc="Stopbits setting") - - - def setTimeout(self, timeout): - """Change timeout setting.""" - if timeout is not None: - if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,)) - try: - timeout + 1 #test if it's a number, will throw a TypeError if not... - except TypeError: - raise ValueError("Not a valid timeout: %r" % (timeout,)) - - self._timeout = timeout - if self._isOpen: self._reconfigurePort() - - def getTimeout(self): - """Get the current timeout setting.""" - return self._timeout - - timeout = property(getTimeout, setTimeout, doc="Timeout setting for read()") - - - def setWriteTimeout(self, timeout): - """Change timeout setting.""" - if timeout is not None: - if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,)) - try: - timeout + 1 #test if it's a number, will throw a TypeError if not... - except TypeError: - raise ValueError("Not a valid timeout: %r" % timeout) - - self._writeTimeout = timeout - if self._isOpen: self._reconfigurePort() - - def getWriteTimeout(self): - """Get the current timeout setting.""" - return self._writeTimeout - - writeTimeout = property(getWriteTimeout, setWriteTimeout, doc="Timeout setting for write()") - - - def setXonXoff(self, xonxoff): - """Change XonXoff setting.""" - self._xonxoff = xonxoff - if self._isOpen: self._reconfigurePort() - - def getXonXoff(self): - """Get the current XonXoff setting.""" - return self._xonxoff - - xonxoff = property(getXonXoff, setXonXoff, doc="Xon/Xoff setting") - - def setRtsCts(self, rtscts): - """Change RtsCts flow control setting.""" - self._rtscts = rtscts - if self._isOpen: self._reconfigurePort() - - def getRtsCts(self): - """Get the current RtsCts flow control setting.""" - return self._rtscts - - rtscts = property(getRtsCts, setRtsCts, doc="RTS/CTS flow control setting") - - def setDsrDtr(self, dsrdtr=None): - """Change DsrDtr flow control setting.""" - if dsrdtr is None: - #if not set, keep backwards compatibility and follow rtscts setting - self._dsrdtr = self._rtscts - else: - #if defined independently, follow its value - self._dsrdtr = dsrdtr - if self._isOpen: self._reconfigurePort() - - def getDsrDtr(self): - """Get the current DsrDtr flow control setting.""" - return self._dsrdtr - - dsrdtr = property(getDsrDtr, setDsrDtr, "DSR/DTR flow control setting") - - def setInterCharTimeout(self, interCharTimeout): - """Change inter-character timeout setting.""" - if interCharTimeout is not None: - if interCharTimeout < 0: raise ValueError("Not a valid timeout: %r" % interCharTimeout) - try: - interCharTimeout + 1 #test if it's a number, will throw a TypeError if not... - except TypeError: - raise ValueError("Not a valid timeout: %r" % interCharTimeout) - - self._interCharTimeout = interCharTimeout - if self._isOpen: self._reconfigurePort() - - def getInterCharTimeout(self): - """Get the current inter-character timeout setting.""" - return self._interCharTimeout - - interCharTimeout = property(getInterCharTimeout, setInterCharTimeout, doc="Inter-character timeout setting for read()") - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - def __repr__(self): - """String representation of the current port settings and its state.""" - return "%s<id=0x%x, open=%s>(port=%r, baudrate=%r, bytesize=%r, parity=%r, stopbits=%r, timeout=%r, xonxoff=%r, rtscts=%r, dsrdtr=%r)" % ( - self.__class__.__name__, - id(self), - self._isOpen, - self.portstr, - self.baudrate, - self.bytesize, - self.parity, - self.stopbits, - self.timeout, - self.xonxoff, - self.rtscts, - self.dsrdtr, - ) - -if __name__ == '__main__': - s = SerialBase() - print s.portstr - print s.getSupportedBaudrates() - print s.getSupportedByteSizes() - print s.getSupportedParities() - print s.getSupportedStopbits() - print s diff --git a/plugins/rfid/tis2000.py b/plugins/rfid/tis2000.py deleted file mode 100644 index 91d1991..0000000 --- a/plugins/rfid/tis2000.py +++ /dev/null @@ -1,252 +0,0 @@ -from device import RFIDDevice -from serial import Serial -import dbus -from dbus.mainloop.glib import DBusGMainLoop -import gobject -import re -from time import sleep - -HAL_SERVICE = 'org.freedesktop.Hal' -HAL_MGR_PATH = '/org/freedesktop/Hal/Manager' -HAL_MGR_IFACE = 'org.freedesktop.Hal.Manager' -HAL_DEV_IFACE = 'org.freedesktop.Hal.Device' -REGEXP_SERUSB = '\/org\/freedesktop\/Hal\/devices\/usb_device['\ - 'a-z,A-Z,0-9,_]*serial_usb_[0-9]' - -STATE_WAITING = 0 -STATE_WAITING2 = 1 -STATE_READING = 2 - -class RFIDReader(RFIDDevice): - """ - TIS-2000 interface. - """ - - def __init__(self): - - RFIDDevice.__init__(self) - self.last_tag = "" - self.ser = Serial() - self.device = '' - self.device_path = '' - self._connected = False - self._state = STATE_WAITING - - loop = DBusGMainLoop() - self.bus = dbus.SystemBus(mainloop=loop) - hmgr_iface = dbus.Interface(self.bus.get_object(HAL_SERVICE, - HAL_MGR_PATH), HAL_MGR_IFACE) - - hmgr_iface.connect_to_signal('DeviceRemoved', self._device_removed_cb) - - def get_present(self): - """ - Checks if TI-S2000 device is present. - Returns True if so, False otherwise. - """ - hmgr_if = dbus.Interface(self.bus.get_object(HAL_SERVICE, HAL_MGR_PATH), - HAL_MGR_IFACE) - tiusb_devices = set(hmgr_if.FindDeviceStringMatch('serial.type', - 'usb')) & set(hmgr_if.FindDeviceStringMatch( - 'info.product', 'TUSB3410 Microcontroller')) - for i in tiusb_devices: - tiusb_if = dbus.Interface(self.bus.get_object(HAL_SERVICE, i), - HAL_DEV_IFACE) - if tiusb_if.PropertyExists('linux.device_file'): - self.device = str(tiusb_if.GetProperty('linux.device_file')) - self.device_path = i - return True - return False - - def do_connect(self): - """ - Connects to the device. - Returns True if successfull, False otherwise. - """ - retval = False - if self.get_present(): - try: - self.ser = Serial(self.device, 9600, timeout=0.1) - self._connected = True - self._escape() - self._clear() - self._format() - gobject.idle_add(self._loop) - retval = True - except: - self._connected = False - return retval - - def do_disconnect(self): - """ - Disconnect from the device. - """ - self.ser.close() - self._connected = False - - def read_tag(self): - """ - Returns the last read value. - """ - return self.last_tag - - def write_tag(self, hexval): - """ - Usage: write_tag(hexval) - - Writes the hexadecimal string "hexval" into the tag. - Returns True if successfull, False otherwise. - """ - #self.ser.flushInput() - reg = re.compile('([^0-9A-F]+)') - if not (hexval.__len__() == 16 and reg.findall(hexval) == []): - return False - self.ser.read(100) - self.ser.write('P') - for i in hexval: - self.ser.write(i) - sleep(1) - resp = self.ser.read(64) - resp = resp.split()[0] - if resp == "P0": - return True - else: - return False - - def _escape(self): - """ - Sends the scape command to the TIS-2000 device. - """ - try: - #self.ser.flushInput() - self.ser.read(100) - self.ser.write('\x1B') - resp = self.ser.read() - if resp == 'E': - return True - else: - return False - except: - return False - - def _format(self): - """ - Sends the format command to the TIS-2000 device. - """ - try: - #self.ser.flushInput() - self.ser.read(100) - self.ser.write('F') - resp = self.ser.read() - if resp == 'F': - return True - else: - return False - except: - return False - - def _clear(self): - """ - Sends the clear command to the TIS-2000 device. - """ - try: - #self.ser.flushInput() - self.ser.read(100) - self.ser.write('C') - resp = self.ser.read() - if resp == 'C': - return True - else: - return False - except: - return False - - def get_version(self): - """ - Sends the version command to the TIS-2000 device and returns - a string with the device version. - """ - #self.ser.flushInput() - self.ser.read(100) - self.ser.write('V') - version = [] - tver = "" - while 1: - resp = self.ser.read() - if resp == '\x0A' or resp == '': - break - if resp != '\n' and resp != '\r': - version.append(resp) - for i in version: - tver = tver + i - if tver != "": - return tver - return "Unknown" - - def _device_removed_cb(self, path): - """ - Called when a device is removed. - Checks if the removed device is itself and emits the "disconnected" - signal if so. - """ - if path == self.device_path: - self.device_path = '' - self.ser.close() - self._connected = False - self.emit("disconnected","TIS-2000") - - def _loop(self): - """ - Threaded loop for reading data sent from the TIS-2000. - """ - if not self._connected: - return False - - if self._state is STATE_WAITING: - data = self.ser.read() - if data in ['W', 'R']: - self._state = STATE_WAITING2 - return True - - elif self._state is STATE_WAITING2: - data = self.ser.read() - if data.isspace(): - self._state = STATE_READING - else: - self._clear() - self._state = STATE_WAITING - return True - - elif self._state is STATE_READING: - data = self.ser.read(16) - if data.__len__() < 16: - self._clear() - self._state = STATE_WAITING - else: - reg = re.compile('([^0-9A-F]+)') - if reg.findall(data) == []: - self.emit("tag-read", data) - self.last_tag = data - self._clear() - self._state = STATE_WAITING - return True - return True - -# Testing -#if __name__ == '__main__': -# def handler(device, idhex): -# """ -# Handler for "tag-read" signal. -# Prints the tag id. -# """ -# print "ID: ", idhex -# -# dev = RFIDReader() -# if dev.get_present(): -# dev.do_connect() -# dev.connect('tag-read', handler) -# else: -# print "Not connected" -# -# mloop = gobject.MainLoop() -# mloop.run() diff --git a/plugins/rfid/utils.py b/plugins/rfid/utils.py deleted file mode 100644 index 94e5540..0000000 --- a/plugins/rfid/utils.py +++ /dev/null @@ -1,98 +0,0 @@ -# utils.py - Helper functions for tis2000.py -# Copyright (C) 2010 Emiliano Pastorino <epastorino@plan.ceibal.edu.uy> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -def strhex2bin(strhex): - """ - Convert a string representing an hex value into a - string representing the same value in binary format. - """ - dic = { '0':"0000", - '1':"0001", - '2':"0010", - '3':"0011", - '4':"0100", - '5':"0101", - '6':"0110", - '7':"0111", - '8':"1000", - '9':"1001", - 'A':"1010", - 'B':"1011", - 'C':"1100", - 'D':"1101", - 'E':"1110", - 'F':"1111" - } - binstr = "" - for i in strhex: - binstr = binstr + dic[i.upper()] - return binstr - -def strbin2dec(strbin): - """ - Convert a string representing a binary value into a - string representing the same value in decimal format. - """ - strdec = "0" - for i in range(1, strbin.__len__()+1): - strdec = str(int(strdec)+int(strbin[-i])*int(pow(2, i-1))) - return strdec - -def dec2bin(ndec): - """ - Convert a decimal number into a string representing - the same value in binary format. - """ - if ndec < 1: - return "0" - binary = [] - while ndec != 0: - binary.append(ndec%2) - ndec = ndec/2 - strbin = "" - binary.reverse() - for i in binary: - strbin = strbin+str(i) - return strbin - -def bin2hex(strbin): - """ - Convert a string representing a binary number into a string - representing the same value in hexadecimal format. - """ - dic = { "0000":"0", - "0001":"1", - "0010":"2", - "0011":"3", - "0100":"4", - "0101":"5", - "0110":"6", - "0111":"7", - "1000":"8", - "1001":"9", - "1010":"A", - "1011":"B", - "1100":"C", - "1101":"D", - "1110":"E", - "1111":"F" - } - while strbin.__len__()%4 != 0: - strbin = '0' + strbin - strh = "" - for i in range(0, strbin.__len__()/4): - strh = strh + dic[str(strbin[i*4:i*4+4])] - return strh diff --git a/plugins/turtle_blocks_extras/turtle_blocks_extras.py b/plugins/turtle_blocks_extras/turtle_blocks_extras.py index 36d98e2..132848a 100644 --- a/plugins/turtle_blocks_extras/turtle_blocks_extras.py +++ b/plugins/turtle_blocks_extras/turtle_blocks_extras.py @@ -92,6 +92,7 @@ class Turtle_blocks_extras(Plugin): # internally expanded macro palette.add_block('while', + hidden=True, style='clamp-style-boolean', label=_('while'), prim_name='while', @@ -102,6 +103,7 @@ boolean operators from Numbers palette')) # internally expanded macro palette.add_block('until', + hidden=True, style='clamp-style-boolean', label=_('until'), prim_name='until', @@ -112,6 +114,7 @@ boolean operators from Numbers palette')) primitive_dictionary['clamp'] = self._prim_clamp palette.add_block('sandwichclamp', + hidden=True, style='clamp-style-collapsible', label=' ', special_name=_('top'), @@ -121,12 +124,12 @@ boolean operators from Numbers palette')) def _media_palette(self): - palette = make_palette('media', - colors=["#A0FF00", "#80A000"], - help_string=_('Palette of media objects'), - position=7) + palette = make_palette('flow', + colors=["#FFC000", "#A08000"], + help_string=_('Palette of flow operators')) palette.add_block('journal', + hidden=True, style='box-style-media', label=' ', default='None', @@ -139,6 +142,7 @@ boolean operators from Numbers palette')) MEDIA_SHAPES.append('journalon') palette.add_block('audio', + hidden=True, style='box-style-media', label=' ', special_name=_('audio'), @@ -151,6 +155,7 @@ boolean operators from Numbers palette')) MEDIA_SHAPES.append('audioon') palette.add_block('video', + hidden=True, style='box-style-media', label=' ', special_name=_('video'), @@ -163,6 +168,7 @@ boolean operators from Numbers palette')) MEDIA_SHAPES.append('videoon') palette.add_block('description', + hidden=True, style='box-style-media', label=' ', special_name=_('description'), @@ -175,6 +181,7 @@ boolean operators from Numbers palette')) MEDIA_SHAPES.append('descriptionon') palette.add_block('string', + hidden=True, style='box-style', label=_('text'), default=_('text'), @@ -183,6 +190,7 @@ boolean operators from Numbers palette')) primitive_dictionary['show'] = self._prim_show palette.add_block('show', + hidden=True, style='basic-style-1arg', label=_('show'), default=_('text'), @@ -226,6 +234,7 @@ Journal')) primitive_dictionary['setscale'] = self._prim_setscale palette.add_block('setscale', + hidden=True, style='basic-style-1arg', label=_('set scale'), prim_name='setscale', @@ -238,6 +247,7 @@ Journal')) primitive_dictionary['savepix'] = self._prim_save_picture palette.add_block('savepix', + hidden=True, style='basic-style-1arg', label=_('save picture'), prim_name='savepix', @@ -249,6 +259,7 @@ Journal')) primitive_dictionary['savesvg'] = self._prim_save_svg palette.add_block('savesvg', + hidden=True, style='basic-style-1arg', label=_('save SVG'), prim_name='savesvg', @@ -259,6 +270,7 @@ in the Sugar Journal')) lambda self, x: primitive_dictionary['savesvg'](x)) palette.add_block('scale', + hidden=True, style='box-style', label=_('scale'), prim_name='scale', @@ -268,6 +280,7 @@ in the Sugar Journal')) self.tw.lc.def_prim('scale', 0, lambda self: self.tw.lc.scale) palette.add_block('mediawait', + hidden=True, style='basic-style-extended-vertical', label=_('media wait'), prim_name='mediawait', @@ -276,6 +289,7 @@ complete')) self.tw.lc.def_prim('mediawait', 0, self.tw.lc.media_wait, True) palette.add_block('mediastop', + hidden=True, style='basic-style-extended-vertical', label=_('media stop'), prim_name='mediastop', @@ -283,6 +297,7 @@ complete')) self.tw.lc.def_prim('mediastop', 0, self.tw.lc.media_stop, True) palette.add_block('mediapause', + hidden=True, style='basic-style-extended-vertical', label=_('media pause'), prim_name='mediapause', @@ -290,6 +305,7 @@ complete')) self.tw.lc.def_prim('mediapause', 0, self.tw.lc.media_pause, True) palette.add_block('mediaplay', + hidden=True, style='basic-style-extended-vertical', label=_('media resume'), prim_name='mediaplay', @@ -298,6 +314,7 @@ complete')) primitive_dictionary['speak'] = self._prim_speak palette.add_block('speak', + hidden=True, style='basic-style-1arg', label=_('speak'), prim_name='speak', @@ -308,6 +325,7 @@ complete')) primitive_dictionary['sinewave'] = self._prim_sinewave palette.add_block('sinewave', + hidden=True, style='basic-style-3arg', # TRANS: pitch, duration, amplitude label=[_('sinewave') + '\n\n', _('pitch'), @@ -322,10 +340,9 @@ amplitude, and duration (in seconds)')) def _sensor_palette(self): - palette = make_palette('sensor', - colors=["#FF6060", "#A06060"], - help_string=_('Palette of sensor blocks'), - position=6) + palette = make_palette('flow', + colors=["#FFC000", "#A08000"], + help_string=_('Palette of flow operators')) primitive_dictionary['mousebutton'] = self._prim_mouse_button palette.add_block('mousebutton', @@ -341,6 +358,7 @@ pressed')) primitive_dictionary['mousebutton2'] = self._prim_mouse_button_bool palette.add_block('mousebutton2', + hidden=True, style='boolean-block-style', label=_('button down'), prim_name='mousebutton2', @@ -352,6 +370,7 @@ pressed')) primitive_dictionary['mousebutton2']()) palette.add_block('mousex', + hidden=True, style='box-style', label=_('mouse x'), prim_name='mousex', @@ -362,6 +381,7 @@ pressed')) self.tw.mouse_x - (self.tw.canvas.width / 2)) palette.add_block('mousey', + hidden=True, style='box-style', label=_('mouse y'), prim_name='mousey', @@ -373,6 +393,7 @@ pressed')) primitive_dictionary['kbinput'] = self._prim_kbinput palette.add_block('kbinput', + hidden=True, style='basic-style-extended-vertical', label=_('query keyboard'), prim_name='kbinput', @@ -382,6 +403,7 @@ stored in keyboard block)')) lambda self: primitive_dictionary['kbinput']()) palette.add_block('keyboard', + hidden=True, style='box-style', label=_('keyboard'), prim_name='keyboard', @@ -418,6 +440,7 @@ block as number')) primitive_dictionary['readpixel'] = self._prim_readpixel palette.add_block('readpixel', + hidden=True, style='basic-style-extended-vertical', label=_('read pixel'), prim_name='readpixel', @@ -429,6 +452,7 @@ to the stack')) primitive_dictionary['see'] = self._prim_see palette.add_block('see', + hidden=True, style='box-style', label=_('turtle sees'), prim_name='see', @@ -452,11 +476,11 @@ program started')) palette = make_palette('extras', colors=["#FF0000", "#A00000"], - help_string=_('Palette of extra options'), - position=8) + help_string=_('Palette of extra options')) primitive_dictionary['push'] = self._prim_push palette.add_block('push', + hidden=True, style='basic-style-1arg', #TRANS: push adds a new item to the program stack label=_('push'), @@ -471,6 +495,7 @@ last-out heap)')) primitive_dictionary['printheap'] = self._prim_printheap palette.add_block('printheap', + hidden=True, style='basic-style-extended-vertical', label=_('show heap'), prim_name='printheap', @@ -484,6 +509,7 @@ end\n') primitive_dictionary['clearheap'] = self._prim_emptyheap palette.add_block('clearheap', + hidden=True, style='basic-style-extended-vertical', label=_('empty heap'), prim_name='clearheap', @@ -497,6 +523,7 @@ end\n') primitive_dictionary['pop'] = self._prim_pop palette.add_block('pop', + hidden=True, style='box-style', #TRANS: pop removes a new item from the program stack label=_('pop'), @@ -523,6 +550,7 @@ make "tmp first :taheap\nmake "taheap butfirst :taheap\noutput :tmp\nend\n') primitive_dictionary['isheapempty2'] = self._prim_is_heap_empty_bool palette.add_block('isheapempty2', + hidden=True, style='boolean-block-style', label=_('empty heap?'), prim_name='isheapempty2', @@ -534,6 +562,7 @@ make "tmp first :taheap\nmake "taheap butfirst :taheap\noutput :tmp\nend\n') primitive_dictionary['print'] = self._prim_print palette.add_block('comment', + hidden=True, style='basic-style-1arg', label=_('comment'), prim_name='comment', @@ -558,6 +587,7 @@ bottom of the screen')) primitive_dictionary['chr'] = self._prim_chr palette.add_block('chr', + hidden=True, style='number-style-1arg', label='chr', prim_name='chr', @@ -567,6 +597,7 @@ bottom of the screen')) primitive_dictionary['int'] = self._prim_int palette.add_block('int', + hidden=True, style='number-style-1arg', label='int', prim_name='int', @@ -576,6 +607,7 @@ bottom of the screen')) primitive_dictionary['myfunction'] = self._prim_myfunction palette.add_block('myfunc1arg', + hidden=True, style='number-style-var-arg', label=[_('Python'), 'f(x)', 'x'], prim_name='myfunction', @@ -617,6 +649,7 @@ advanced multi-variable math equations, e.g., sin(x+y+z)')) primitive_dictionary['userdefined'] = self._prim_myblock palette.add_block('userdefined', + hidden=True, style='basic-style-var-arg', label=' ', prim_name='userdefined', @@ -685,6 +718,7 @@ module found in the Journal')) lambda self: self.tw.set_polar(True)) palette.add_block('addturtle', + hidden=True, style='basic-style-1arg', label=_('turtle'), prim_name='turtle', @@ -697,6 +731,7 @@ module found in the Journal')) primitive_dictionary['activeturtle'] = self._prim_active_turtle palette.add_block('activeturtle', + hidden=True, style='box-style', #TRANS: pop removes a new item from the program stack label=_('active turtle'), @@ -721,6 +756,7 @@ module found in the Journal')) # macro palette.add_block('reskin', + hidden=True, style='basic-style-1arg', label=_('turtle shell'), help_string=_("put a custom 'shell' on the turtle")) @@ -735,6 +771,7 @@ module found in the Journal')) primitive_dictionary['loadblock'] = self._prim_load_block palette.add_block('loadblock', + hidden=True, style='basic-style-var-arg', label=_('load'), prim_name='loadblock', @@ -745,8 +782,8 @@ module found in the Journal')) primitive_dictionary['loadblock'](x)) palette.add_block('loadblock2arg', - style='basic-style-var-arg', hidden=True, + style='basic-style-var-arg', label=_('load'), prim_name='loadblock2', string_or_number=True, @@ -757,8 +794,8 @@ module found in the Journal')) primitive_dictionary['loadblock']([x, y])) palette.add_block('loadblock3arg', - style='basic-style-var-arg', hidden=True, + style='basic-style-var-arg', label=_('load'), string_or_number=True, prim_name='loadblock3', @@ -770,6 +807,7 @@ module found in the Journal')) primitive_dictionary['loadpalette'] = self._prim_load_palette palette.add_block('loadpalette', + hidden=True, style='basic-style-1arg', string_or_number=True, label=_('palette'), @@ -782,14 +820,13 @@ module found in the Journal')) def _portfolio_palette(self): - palette = make_palette('portfolio', - colors=["#0606FF", "#0606A0"], - help_string=_('Palette of presentation \ -templates'), - position=9) + palette = make_palette('extras', + colors=["#FF0000", "#A00000"], + help_string=_('Palette of extra options')) primitive_dictionary['hideblocks'] = self._prim_hideblocks palette.add_block('hideblocks', + hidden=True, style='basic-style-extended-vertical', label=_('hide blocks'), prim_name='hideblocks', @@ -799,6 +836,7 @@ templates'), primitive_dictionary['showblocks'] = self._prim_showblocks palette.add_block('showblocks', + hidden=True, style='basic-style-extended-vertical', label=_('show blocks'), prim_name='showblocks', @@ -807,6 +845,7 @@ templates'), lambda self: primitive_dictionary['showblocks']()) palette.add_block('fullscreen', + hidden=True, style='basic-style-extended-vertical', label=_('Fullscreen').lower(), prim_name='fullscreen', @@ -829,6 +868,7 @@ templates'), # macros palette.add_block('picturelist', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: list of \ @@ -836,6 +876,7 @@ bullets')) MEDIA_SHAPES.append('list') palette.add_block('picture1x1a', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: select \ @@ -843,6 +884,7 @@ Journal object (no description)')) MEDIA_SHAPES.append('1x1a') palette.add_block('picture1x1', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: select \ @@ -850,6 +892,7 @@ Journal object (with description)')) MEDIA_SHAPES.append('1x1') palette.add_block('picture2x2', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: select four \ @@ -857,6 +900,7 @@ Journal objects')) MEDIA_SHAPES.append('2x2') palette.add_block('picture2x1', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: select two \ @@ -864,6 +908,7 @@ Journal objects')) MEDIA_SHAPES.append('2x1') palette.add_block('picture1x2', + hidden=True, style='basic-style-extended', label=' ', help_string=_('presentation template: select two \ @@ -872,6 +917,7 @@ Journal objects')) # Display-dependent constants palette.add_block('leftpos', + hidden=True, style='box-style', label=_('left'), prim_name='lpos', @@ -880,6 +926,7 @@ Journal objects')) self.tw.lc.def_prim('lpos', 0, lambda self: CONSTANTS['leftpos']) palette.add_block('bottompos', + hidden=True, style='box-style', label=_('bottom'), prim_name='bpos', @@ -888,6 +935,7 @@ Journal objects')) self.tw.lc.def_prim('bpos', 0, lambda self: CONSTANTS['bottompos']) palette.add_block('width', + hidden=True, style='box-style', label=_('width'), prim_name='hres', @@ -896,6 +944,7 @@ Journal objects')) self.tw.lc.def_prim('hres', 0, lambda self: CONSTANTS['width']) palette.add_block('rightpos', + hidden=True, style='box-style', label=_('right'), prim_name='rpos', @@ -904,6 +953,7 @@ Journal objects')) self.tw.lc.def_prim('rpos', 0, lambda self: CONSTANTS['rightpos']) palette.add_block('toppos', + hidden=True, style='box-style', label=_('top'), prim_name='tpos', @@ -912,6 +962,7 @@ Journal objects')) self.tw.lc.def_prim('tpos', 0, lambda self: CONSTANTS['toppos']) palette.add_block('height', + hidden=True, style='box-style', label=_('height'), prim_name='vres', diff --git a/turtleblocks.py b/turtleblocks.py index 9de66b4..deab429 100755 --- a/turtleblocks.py +++ b/turtleblocks.py @@ -424,6 +424,15 @@ return %s(self)" % (p, P, P) turtle_menu = MenuBuilder.make_sub_menu(menu, _('Turtle')) menu = gtk.Menu() + self._level = 0 + self._levels = self._get_levels() + self._custom_filepath = None + for i in range(40): + MenuBuilder.make_menu_item(menu, _('Challenge') + ' ' + str(i + 1), + self._do_level_cb, i) + turtle_menu = MenuBuilder.make_sub_menu(menu, _('Challenges')) + + menu = gtk.Menu() MenuBuilder.make_menu_item(menu, _('About...'), self._do_about_cb) help_menu = MenuBuilder.make_sub_menu(menu, _('Help')) @@ -648,6 +657,68 @@ Would you like to save before quitting?')) self.win.get_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) self.tw.deleting_blocks = True + + def restore_challenge(self): + ''' Restore the current challange after a clear screen ''' + if self._custom_filepath is None: + self._load_level() + else: + self._load_level(custom=True) + + def _load_level(self, custom=False): + self.tw.canvas.clearscreen() + if custom: + self.tw.canvas.setxy(0, 0, pendown=False) + self.tw.lc.insert_image(center=True, + filepath=self._custom_filepath, + resize=True, offset=False) + else: + self.tw.canvas.setxy(int(-gtk.gdk.screen_width() / 2), 0, + pendown=False) + self.tw.lc.insert_image(center=False, resize=False, + filepath=os.path.join( + self._get_execution_dir(), 'images', + 'amazonas-tortuga.png')) + # Slight offset to account for stroke width + if self._level + 1 in self.offsets: + xoffset = self.offsets[self._level + 1][0] + yoffset = self.offsets[self._level + 1][1] + else: + xoffset = 0 + yoffset = 0 + self.tw.canvas.setxy(-2.5 + xoffset, -2.5 + yoffset, pendown=False) + self.tw.lc.insert_image(center=False, + filepath=os.path.join( + self._get_execution_dir(), 'challenges', + self._levels[self._level] + '.svg'), resize=False, + offset=True) + self.tw.canvas.setxy(0, 0, pendown=False) + + def _do_level_cb(self, widget, level): + ''' Callback to resize blocks. ''' + self._level = level + self._load_level() + + def _get_levels(self): + ''' Look for level files in lessons directory. ''' + level_files = [] + + for i in range(40): + level_files.append('amazonas-%d' % (i+1)) + + self.offsets = {} + offset_fd = open(os.path.join(self._get_execution_dir(), 'challenges', + 'offsets')) + for line in offset_fd: + try: + idx, offsets = line.strip('\n').split(':') + xoffset, yoffset = offsets.split(',') + self.offsets[int(idx)] = (int(xoffset), int(yoffset)) + except ValueError: + pass + offset_fd.close() + return level_files + def _do_copy_cb(self, button): ''' Callback for copy button. ''' self.tw.saving_blocks = False |