#N canvas 1 22 450 300 10;
#N canvas 0 22 450 300 \$0data 0;
#X restore 313 163 pd \$0data;
#N canvas 535 125 450 300 createdata 0;
#X obj 212 101 \$0;
#X msg 212 125 traverse pd-\$1data \, bang;
#X obj 212 148 pointer;
#X obj 23 181 append \$0mytemplate x y velocity;
#X obj 23 23 loadbang;
#X obj 23 44 t b b;
#X msg 23 116 50 60 70;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 3;
#X connect 4 0 5 0;
#X connect 5 0 6 0;
#X connect 5 1 0 0;
#X connect 6 0 3 0;
#X restore 312 199 pd createdata;
#N canvas 479 22 359 135 \$0mytemplate 0;
#X obj 17 18 struct \$0mytemplate float x float y float velocity;
#X obj 17 48 drawpolygon 900 1 0 0 0 10 10 10 10 0 0 0;
#X restore 312 136 pd \$0mytemplate;
#X obj 19 129 ds-dump pd-\$0data;
#X obj 19 91 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 19 163 ds-select \$0mytemplate velocity 52;
#X obj 19 188 get \$0mytemplate x y;
#X floatatom 19 218 5 0 0 0 - - -;
#X floatatom 136 218 5 0 0 0 - - -;
#X text 7 5 [ds-select] outputs pointers to elements whose attribute
value matches its arguments. Non-matching pointers are sent to the
right outlet. Call like [ds-select <template> <attribute> *<value>]
*optional. The value can also be set by the right inlet.;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
