<snapdata remixID="13181585"><project name="ant v1.1" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAilJREFUeF7t0kEJACAABEGtYR4LmljBEvuZK3CwzDxr32EKRAUmgFF5t78AgCCkBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7xxABtICAKb5nQPIQFoAwDS/cwAZSAsAmOZ3DiADaQEA0/zOAWQgLQBgmt85gAykBQBM8zsHkIG0AIBpfucAMpAWADDN7/wBLjDoCTFWdJ0AAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="ant v1.1"><notes></notes><palette><category name="IDE tools" color="230,230,34,1"/><category name="Local blocks" color="0,116,143,1"/><category name="Design helpers" color="74,108,212,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="$add-1-0-0-0 $move-1-128-0-0 $to-1-128-0-0 $top-1-128-0-0 $menu-1-0-0-0 $in-1-0-0-0 $snap-1-0-0-0 $(shift+right-1-0-0-0 $click-1-0-0-0 $on-1-0-0-0 $the-1-0-0-0 $block)-1-0-0-0" type="command" category="IDE tools"><comment x="0" y="0" w="174.2857142857143" collapsed="false">Adding a menu item when you shift+right-click on a custum block to change the displayed order in the palette of this block&#xD;&#xD;v1.1 - move to the top, bottom, move up, move down !&#xD;&#xD;Thk to Dardoro</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><custom-block s="is JS enable?"></custom-block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>BlockMorph.prototype._userMenu ??= BlockMorph.prototype.userMenu;&#xD;&#xD;function shiftArrItem( arr, item, shift){&#xD;  let from = arr.indexOf( item);&#xD;  if( from &lt; 0) return;&#xD;  let to = from + shift;&#xD;  to = to &lt; 0 ? 0 : to;&#xD;  arr.splice( to, 0, arr.splice( from, 1)[0]);&#xD;}&#xD;&#xD;function moveBlock( this_block, shift){&#xD; let rcvr = this_block.scriptTarget()&#xD;    ,ide = this_block.parentThatIsA( IDE_Morph)&#xD;    ,def = this_block.isGlobal ? this_block.definition : rcvr.getMethod( self.blockSpec)&#xD;    ,blocks = this_block.isGlobal ? ide.stage.globalBlocks : rcvr.customBlocks&#xD; ;&#xD; &#xD; blocks.sort( (a,b) =&gt; a.category.localeCompare(b.category));//reorder acros categories    &#xD; shiftArrItem( blocks, def, shift);&#xD; // * force refresh *&#xD; ide.recordUnsavedChanges();&#xD; ide.flushPaletteCache();&#xD; ide.refreshPalette();&#xD;}&#xD;&#xD;BlockMorph.prototype.userMenu = function(){&#xD;let menu = this._userMenu()&#xD;   ,shiftClicked = world.currentKey === 16;&#xD;&#xD; if( !(this.isCustomBlock &amp;&amp; shiftClicked)) &#xD;   return menu;&#xD;&#xD; menu.addItem(&#xD;     "move to top ^",&#xD;     ()=&gt;moveBlock( this, Number.MIN_SAFE_INTEGER)&#xD; );&#xD; menu.addItem(&#xD;     "move up",&#xD;     ()=&gt;moveBlock( this, -1)&#xD; );&#xD; menu.addItem(&#xD;     "move down",&#xD;     ()=&gt;moveBlock( this, 1)&#xD; );&#xD; menu.addItem(&#xD;     "move to bottom _",&#xD;     ()=&gt;moveBlock( this, Number.MAX_SAFE_INTEGER)&#xD; );&#xD;&#xD;return menu;&#xD;}&#xD;</l></block><list></list></block></script><script><custom-block s="error %txt"><l>You should enable JS...</l></custom-block></script></block></script><scripts><script x="832" y="139.63333333333327"><block s="doRun"><block s="reportJSFunction"><list></list><l>if( CustomCommandBlockMorph.prototype._userMenu){&#xD;  CustomCommandBlockMorph.prototype.userMenu = CustomCommandBlockMorph.prototype._userMenu;&#xD;  delete CustomCommandBlockMorph.prototype._userMenu&#xD;}</l></block><list></list><comment w="90" collapsed="false">v1.0 - just move to the top</comment></block><block s="doRun"><block s="reportJSFunction"><list></list><l>if( !CustomCommandBlockMorph.prototype._userMenu){&#xD;  CustomCommandBlockMorph.prototype._userMenu = CustomCommandBlockMorph.prototype.userMenu;&#xD;}&#xD;&#xD;&#xD;&#xD;CustomCommandBlockMorph.prototype.userMenu = function(){&#xD;var&#xD; shiftClicked = world.currentKey === 16 &#xD; ,menu = this._userMenu();&#xD;&#xD; menu.addItem(&#xD;     "move block to top",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;    &#xD;       if (this.isGlobal) {&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;&#xD;          ide.stage.globalBlocks.unshift(def);&#xD;       } else {&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.unshift(def);&#xD;&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD; menu.addItem(&#xD;     "move block up",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;       if (this.isGlobal) {&#xD;          let newPos = ide.stage.globalBlocks.indexOf(def);&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;          ide.stage.globalBlocks.splice(newPos-1,0,def);&#xD;       } else {&#xD;          let newPos = rcvr.customBlocks.indexOf(def);&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.splice(newPos-1,0,def);&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD; menu.addItem(&#xD;     "move block down",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;       if (this.isGlobal) {&#xD;          let newPos = ide.stage.globalBlocks.indexOf(def);&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;          ide.stage.globalBlocks.splice(newPos+1,0,def);&#xD;       } else {&#xD;          let newPos = rcvr.customBlocks.indexOf(def);&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.splice(newPos+1,0,def);&#xD;          rcvr.customBlocks.shift(def);&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD;return menu;&#xD;}&#xD;</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>if( CustomReporterBlockMorph.prototype._userMenu){&#xD;  CustomReporterBlockMorph.prototype.userMenu = CustomReporterBlockMorph.prototype._userMenu;&#xD;  delete CustomReporterBlockMorph.prototype._userMenu&#xD;}</l></block><list></list></block><block s="doRun"><block s="reportJSFunction"><list></list><l>if( !CustomReporterBlockMorph.prototype._userMenu){&#xD;  CustomReporterBlockMorph.prototype._userMenu = CustomReporterBlockMorph.prototype.userMenu;&#xD;}&#xD;&#xD;&#xD;&#xD;CustomReporterBlockMorph.prototype.userMenu = function(){&#xD;var&#xD; shiftClicked = world.currentKey === 16 &#xD; ,menu = this._userMenu();&#xD;&#xD; menu.addItem(&#xD;     "move block to top",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;    &#xD;       if (this.isGlobal) {&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;          ide.stage.globalBlocks.unshift(def);&#xD;       } else {&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.unshift(def);&#xD;&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD; menu.addItem(&#xD;     "move block up",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;       if (this.isGlobal) {&#xD;          let newPos = ide.stage.globalBlocks.indexOf(def);&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;          ide.stage.globalBlocks.splice(newPos-1,0,def);&#xD;       } else {&#xD;          let newPos = rcvr.customBlocks.indexOf(def);&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.splice(newPos-1,0,def);&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD; menu.addItem(&#xD;     "move block down",&#xD;     function (){&#xD;       var rcvr = this.scriptTarget(),&#xD;           ide = this.parentThatIsA(IDE_Morph),&#xD;           def = this.isGlobal ? this.definition : rcvr.getMethod(this.blockSpec),&#xD;           spec = def.spec;&#xD;       if (this.isGlobal) {&#xD;          let newPos = ide.stage.globalBlocks.indexOf(def);&#xD;          ide.stage.globalBlocks = ide.stage.globalBlocks.filter(item =&gt; item !== def);&#xD;          ide.stage.globalBlocks.splice(newPos+1,0,def);&#xD;       } else {&#xD;          let newPos = rcvr.customBlocks.indexOf(def);&#xD;          rcvr.customBlocks = rcvr.customBlocks.filter(item =&gt; item !== def);&#xD;          rcvr.customBlocks.splice(newPos+1,0,def);&#xD;          rcvr.customBlocks.shift(def);&#xD;       }&#xD;&#xD;       ide.flushPaletteCache();&#xD;       ide.refreshPalette();&#xD;       ide.recordUnsavedChanges();&#xD; &#xD;       }&#xD;    );&#xD;&#xD;return menu;&#xD;}&#xD;</l></block><list></list></block></script></scripts></block-definition><block-definition s="$find-1-0-0-0 %&apos;search block&apos; $in-1-0-0-0 $project-1-0-0-0" type="reporter" category="IDE tools"><comment x="0" y="0" w="270.75162760416674" collapsed="false">Finds each instance of a block or variable in a project and shows the script(s) it is in (minus any hat block)&#xD;&#xD;If you enter plain text, it will return scripts that contain that text.&#xD;&#xD;Note:  You need to right-click and ringify the block/variable being searched for&#xD;&#xD;Block by Cymplecy</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doIf"><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportIsA"><block var="search block"/><l><option>text</option></l></block><block s="reportIsA"><block var="search block"/><l><option>number</option></l></block></list></block></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="search block"/><l><option>blocks</option></l></block></block><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reifyReporter"><autolambda><block var="result"/></autolambda><list></list></block><l><option>blocks</option></l></block></block></list></block><script><block s="doSetVar"><l>search block</l><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="search block"/><l><option>blocks</option></l></block></block></block></script><script><block s="doSetVar"><l>search block</l><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="search block"/><l><option>blocks</option></l></block></block></block></script></block></script><list></list></block><block s="doSetVar"><l>result</l><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="key"/></block><l></l></list></block></autolambda><list></list></block><block s="reportCDR"><block var="key"/></block></block></autolambda><list><l>key</l></list></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block s="reportListAttribute"><l><option>length</option></l><block var="result"/></block><l>1</l></list></block></autolambda><list><l>result</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><block s="reportAskFor"><block var="sprite ref"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>name</option></l></block></autolambda><list></list></block><list></list></block></list></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block s="reportListAttribute"><l><option>flatten</option></l><block s="reportTextSplit"><block var="value"/><l><option>blocks</option></l></block></block><block var="search block"/></block></autolambda><list><l>value</l></list></block><block s="reportAskFor"><block var="sprite ref"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>scripts</option></l></block></autolambda><list></list></block><list></list></block></block></list></block></autolambda><list><l>sprite ref</l></list></block><block s="reportCONS"><block s="reportGet"><l><option>self</option></l></block><block s="reportCONS"><block s="reportGet"><l><option>stage</option></l></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportAskFor"><block var="all sprites"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>parent</option></l></block></autolambda><list></list></block><list></list></block><l></l></list></block></autolambda><list><l>all sprites</l></list></block><block s="reportGet"><l><option>other sprites</option></l></block></block></block></block></block></block></block></block></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="add color picker functionality" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">by dardoro</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>//Based on Snap! code base with minor modification&#xD;&#xD;if( !InputSlotDialogMorph.prototype._createSlotTypeButtons){&#xD;InputSlotDialogMorph.prototype._createSlotTypeButtons = InputSlotDialogMorph.prototype.createSlotTypeButtons  &#xD;}  &#xD;&#xD;InputSlotDialogMorph.prototype.createSlotTypeButtons = function () {&#xD;  this.addSlotTypeButton(&apos;Color&apos;, &apos;%clr&apos;);&#xD;  this._createSlotTypeButtons();  &#xD;}&#xD;&#xD;InputSlotDialogMorph.prototype.fixSlotsLayout = function () {&#xD;    var slots = this.slots,&#xD;        scale = SyntaxElementMorph.prototype.scale,&#xD;        xPadding = 10 * scale,&#xD;        ypadding = 14 * scale,&#xD;        bh = (fontHeight(10) / 1.2 + 15) * scale, // slot type button height&#xD;        ah = (fontHeight(10) / 1.2 + 10) * scale, // arity button height&#xD;        size = 13, // number slot type radio buttons&#xD;        cols = [&#xD;            slots.left() + xPadding,&#xD;            slots.left() + slots.width() / 3,&#xD;            slots.left() + slots.width() * 2 / 3&#xD;        ],&#xD;        rows = [&#xD;            slots.top() + ypadding,&#xD;            slots.top() + ypadding + bh,&#xD;            slots.top() + ypadding + bh * 2,&#xD;            slots.top() + ypadding + bh * 3,&#xD;            slots.top() + ypadding + bh * 4,&#xD;            slots.top() + ypadding + bh * 5,&#xD;&#xD;            slots.top() + ypadding + bh * 5 + ah,&#xD;            slots.top() + ypadding + bh * 5 + ah * 2&#xD;        ],&#xD;        idx,&#xD;        row = -1,&#xD;        col;&#xD;&#xD;    // slot types:&#xD;&#xD;    for (idx = 0; idx &lt; size; idx += 1) {&#xD;        col = idx % 3;&#xD;        if (idx % 3 === 0) {row += 1; }&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row]&#xD;        ));&#xD;    }&#xD;&#xD;    // arity:&#xD;    col = 0;&#xD;    row = 5;&#xD;    for (idx = size; idx &lt; size + 3; idx += 1) {&#xD;        slots.children[idx].setPosition(new Point(&#xD;            cols[col],&#xD;            rows[row + idx - size]&#xD;        ));&#xD;    }&#xD;&#xD;    // default input&#xD;    this.slots.defaultInputLabel.setPosition(&#xD;        this.slots.radioButtonSingle.label.topRight().add(new Point(5, 0))&#xD;    );&#xD;    this.slots.defaultInputField.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultInputField.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;    this.slots.defaultSwitch.setCenter(&#xD;        this.slots.defaultInputLabel.center().add(new Point(&#xD;            this.slots.defaultSwitch.width() / 2&#xD;                + this.slots.defaultInputLabel.width() / 2 + 5,&#xD;            0&#xD;        ))&#xD;    );&#xD;&#xD;    // loop arrow&#xD;    this.slots.loopArrow.setPosition(this.slots.defaultInputLabel.position());&#xD;    this.slots.settingsButton.setPosition(&#xD;        this.slots.bottomRight().subtract(&#xD;            this.slots.settingsButton.extent().add(&#xD;                this.padding + this.slots.border&#xD;            )&#xD;        )&#xD;    );&#xD;&#xD;    this.slots.changed();&#xD;};&#xD;</l></block><list></list></block></script></block-definition><block-definition s="-- = %&apos;n&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%anyUE" readonly="true"></input></inputs><script><block s="doRun"><block s="reifyScript"><script><block s="doChangeVar"><l></l><l>-1</l></block></script><list></list></block><list><block var="n"/></list></block><block s="doReport"><block s="evaluate"><block var="n"/><list></list></block></block></script></block-definition><block-definition s="glide to %&apos;obj&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos; stop condition %&apos;stopCondition&apos;" type="command" category="motion"><header></header><code></code><translations>de:gleite _ in _ Sek. beschleunigt: _&#xD;ca:llisca _ en _ segons de forma _&#xD;fr:glisser _ en _ sec. accélérer _&#xD;pt:desliza _ em _ s de forma _&#xD;</translations><inputs><input type="%s">Sprite<options>§_objectsMenu</options></input><input type="%n">1</input><input type="%s" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input><input type="%predRing"></input></inputs><script><block s="doSetVar"><l>stopCondition</l><block s="reportIfElse"><block s="reportIsA"><block var="stopCondition"/><l><option>predicate</option></l></block><block var="stopCondition"/><block s="reportBoolean"><l><bool>false</bool></l></block></block></block><block s="doDeclareVariables"><list><l>destX</l><l>destY</l><l>end time</l><l>deltaX</l><l>deltaY</l><l>func</l></list></block><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportIsA"><block var="obj"/><l><option>list</option></l></block><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>dimensions</option></l><block var="obj"/></block><block s="reportNewList"><list><l>2</l></list></block></list></block></list></block><script><block s="doSetVar"><l>destX</l><block s="reportListItem"><l>1</l><block var="obj"/></block></block><block s="doSetVar"><l>destY</l><block s="reportListItem"><l>2</l><block var="obj"/></block></block></script><list><block s="reportIsA"><block s="reportObject"><block var="obj"/></block><l><option>sprite</option></l></block><script><block s="doSetVar"><l>destX</l><block s="reportAttributeOf"><l><option>x position</option></l><block s="reportObject"><block var="obj"/></block></block></block><block s="doSetVar"><l>destY</l><block s="reportAttributeOf"><l><option>y position</option></l><block s="reportObject"><block var="obj"/></block></block></block></script></list></block><block s="doFaceTowards"><block s="reportNewList"><list><block var="destX"/><block var="destY"/></list></block></block><block s="doSetVar"><l>end time</l><block s="reportVariadicSum"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block s="reportVariadicProduct"><list><block var="duration"/><l>1000</l></list></block></list></block></block><block s="doSetVar"><l>deltaX</l><block s="reportDifference"><block var="destX"/><block s="xPosition"></block></block></block><block s="doSetVar"><l>deltaY</l><block s="reportDifference"><block var="destY"/><block s="yPosition"></block></block></block><block s="doIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><script><block s="doSetVar"><l>func</l><block var="easing"/></block></script><script><block s="doSetVar"><l>func</l><custom-block s="easing %txt"><block var="easing"/></custom-block></block></script></block><custom-block s="catch %upvar %cs"><l>stop</l><script><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="end time"/></list></block><script><block s="setXPosition"><block s="reportDifference"><block var="destX"/><block s="reportVariadicProduct"><list><block var="deltaX"/><block s="evaluate"><block var="func"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportVariadicProduct"><list><block var="duration"/><l>1000</l></list></block></block></list></block></list></block></block></block><block s="setYPosition"><block s="reportDifference"><block var="destY"/><block s="reportVariadicProduct"><list><block var="deltaY"/><block s="evaluate"><block var="func"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportVariadicProduct"><list><block var="duration"/><l>1000</l></list></block></block></list></block></list></block></block></block><block s="doIf"><block s="evaluate"><block var="stopCondition"/><list></list></block><script><custom-block s="throw %s"><block var="stop"/></custom-block></script><list></list></block></script></block><block s="gotoXY"><block var="destX"/><block var="destY"/></block></script></custom-block></script><scripts><script x="300.6416015625" y="232.66666666666669"><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list></list></block></script></scripts></block-definition><block-definition s="costume from text %&apos;text&apos; size %&apos;size&apos; (center pivot)" type="reporter" category="looks"><header></header><code></code><translations>de:Kostüm aus Text _ Größe _&#xD;pt:um traje com o texto _ de tamanho _&#xD;</translations><inputs><input type="%s">A</input><input type="%n">72</input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>trails</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="getCostumeIdx"></block></block><block s="up"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="setHeading"><l>90</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block s="xPosition"></block></list></block><l>2</l></block><l>0</l></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doRun"><block s="reportJSFunction"><list><l>costume</l><l>name</l></list><l>costume.name = name;</l></block><list><block var="costume"/><block var="text"/></list></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doReport"><block var="costume"/></block></script><scripts><script x="218.57142857142858" y="250.54761904761887"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block></script></scripts></block-definition><block-definition s="add %&apos;cst&apos; to my costumes" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%obj"></input></inputs><script><block s="doAddToList"><block var="cst"/><block s="reportGet"><l><option>costumes</option></l></block></block></script></block-definition><block-definition s="Delete all clones from this sprite" type="command" category="control"><comment x="0" y="0" w="174.2857142857143" collapsed="false">Delete all clones from the current sprite.&#xD;&#xD;Block by Loucheman</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>clone</l><block s="reportGet"><l><option>clones</option></l></block><script><block s="doTellTo"><block var="clone"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="Show all sprites" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doTellTo"><l>Stage</l><block s="reifyScript"><script><block s="doForEach"><l>sprites</l><block s="reportGet"><l><option>other sprites</option></l></block><script><block s="doTellTo"><block var="sprites"/><block s="reifyScript"><script><block s="show"></block></script><list></list></block><list></list></block></script></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="Hide all sprites" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doTellTo"><l>Stage</l><block s="reifyScript"><script><block s="doForEach"><l>sprites</l><block s="reportGet"><l><option>other sprites</option></l></block><script><block s="doTellTo"><block var="sprites"/><block s="reifyScript"><script><block s="hide"></block></script><list></list></block><list></list></block></script></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="is JS enable?" type="predicate" category="operators"><comment x="0" y="0" w="90" collapsed="false">return is javascript is enable&#xD;&#xD;Thk to Joecooldo </comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>JS?</l></list></block><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>JS?</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return true;</l></block><list></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>JS?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doReport"><block var="JS?"/></block></script></block-definition><block-definition s="item at col: %&apos;col&apos; line: %&apos;row&apos; of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><block var="col"/><block s="reportListItem"><block var="row"/><block var="list"/></block></block></block></script></block-definition><block-definition s="MouseCoordinate" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportMouseX"></block><block s="reportMouseY"></block></list></block></block></script></block-definition><block-definition s="On Stage (pivot)?" type="predicate" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Return true if the pivot (rotation center) is on the stage</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block s="reportGet"><l><option>self</option></l></block><l><option>sprite</option></l></block><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block s="xPosition"></block><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="xPosition"></block><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="yPosition"></block><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="yPosition"></block><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></list></block></list></block></list></block></block></script><script></script></block></script><scripts><script x="256" y="227.2"><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block></script></scripts></block-definition><block-definition s="On Stage (sprite)?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportIsA"><block s="reportGet"><l><option>self</option></l></block><l><option>sprite</option></l></block><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></list></block></list></block></list></block></block></script><list></list></block></script></block-definition><block-definition s="On Stage horizontally (pivot)?" type="predicate" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Return true if the pivot (rotation center) is on the stage (watch only x axis)</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block s="reportGet"><l><option>self</option></l></block><l><option>sprite</option></l></block><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block s="xPosition"></block><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="xPosition"></block><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></list></block></block></script><script></script></block></script></block-definition><block-definition s="On Stage vertically (pivot)?" type="predicate" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Return true if the pivot (rotation center) is on the stage (watch only y axis)</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block s="reportGet"><l><option>self</option></l></block><l><option>sprite</option></l></block><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="yPosition"></block><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="yPosition"></block><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></list></block></block></script><script></script></block></script></block-definition><block-definition s="radians %&apos;degrees&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:_ radianos em graus&#xD;</translations><inputs><input type="%n">90</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="degrees"/><custom-block s="PI"></custom-block></list></block><l>180</l></block></block></script></block-definition><block-definition s="pick random odd number %&apos;min&apos; to %&apos;max&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="min"/><block var="max"/></list></block><script><block s="doDeclareVariables"><list><l>SaveValue</l></list></block><block s="doSetVar"><l>SaveValue</l><block var="min"/></block><block s="doSetVar"><l>min</l><block var="max"/></block><block s="doSetVar"><l>max</l><block var="SaveValue"/></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="min"/><l>2</l></block><l>0</l></list></block><script><block s="doChangeVar"><l>min</l><l>2</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicNotEquals"><list><block s="reportModulus"><block var="max"/><l>2</l></block><l>0</l></list></block><script><block s="doChangeVar"><l>max</l><l>1</l></block></script><list></list></block><block s="doReport"><block s="reportDifference"><custom-block s="pick random even number %n to %n"><block var="min"/><block var="max"/></custom-block><l>1</l></block></block></script></block-definition><block-definition s="pick random even number %&apos;min&apos; to %&apos;max&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="min"/><block var="max"/></list></block><script><block s="doDeclareVariables"><list><l>SaveValue</l></list></block><block s="doSetVar"><l>SaveValue</l><block var="min"/></block><block s="doSetVar"><l>min</l><block var="max"/></block><block s="doSetVar"><l>max</l><block var="SaveValue"/></block></script><list></list></block><block s="doReport"><block s="reportVariadicProduct"><list><block s="reportRandom"><block s="reportRound"><block s="reportQuotient"><block var="min"/><l>2</l></block></block><custom-block s="%n div %n"><block var="max"/><l>2</l></custom-block></block><l>2</l></list></block></block></script><scripts><comment x="362.8571428571429" y="47.28571428571428" w="90" collapsed="false">add comment here...</comment></scripts></block-definition><block-definition s="pick random %&apos;min&apos; to %&apos;max&apos; with %&apos;NbDecimale&apos; decimals" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">2.5</input><input type="%n">2</input></inputs><script><block s="doReport"><custom-block s="Round %n to %n decimals"><block s="reportQuotient"><block s="reportRandom"><block s="reportVariadicProduct"><list><block var="min"/><block s="reportMonadic"><l><option>10^</option></l><block s="reportMonadic"><l><option>floor</option></l><block var="NbDecimale"/></block></block></list></block><block s="reportVariadicProduct"><list><block var="max"/><block s="reportMonadic"><l><option>10^</option></l><block s="reportMonadic"><l><option>floor</option></l><block var="NbDecimale"/></block></block></list></block></block><block s="reportMonadic"><l><option>10^</option></l><block s="reportMonadic"><l><option>floor</option></l><block var="NbDecimale"/></block></block></block><block var="NbDecimale"/></custom-block></block></script></block-definition><block-definition s="Round %&apos;number&apos; to %&apos;NbDecimals&apos; decimals" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">10.12345</input><input type="%n">2</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportVariadicProduct"><list><block var="number"/><block s="reportMonadic"><l><option>10^</option></l><block var="NbDecimals"/></block></list></block></block><block s="reportMonadic"><l><option>10^</option></l><block var="NbDecimals"/></block></block></block></script></block-definition><block-definition s="prev costume" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block s="getCostumeIdx"></block><l>1</l></list></block><block s="reportDifference"><block s="getCostumeIdx"></block><l>1</l></block><block s="reportListAttribute"><l><option>length</option></l><block s="reportGet"><l><option>costumes</option></l></block></block></block></block></script></block-definition><block-definition s="simple message %&apos;message&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%mlt">This is a message !</input></inputs><script><custom-block s="save all sprite properties"></custom-block><block s="show"></block><block s="setEffect"><l><option>ghost</option></l><l>100</l></block><block s="gotoXY"><l>-60</l><l>-30</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="bubble"><block s="reportJoinWords"><list><block var="message"/><block s="reportUnicodeAsLetter"><l>10</l></block><block s="reportUnicodeAsLetter"><l>10</l></block><l>(Clic to continue)</l></list></block></block><block s="doWaitUntil"><block s="reportVariadicAnd"><list><block s="reportMouseDown"></block><custom-block s="On Stage position: %l"><block s="reportNewList"><list><block s="reportMouseX"></block><block s="reportMouseY"></block></list></block></custom-block></list></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportMouseDown"></block></block></block><custom-block s="restore all saved sprite properties keep vars? %b"><l><bool>false</bool></l></custom-block><block s="bubble"><l></l></block></script></block-definition><block-definition s="On Stage position: %&apos;position&apos;" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>1</l><block var="position"/></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="stage size"></custom-block></block><l>2</l></block></block></list></block><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>1</l><block var="position"/></block><block s="reportQuotient"><block s="reportListItem"><l>1</l><custom-block s="stage size"></custom-block></block><l>2</l></block></list></block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><block var="position"/></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="stage size"></custom-block></block><l>2</l></block></block></list></block><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><block var="position"/></block><block s="reportQuotient"><block s="reportListItem"><l>2</l><custom-block s="stage size"></custom-block></block><l>2</l></block></list></block></list></block></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="stage size" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></block></script></block-definition><block-definition s="restore all saved sprite properties keep vars? %&apos;KeepVars&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%b">false</input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveShown</l></custom-block><script><block s="doIfElse"><block var="@SaveShown"/><script><block s="show"></block></script><script><block s="hide"></block></script></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveX</l></custom-block><script><block s="setXPosition"><block var="@SaveX"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveY</l></custom-block><script><block s="setYPosition"><block var="@SaveY"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveDir</l></custom-block><script><block s="setHeading"><block var="@SaveDir"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveCostume</l></custom-block><script><block s="doSwitchToCostume"><block var="@SaveCostume"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveGhostEffect</l></custom-block><script><block s="setEffect"><l><option>ghost</option></l><block var="@SaveGhostEffect"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveColor</l></custom-block><script><block s="setEffect"><l><option>color</option></l><block var="@SaveColor"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveSaturation</l></custom-block><script><block s="setEffect"><l><option>saturation</option></l><block var="@SaveSaturation"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveBrightness</l></custom-block><script><block s="setEffect"><l><option>brightness</option></l><block var="@SaveBrightness"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveFisheye</l></custom-block><script><block s="setEffect"><l><option>fisheye</option></l><block var="@SaveFisheye"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveWhirl</l></custom-block><script><block s="setEffect"><l><option>whirl</option></l><block var="@SaveWhirl"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveNegative</l></custom-block><script><block s="setEffect"><l><option>negative</option></l><block var="@SaveNegative"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SaveMosaic</l></custom-block><script><block s="setEffect"><l><option>mosaic</option></l><block var="@SaveMosaic"/></block></script><list></list></block><block s="doIf"><custom-block s="does var %s exist?"><l>@SavePixelate</l></custom-block><script><block s="setEffect"><l><option>pixelate</option></l><block var="@SavePixelate"/></block></script><list></list></block><block s="fork"><block s="reifyScript"><script><block s="doIf"><block s="reportNot"><block var="KeepVars"/></block><script><custom-block s="delete var %txt"><l>@SaveShown</l></custom-block><custom-block s="delete var %txt"><l>@SaveX</l></custom-block><custom-block s="delete var %txt"><l>@SaveY</l></custom-block><custom-block s="delete var %txt"><l>@SaveDir</l></custom-block><custom-block s="delete var %txt"><l>@SaveCostume</l></custom-block><custom-block s="delete var %txt"><l>@SaveGhostEffect</l></custom-block><custom-block s="delete var %txt"><l>@SaveColor</l></custom-block><custom-block s="delete var %txt"><l>@SaveSaturation</l></custom-block><custom-block s="delete var %txt"><l>@SaveBrightness</l></custom-block><custom-block s="delete var %txt"><l>@SaveFisheye</l></custom-block><custom-block s="delete var %txt"><l>@SaveWhirl</l></custom-block><custom-block s="delete var %txt"><l>@SaveNegative</l></custom-block><custom-block s="delete var %txt"><l>@SaveMosaic</l></custom-block><custom-block s="delete var %txt"><l>@SavePixelate</l></custom-block></script><list></list></block></script><list></list></block><list></list></block></script></block-definition><block-definition s="does var %&apos;_name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doApplyExtension"><l>err_ignore</l><list><block s="reportApplyExtension"><l>var_get(name)</l><list><block var="_name"/></list></block></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="reifyScript"><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="delete var %&apos;var&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt">MySpriteVar</input></inputs><script><block s="doApplyExtension"><l>var_delete(name)</l><list><block var="var"/></list></block></script></block-definition><block-definition s="save all sprite properties" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="create sprite var %txt defaut %s"><l>@SaveShown</l><block s="reportShown"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveX</l><block s="xPosition"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveY</l><block s="yPosition"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveDir</l><block s="direction"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveCostume</l><block s="getCostumeIdx"></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveGhostEffect</l><block s="getEffect"><l><option>ghost</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveColor</l><block s="getEffect"><l><option>color</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveSaturation</l><block s="getEffect"><l><option>saturation</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveBrightness</l><block s="getEffect"><l><option>brightness</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveFisheye</l><block s="getEffect"><l><option>fisheye</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveWhirl</l><block s="getEffect"><l><option>whirl</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveNegative</l><block s="getEffect"><l><option>negative</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SaveMosaic</l><block s="getEffect"><l><option>mosaic</option></l></block></custom-block><custom-block s="create sprite var %txt defaut %s"><l>@SavePixelate</l><block s="getEffect"><l><option>pixelate</option></l></block></custom-block></script></block-definition><block-definition s="create sprite var %&apos;var&apos; defaut %&apos;defaut&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt">MySpriteVar</input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><block var="var"/></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>sprite</l><list><block var="var"/></list></custom-block></script><list></list></block><custom-block s="set var %s to %s"><block var="var"/><block var="defaut"/></custom-block></script></block-definition><block-definition s="create %&apos;_scope&apos; var %&apos;_names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>_item</l><block var="_names"/><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><block var="_scope"/><block var="_item"/></list></block></script></block></script></block></script></block-definition><block-definition s="set var %&apos;_name&apos; to %&apos;_value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.4931640625" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>var_set(name, val)</l><list><block var="_name"/><block var="_value"/></list></block></script></block-definition><block-definition s="remap value %&apos;value&apos; from range %&apos;int1a&apos; , %&apos;int1b&apos; to range %&apos;int2a&apos; , %&apos;int2b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="int1a"/><block var="int1b"/></list></block><script></script><list></list></block><block s="doReport"><block s="reportVariadicSum"><list><block var="int2a"/><block s="reportVariadicProduct"><list><block s="reportDifference"><block var="value"/><block var="int1a"/></block><block s="reportQuotient"><block s="reportDifference"><block var="int2b"/><block var="int2a"/></block><block s="reportDifference"><block var="int1b"/><block var="int1a"/></block></block></list></block></list></block></block></script><scripts><comment x="497.77050781250006" y="22" w="424.0000000000001" collapsed="false">Remap a value from a original range of value to another range of value.&#xD;&#xD;example:&#xD;you have a value in a range of 0 to 5 and you want to transpose this value to another range of values 0 -100.&#xD;&#xD;in this case:&#xD;if value = 0 return 0&#xD;if value = 3 return 60&#xD;if value = 5 return 100&#xD;&#xD;another example:&#xD;you want to do 2.5D (size change with y position)&#xD;you can remap the y position of your sprite to obtain the size of your object&#xD;remap &quot;y position&quot; from range -180 to 180 to range 100 to 10&#xD;&#xD;if y position = -180 return 100 (the size)&#xD;if y position = 100 return 30&#xD;if y position = 180 return 10&#xD;use the result to change the size of your sprite !&#xD;&#xD;Block by Loucheman&#xD;&#xD;See example at: https://snap.berkeley.edu/snap/snap.html#present:Username=loucheman&amp;ProjectName=remap%20value&amp;editMode&amp;noRun</comment></scripts></block-definition><block-definition s="value %&apos;Value&apos; in range %&apos;Range1&apos; to %&apos;Range2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportVariadicLessThanOrEquals"><list><block var="Range1"/><block var="Range2"/></list></block><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block var="Value"/><block var="Range1"/></list></block><block s="reportVariadicLessThanOrEquals"><list><block var="Value"/><block var="Range2"/></list></block></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThanOrEquals"><list><block var="Value"/><block var="Range2"/></list></block><block s="reportVariadicLessThanOrEquals"><list><block var="Value"/><block var="Range1"/></list></block></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script></block></script></block-definition><block-definition s="insert substring %&apos;substring&apos; to string %&apos;string&apos; str at pos %&apos;pos&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">by Loucheman&#xD;&#xD;Insert a substring into a string at a defined position</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%txt"></input><input type="%n"></input></inputs><script><block s="doSetVar"><l>pos</l><block s="reportMonadic"><l><option>floor</option></l><block var="pos"/></block></block><block s="doIfElse"><block s="reportVariadicLessThanOrEquals"><list><block var="pos"/><l>1</l></list></block><script><block s="doReport"><block s="reportJoinWords"><list><block var="substring"/><block var="string"/></list></block></block></script><script><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="pos"/><block s="reportTextAttribute"><l><option>length</option></l><block var="string"/></block></list></block><script><block s="doReport"><block s="reportJoinWords"><list><block var="string"/><block var="substring"/></list></block></block></script><script><block s="doReport"><block s="reportJoinWords"><list><block s="reportLetter"><block s="reportNumbers"><l>1</l><block s="reportDifference"><block var="pos"/><l>1</l></block></block><block var="string"/></block><block var="substring"/><block s="reportLetter"><block s="reportNumbers"><block var="pos"/><block s="reportTextAttribute"><l><option>length</option></l><block var="string"/></block></block><block var="string"/></block></list></block></block></script></block></script></block></script><scripts><script x="175.71428571428572" y="269.47619047619116"><block s="reportJoinWords"><list><l>hello </l><l>world</l></list></block></script><script x="303.2857142857142" y="274.45238095238085"><block s="reportVariadicSum"><list><l></l><l>1</l></list></block></script></scripts></block-definition><block-definition s="// %&apos;commentaire&apos; %&apos;code&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mlt"></input><input type="%cs"></input></inputs><script><block s="doRun"><block var="code"/><list></list></block></script></block-definition><block-definition s="key pressed" type="reporter" category="sensing"><variables><list struct="atomic" id="1971">LastKeys</list></variables><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="LastKeys"/><l>0</l></list></block><script><block s="doSetVar"><l>LastKeys</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doWarp"><script><custom-block s="let %upvar be %s"><l>currentKeysPressed</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportKeyPressed"><l></l></block></autolambda><list></list></block><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><l>control</l><l>shift</l><l>alt</l><l>()lock</l><l>func</l><l>space</l></list></block><block s="reportNewList"><list><l>up arrow</l><l>down arrow</l><l>left arrow</l><l>right arrow</l></list></block><block s="reportUnicodeAsLetter"><block s="reportNumbers"><l>33</l><l>126</l></block></block></list></block></block></custom-block></script></block><block s="doSetVar"><l>LastKeys</l><custom-block s="pipe %s $arrowRight %mult%repRing"><block var="LastKeys"/><list><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block var="currentKeysPressed"/><block var="value"/></block></autolambda><list><l>value</l><l>index</l><l>list</l></list></block><block var="LastKeys"/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><l/><block var="currentKeysPressed"/></list></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$flash remove duplicates from %l"><l/></custom-block></autolambda><list></list></block></list></custom-block></block><block s="doReport"><block var="LastKeys"/></block></script></block-definition><block-definition s="pipe %&apos;value&apos; $arrowRight %&apos;pipe&apos;" type="reporter" category="control"><header></header><code></code><translations>pt:a aplicação a _ de _&#xD;</translations><inputs><input type="%s"></input><input type="%mult%repRing"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="pipe"/></block><script><block s="doReport"><block var="value"/></block></script><list></list></block><block s="doReport"><custom-block s="pipe %s $arrowRight %mult%repRing"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="pipe"/></block><list><block var="value"/></list></block><block s="reportCDR"><block var="pipe"/></block></custom-block></block></script></block-definition><block-definition s="pick random (real) %&apos;n1&apos; to %&apos;n2&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="n1"/><l>1</l></block><l>.5</l></list></block><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="n2"/><l>1</l></block><l>.5</l></list></block></list></block><script><block s="doSetVar"><l>a</l><l>.6</l></block></script><script><block s="doSetVar"><l>a</l><l>.5</l></block></script><comment w="153.57142857142858" collapsed="false">By adding 0.5 or 0.6, the &quot;pick random&quot; is switching to the real world...&#xD;If (n1+.5) and (n2+.5  (2 integers)), adding .6 instead...</comment></block><block s="doReport"><block s="reportDifference"><block s="reportRandom"><block s="reportVariadicSum"><list><block var="n1"/><block var="a"/></list></block><block s="reportVariadicSum"><list><block var="n2"/><block var="a"/></list></block></block><block var="a"/></block></block></script></block-definition><block-definition s="dash line %&apos;pos1&apos; %&apos;pos2&apos; dot type %&apos;type&apos; flat line ends: %&apos;flat line ends&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%txt" readonly="true">small<options>small&#xD;medium&#xD;large&#xD;x-large</options></input><input type="%b">false</input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="type"/><l>x-large</l></list></block><script><block s="doSetVar"><l>type</l><l>4</l></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="type"/><l>large</l></list></block><script><block s="doSetVar"><l>type</l><l>3</l></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="type"/><l>medium</l></list></block><script><block s="doSetVar"><l>type</l><l>2</l></block></script><script><block s="doSetVar"><l>type</l><l>1</l></block></script></block></script></block></script></block><block s="doDeclareVariables"><list><l>saveFlatLineEnds</l><l>dist</l><l>dotLength</l><l>spaceLength</l><l>nbSegment</l><l>nbDot</l><l>nbSpace</l></list></block><block s="doSetVar"><l>saveFlatLineEnds</l><block s="reportGlobalFlag"><l><option>flat line ends</option></l></block></block><block s="doSetVar"><l>dist</l><custom-block s="distance between %s %s"><block var="pos1"/><block var="pos2"/></custom-block></block><block s="doSetVar"><l>dotLength</l><block s="reportVariadicProduct"><list><block s="getPenAttribute"><l><option>size</option></l></block><block var="type"/></list></block></block><block s="doSetVar"><l>nbSegment</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportModulus"><block s="reportRound"><block s="reportQuotient"><block var="dist"/><block var="dotLength"/></block></block><l>2</l></block><l>1</l></list></block><block s="reportRound"><block s="reportQuotient"><block var="dist"/><block var="dotLength"/></block></block><block s="reportVariadicSum"><list><block s="reportRound"><block s="reportQuotient"><block var="dist"/><block var="dotLength"/></block></block><l>1</l></list></block></block><comment w="90" collapsed="false">should be odd...</comment></block><block s="doSetVar"><l>nbSpace</l><custom-block s="%n div %n"><block var="nbSegment"/><l>2</l></custom-block></block><block s="doSetVar"><l>nbDot</l><block s="reportDifference"><block var="nbSegment"/><block var="nbSpace"/></block></block><block s="doSetVar"><l>spaceLength</l><block s="reportQuotient"><block s="reportDifference"><block var="dist"/><block s="reportVariadicProduct"><list><block var="nbDot"/><block var="dotLength"/></list></block></block><block var="nbSpace"/></block></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="flat line ends"/></block><block s="doIfElse"><block var="flat line ends"/><script><block s="doGotoObject"><block var="pos1"/></block><block s="doFaceTowards"><block var="pos2"/></block><block s="down"></block><block s="forward"><block var="dotLength"/></block><block s="up"></block><block s="doRepeat"><block var="nbSpace"/><script><block s="forward"><block var="spaceLength"/></block><block s="down"></block><block s="forward"><block var="dotLength"/></block><block s="up"></block></script></block></script><script><block s="doGotoObject"><block var="pos1"/></block><block s="doFaceTowards"><block var="pos2"/></block><block s="forward"><block s="reportQuotient"><block s="getPenAttribute"><l><option>size</option></l></block><l>2</l></block></block><block s="down"></block><block s="forward"><block s="reportDifference"><block var="dotLength"/><block s="getPenAttribute"><l><option>size</option></l></block></block></block><block s="doRepeat"><block var="nbSpace"/><script><block s="up"></block><block s="forward"><block s="reportVariadicSum"><list><block var="spaceLength"/><block s="getPenAttribute"><l><option>size</option></l></block></list></block></block><block s="down"></block><block s="forward"><block s="reportDifference"><block var="dotLength"/><block s="getPenAttribute"><l><option>size</option></l></block></block></block></script></block><block s="up"></block></script></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="saveFlatLineEnds"/></block></script><scripts><script x="435" y="962.2000000000002"><block s="doGotoObject"><block var="pos1"/></block><block s="doFaceTowards"><block var="pos2"/></block><block s="forward"><block s="reportQuotient"><block var="dotLength"/><l>2</l></block></block><block s="down"></block><block s="forward"><l>0</l></block><block s="doRepeat"><block var="nbSpace"/><script><block s="up"></block><block s="forward"><block s="reportVariadicSum"><list><block var="dotLength"/><block var="spaceLength"/></list></block></block><block s="down"></block><block s="forward"><l>0</l></block></script></block><block s="up"></block></script><script x="312" y="1105.333333333333"><block var="dotLength"/></script><script x="309" y="1144"><block s="forward"><l>0</l></block></script><script x="386" y="443.19999999999993"><block s="doIf"><l><bool>false</bool></l><script><block s="doShowVar"><l>dist</l></block><block s="doShowVar"><l>dotLength</l></block><block s="doShowVar"><l>spaceLength</l></block><block s="doShowVar"><l>nbSegment</l></block><block s="doShowVar"><l>nbDot</l></block><block s="doShowVar"><l>nbSpace</l></block><block s="doPauseAll"></block><block s="doHideVar"><l>dist</l></block><block s="doHideVar"><l>dotLength</l></block><block s="doHideVar"><l>spaceLength</l></block><block s="doHideVar"><l>nbSegment</l></block><block s="doHideVar"><l>nbDot</l></block><block s="doHideVar"><l>nbSpace</l></block></script><list></list></block></script><script x="309" y="885.5333333333334"><block s="doGotoObject"><block s="reportNewList"><list><l>80</l><l>0</l></list></block></block></script></scripts></block-definition><block-definition s="line %&apos;pos1&apos; %&apos;pos2&apos; flat line ends: %&apos;flat line ends&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%b">false</input></inputs><script><block s="doDeclareVariables"><list><l>saveFlatLineEnds</l></list></block><block s="doSetVar"><l>saveFlatLineEnds</l><block s="reportGlobalFlag"><l><option>flat line ends</option></l></block></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="flat line ends"/></block><block s="doIfElse"><block var="flat line ends"/><script><block s="up"></block><block s="doGotoObject"><block var="pos1"/></block><block s="down"></block><block s="doGotoObject"><block var="pos2"/></block><block s="up"></block></script><script><block s="up"></block><block s="doGotoObject"><block var="pos1"/></block><block s="doFaceTowards"><block var="pos2"/></block><block s="forward"><block s="reportQuotient"><block s="getPenAttribute"><l><option>size</option></l></block><l>2</l></block></block><block s="down"></block><block s="forward"><block s="reportDifference"><custom-block s="distance between %s %s"><block var="pos1"/><block var="pos2"/></custom-block><block s="getPenAttribute"><l><option>size</option></l></block></block></block><block s="up"></block></script></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="saveFlatLineEnds"/></block></script><scripts><script x="278.42857142857133" y="412.78571428571325"><block s="doGotoObject"><block var="pos2"/></block></script><script x="268.85714285714266" y="312.73809523809433"><block s="reportQuotient"><l></l><l>2</l></block></script></scripts></block-definition><block-definition s="distance between %&apos;param1&apos; %&apos;param2&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="163.57142857142858" collapsed="false">Calculate the distance between 2 positions (x1y1 -&gt; x2y2) or 2 objects.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>x1</l><l>y1</l><l>x2</l><l>y2</l></list></block><custom-block s="// %mlt"><l>Détermine x1y1</l></custom-block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportIsA"><block var="param1"/><l><option>list</option></l></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="param1"/></block><l>2</l></list></block><block s="reportVariadicAnd"><list><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="param1"/></block><l><option>number</option></l></block><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="param1"/></block><l><option>number</option></l></block></list></block></list></block></list><comment w="90" collapsed="false">Si le paramètre est une coordonnée</comment></block><script><block s="doSetVar"><l>x1</l><block s="reportListItem"><l>1</l><block var="param1"/></block></block><block s="doSetVar"><l>y1</l><block s="reportListItem"><l>2</l><block var="param1"/></block></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="param1"/><l><option>sprite</option></l><comment w="90" collapsed="false">Si le paramètre est un sprite</comment></block><script><block s="doSetVar"><l>x1</l><block s="reportAttributeOf"><l><option>x position</option></l><block var="param1"/></block></block><block s="doSetVar"><l>y1</l><block s="reportAttributeOf"><l><option>y position</option></l><block var="param1"/></block></block></script><script></script></block></script></block><custom-block s="// %mlt"><l>Détermine x2y2</l></custom-block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportIsA"><block var="param2"/><l><option>list</option></l></block><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="param2"/></block><l>2</l></list></block><block s="reportVariadicAnd"><list><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="param2"/></block><l><option>number</option></l></block><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="param2"/></block><l><option>number</option></l></block></list></block></list></block></list><comment w="90" collapsed="false">Si le paramètre est une coordonnée</comment></block><script><block s="doSetVar"><l>x2</l><block s="reportListItem"><l>1</l><block var="param2"/></block></block><block s="doSetVar"><l>y2</l><block s="reportListItem"><l>2</l><block var="param2"/></block></block></script><script><block s="doIfElse"><block s="reportIsA"><block var="param2"/><l><option>sprite</option></l><comment w="90" collapsed="false">Si le paramètre est un sprite</comment></block><script><block s="doSetVar"><l>x2</l><block s="reportAttributeOf"><l><option>x position</option></l><block var="param2"/></block></block><block s="doSetVar"><l>y2</l><block s="reportAttributeOf"><l><option>y position</option></l><block var="param2"/></block></block></script><script></script></block></script></block><custom-block s="// %mlt"><l>Pytagore:on trouve la longueur de l&apos;hypoténuse</l></custom-block><block s="doReport"><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportVariadicSum"><list><block s="reportPower"><block s="reportDifference"><block var="x1"/><block var="x2"/></block><l>2</l></block><block s="reportPower"><block s="reportDifference"><block var="y1"/><block var="y2"/></block><l>2</l></block></list></block></block></block></script></block-definition><block-definition s="costume from commands %&apos;commands&apos;" type="reporter" category="looks"><comment x="0" y="0" w="125.71428571428572" collapsed="false">Return a costume from commands.Last position will be the pivot.&#xD;&#xD;ex:&#xD;goto 0,0&#xD;pen down&#xD;move 10&#xD;rotate 90&#xD;move 10</comment><header></header><code></code><translations>de:Kostüm aus Text _ Größe _&#xD;pt:um traje com o texto _ de tamanho _&#xD;ca:vestit amb el text _ i mida _&#xD;</translations><inputs><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>trails</l><l>pen state</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="setHeading"><l>90</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doRun"><block var="commands"/><list></list></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doIf"><block var="pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="right mouse down?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.world().hand.mouseButton === "right";</l></block><list></list></block></block></script></block-definition><block-definition s="new %&apos;color&apos; costume w %&apos;w&apos; h %&apos;h&apos;" type="reporter" category="looks"><comment x="0" y="0" w="314.65714285714284" collapsed="false">Return a new costume of the color of your choice.&#xD;&#xD;Block by Loucheman</comment><header></header><code></code><translations></translations><inputs><input type="%clr"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>rgb</l></list></block><block s="doSetVar"><l>rgb</l><block s="reportTextSplit"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block var="color"/></list></block><l>rgba(</l></block></block><l>)</l></block></block><l>,</l></block></block><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="rgb"/></block><block s="reportListItem"><l>2</l><block var="rgb"/></block><block s="reportListItem"><l>3</l><block var="rgb"/></block><l>255</l></list></block><list><block s="reportVariadicProduct"><list><block var="w"/><block var="h"/></list></block><l>4</l></list></block><block var="w"/><block var="h"/></block></block></script></block-definition><block-definition s="%&apos;numerator&apos; div %&apos;denominator&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="numerator"/><block var="denominator"/></block></block></block></script></block-definition><block-definition s="button costume from text %&apos;text&apos; size %&apos;size&apos; MarX %&apos;MarX&apos; MarY %&apos;MarY&apos; pen size %&apos;PenS&apos; bg color %&apos;BgC&apos; txt color %&apos;TxC&apos; PivotX %&apos;PivotX&apos; PivotY %&apos;PivotY&apos;" type="reporter" category="looks"><comment x="0" y="0" w="155.83333333333334" collapsed="false">Button costume from text v1.1&#xD;By Loucheman&#xD;&#xD;Create a costume for any button you want !&#xD;&#xD;text: text on the button&#xD;Size: size of text &#xD;MarX: left and right margin to increase the width of the button&#xD;MarY: save as MarX but fot height&#xD;pensize: thickness of the line&#xD;&#xD;Thk Dardoro for the color picker functionality.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Button</input><input type="%n">20</input><input type="%n">20</input><input type="%n">10</input><input type="%n">5</input><input type="%clr"></input><input type="%clr"></input><input type="%txt" readonly="true">center<options>left&#xD;center&#xD;right</options></input><input type="%txt" readonly="true">center<options>upper&#xD;center&#xD;bottom</options></input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>trails</l><l>MarginX</l><l>MarginY</l><l>PenSize</l><l>SavePensize</l><l>SavePenColor</l></list></block><block s="doSetVar"><l>MarginX</l><block var="MarX"/></block><block s="doSetVar"><l>MarginY</l><block var="MarY"/></block><block s="doSetVar"><l>PenSize</l><block var="PenS"/></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>SavePenColor</l><block s="reportNewList"><list><block s="getPenAttribute"><l><option>hue</option></l></block><block s="getPenAttribute"><l><option>saturation</option></l></block><block s="getPenAttribute"><l><option>brightness</option></l></block><block s="getPenAttribute"><l><option>transparency</option></l></block></list></block></block><block s="doSetVar"><l>SavePensize</l><block s="getPenAttribute"><l><option>size</option></l></block></block><block s="setSize"><block var="PenSize"/></block><block s="up"></block><block s="setHeading"><l>90</l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doDeclareVariables"><list><l>UpperLeftCorner</l><l>BottomRightCorner</l></list></block><block s="doSetVar"><l>UpperLeftCorner</l><block s="reportNewList"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></list></block><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></block></list></block></block><block s="doSetVar"><l>BottomRightCorner</l><block s="reportNewList"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="PenSize"/></list></block><block var="MarginX"/></list></block><block s="reportVariadicProduct"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><custom-block s="letter width at size %n"><block var="size"/></custom-block></list></block></list></block><block var="MarginX"/></list></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></list></block><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block var="PenSize"/></block><block var="MarginY"/></block><custom-block s="letter height at size %n"><block var="size"/></custom-block></block><block var="MarginY"/></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></block><l>1</l></block></list></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><block s="setColor"><color>16,4,0,1</color></block><block s="down"></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><block s="up"></block><block s="gotoXY"><custom-block s="average %mult%n"><list><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block></list></custom-block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></list></custom-block></block><custom-block s="set pen color to Dardoro color %s"><block var="BgC"/></custom-block><block s="floodFill"></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="MarginX"/></list></block><block s="reportQuotient"><block var="PenSize"/><l>1.5</l></block></list></block><l>0</l></list></block><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block var="MarginY"/></block><block s="reportQuotient"><block var="PenSize"/><l>1</l></block></block><custom-block s="letter height at size %n"><block var="size"/></custom-block></block><l>1</l></block></block><custom-block s="set pen color to Dardoro color %s"><block var="TxC"/></custom-block><block s="write"><block var="text"/><block var="size"/></block><block s="setPenColorDimension"><l><option>hue</option></l><block s="reportListItem"><l>1</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>saturation</option></l><block s="reportListItem"><l>2</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>brightness</option></l><block s="reportListItem"><l>3</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="SavePenColor"/></block></block><block s="setXPosition"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotX"/><l>left</l></list></block><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotX"/><l>right</l></list></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block></list></custom-block></block></block><comment w="90" collapsed="false">pivot x</comment></block><block s="setYPosition"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotY"/><l>upper</l></list></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotY"/><l>bottom</l></list></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></list></custom-block></block><comment w="90" collapsed="false">pivot y</comment></block></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="Delete all clones from %&apos;sprite&apos;" type="command" category="control"><comment x="0" y="0" w="194.2857142857143" collapsed="false">Delete all clones from a selected sprite.&#xD;&#xD;Block by Loucheman</comment><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_objectsMenu</options></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>clone</l><block s="reportAskFor"><block var="sprite"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>clones</option></l></block></autolambda><list></list></block><list></list></block><script><block s="doTellTo"><block var="clone"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="Delete all clones from all sprites" type="command" category="control"><comment x="0" y="0" w="174.2857142857143" collapsed="false">Delete all clones from all sprites.&#xD;&#xD;Block by Loucheman</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doForEach"><l>clone</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><l>2</l><l/></block><block s="reportBoolean"><l><bool>true</bool></l></block></list></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block var="value"/><block s="reportAskFor"><block var="value"/><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>temporary?</option></l></block></autolambda><list></list></block><list></list></block></list></block></autolambda><list><l>value</l></list></block><block s="reportAskFor"><l>Stage</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block></block></block><script><block s="doTellTo"><block s="reportListItem"><l>1</l><block var="clone"/></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="button costume from text %&apos;text&apos; size %&apos;size&apos; MarX %&apos;MarX&apos; MarY %&apos;MarY&apos; pen size %&apos;PenS&apos; box color %&apos;boxColor&apos; bg color %&apos;BgC&apos; txt color %&apos;TxC&apos; PivotX %&apos;PivotX&apos; PivotY %&apos;PivotY&apos;" type="reporter" category="looks"><comment x="0" y="0" w="155.83333333333334" collapsed="false">Button costume from text v1.1&#xD;By Loucheman&#xD;&#xD;Create a costume for any button you want !&#xD;&#xD;text: text on the button&#xD;Size: size of text &#xD;MarX: left and right margin to increase the width of the button&#xD;MarY: save as MarX but fot height&#xD;pensize: thickness of the line&#xD;&#xD;Thk Dardoro for the color picker functionality.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Button</input><input type="%n">20</input><input type="%n">20</input><input type="%n">10</input><input type="%n">5</input><input type="%clr"></input><input type="%clr"></input><input type="%clr"></input><input type="%txt" readonly="true">center<options>left&#xD;center&#xD;right</options></input><input type="%txt" readonly="true">center<options>upper&#xD;center&#xD;bottom</options></input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>trails</l><l>MarginX</l><l>MarginY</l><l>PenSize</l><l>SavePensize</l><l>SavePenColor</l></list></block><block s="doSetVar"><l>MarginX</l><block var="MarX"/></block><block s="doSetVar"><l>MarginY</l><block var="MarY"/></block><block s="doSetVar"><l>PenSize</l><block var="PenS"/></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>SavePenColor</l><block s="reportNewList"><list><block s="getPenAttribute"><l><option>hue</option></l></block><block s="getPenAttribute"><l><option>saturation</option></l></block><block s="getPenAttribute"><l><option>brightness</option></l></block><block s="getPenAttribute"><l><option>transparency</option></l></block></list></block></block><block s="doSetVar"><l>SavePensize</l><block s="getPenAttribute"><l><option>size</option></l></block></block><block s="setSize"><block var="PenSize"/></block><block s="up"></block><block s="setHeading"><l>90</l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doDeclareVariables"><list><l>UpperLeftCorner</l><l>BottomRightCorner</l></list></block><block s="doSetVar"><l>UpperLeftCorner</l><block s="reportNewList"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></list></block><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></block></list></block></block><block s="doSetVar"><l>BottomRightCorner</l><block s="reportNewList"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="PenSize"/></list></block><block var="MarginX"/></list></block><block s="reportVariadicProduct"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block><custom-block s="letter width at size %n"><block var="size"/></custom-block></list></block></list></block><block var="MarginX"/></list></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></list></block><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block var="PenSize"/></block><block var="MarginY"/></block><custom-block s="letter height at size %n"><block var="size"/></custom-block></block><block var="MarginY"/></block><block s="reportRound"><block s="reportQuotient"><block var="PenSize"/><l>2</l></block></block></block><l>1</l></block></list></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><custom-block s="set pen color to Dardoro color %s"><block var="boxColor"/></custom-block><block s="down"></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block></block><block s="up"></block><block s="gotoXY"><custom-block s="average %mult%n"><list><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block></list></custom-block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></list></custom-block></block><custom-block s="set pen color to Dardoro color %s"><block var="BgC"/></custom-block><block s="floodFill"></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="MarginX"/></list></block><block s="reportQuotient"><block var="PenSize"/><l>1.5</l></block></list></block><l>0</l></list></block><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block var="MarginY"/></block><block s="reportQuotient"><block var="PenSize"/><l>1</l></block></block><custom-block s="letter height at size %n"><block var="size"/></custom-block></block><l>1</l></block></block><custom-block s="set pen color to Dardoro color %s"><block var="TxC"/></custom-block><block s="write"><block var="text"/><block var="size"/></block><block s="setPenColorDimension"><l><option>hue</option></l><block s="reportListItem"><l>1</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>saturation</option></l><block s="reportListItem"><l>2</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>brightness</option></l><block s="reportListItem"><l>3</l><block var="SavePenColor"/></block></block><block s="setPenColorDimension"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="SavePenColor"/></block></block><block s="setXPosition"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotX"/><l>left</l></list></block><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotX"/><l>right</l></list></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>1</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>1</l><block var="BottomRightCorner"/></block></list></custom-block></block></block><comment w="90" collapsed="false">pivot x</comment></block><block s="setYPosition"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotY"/><l>upper</l></list></block><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="PivotY"/><l>bottom</l></list></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block><custom-block s="average %mult%n"><list><block s="reportListItem"><l>2</l><block var="UpperLeftCorner"/></block><block s="reportListItem"><l>2</l><block var="BottomRightCorner"/></block></list></custom-block></block><comment w="90" collapsed="false">pivot y</comment></block></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doReport"><block var="costume"/></block></script><scripts><script x="412" y="903.1999999999999"><block s="setColor"><color>16,4,0,1</color></block></script></scripts></block-definition><block-definition s="letter width at size %&apos;size&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">72</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="size"/><l>55</l></list></block><l>100</l></block></block></script></block-definition><block-definition s="letter height at size %&apos;size&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n">72</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="size"/><l>360</l></list></block><l>564</l></block></block></script><scripts><script x="121.00000000000007" y="98.66666666666664"><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="size"/><l>133</l></list></block><l>200</l></block></block></script></scripts></block-definition><block-definition s="set pen color to Dardoro color %&apos;color&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>rgb</l></list></block><block s="doSetVar"><l>rgb</l><block s="reportTextSplit"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block var="color"/></list></block><l>rgba(</l></block></block><l>)</l></block></block><l>,</l></block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="rgb"/></block><block s="reportListItem"><l>2</l><block var="rgb"/></block><block s="reportListItem"><l>3</l><block var="rgb"/></block></custom-block></script><scripts><script x="408.99999999999994" y="35.66666666666663"><block s="reportJoinWords"><list><l>hello </l></list></block></script><script x="473.00000000000006" y="126.66666666666663"><block s="doSetVar"><l>rgb</l><block s="reportNewList"><list><block s="reportVariadicProduct"><list><block s="reportTextSplit"><custom-block s="substring of %txt before %txt"><custom-block s="substring of %txt after %txt"><block s="reportJoinWords"><list><block var="color"/></list></block><l>(</l></custom-block><l>)</l></custom-block><l><option>csv</option></l></block><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l></list></block></list></block></list></block></block></script></scripts></block-definition><block-definition s="substring of %&apos;string&apos; after %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="203.33333333333337" collapsed="false">Reports the portion of the first input string starting after the first occurrence of the second string.  If the second string isn&apos;t found in the first string, reports an empty string.</comment><header></header><code></code><translations>pt:o texto de _ depois de _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><block s="reportVariadicSum"><list><block var="index"/><block s="reportTextAttribute"><l><option>length</option></l><block var="marker"/></block></list></block><l></l></custom-block></block></block></script></block-definition><block-definition s="position of %&apos;small&apos; in %&apos;large&apos;" type="reporter" category="operators"><comment x="0" y="0" w="294" collapsed="false">Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.&#xD;If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><custom-block s="use case-independent comparison"></custom-block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><custom-block s="to lower case %txt"><block var="small"/></custom-block><custom-block s="to lower case %txt"><block var="large"/></custom-block></list></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block var="small"/><block var="large"/></list></block></block></block></script></block-definition><block-definition s="use case-independent comparison" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>result</l><block s="reportApplyExtension"><l>var_get(name)</l><list><l>_case indepent</l></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>result</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><l></l></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="to lower case %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="275.3333333333333" collapsed="false">Reports the input text with lower case letters instead of capital letters in the input.  Uses the user&apos;s locale&apos;s rules for case conversion.</comment><header></header><code></code><translations>pt:em minúsculas _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>txt_lowercase(txt)</l><list><block var="text"/></list></block></block></script></block-definition><block-definition s="substring of %&apos;str&apos; from position %&apos;start&apos; to position %&apos;end&apos; inclusive" type="reporter" category="operators"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1).  If the third input is empty, reports the portion from the first position to the end of the string.&#xD;If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block var="start"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="end"/><l>0</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block><block var="end"/></block></block><block var="str"/></block></block></block></script></block-definition><block-definition s="substring of %&apos;string&apos; before %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175.33333333333334" collapsed="false">Reports the part of the first string up to the first instance of the second string inside it.  If the second string isn&apos;t found, reports the entire first string.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><block var="string"/><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><l>1</l><block s="reportDifference"><block var="index"/><l>1</l></block></custom-block></block></block></script></block-definition><block-definition s="set pen color to r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos;" type="command" category="pen"><comment x="0" y="0" w="220.66666666666663" collapsed="false">Takes three inputs for red, green, and blue&#xD;values, each between 0 and 255.  0,0,0 is black; 255,255,255 is white.  255,255,0 is yellow, and so on.&#xD;&#xD;The SET PEN block in this library lets you set individual red, green, or blue without changing the others, lets you provide a list of three RGB color components, and lets you provide a six-digit hexadecimal number, the form in which RGB color values are usually found online.&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255)&#xD;ca:fixa el llapis al color r: _ g: _ b: _&#xD;</translations><inputs><input type="%n">255</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doApplyExtension"><l>clr_setpen(clr)</l><list><block s="reportApplyExtension"><l>clr_rgba(r, g, b, a)</l><list><block var="r"/><block var="g"/><block var="b"/><block s="reportApplyExtension"><l>clr_channel(clr, rgba)</l><list><block s="reportApplyExtension"><l>clr_pen</l><list></list></block><l>a</l></list></block></list></block></list></block></script></block-definition><block-definition s="$camera snap" type="reporter" category="sensing"><comment x="0" y="0" w="216" collapsed="false">takes a snapshot with the webcam and reports it as a new costume, or zero if the user cancels</comment><header></header><code></code><translations>pt:$camera a imagem actual do vídeo&#xD;</translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>callback</l><l>pic</l></list></block><block s="doSetVar"><l>callback</l><block s="reportApplyExtension"><l>mda_snap</l><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="callback"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="export costume %&apos;costume&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="costume"/><l></l></list></block></script><list></list></block></script></block-definition><block-definition s="set name of costume %&apos;costume&apos; to %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s">thing</input></inputs><script><block s="doSetVar"><l>costume</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><block var="costume"/><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportGetImageAttribute"><l><option>name</option></l><l></l></block><block var="costume"/></list></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="doIf"><block s="reportIsA"><block var="costume"/><l><option>costume</option></l></block><script><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block var="name"/></list></block></script><list></list></block></script></block-definition><block-definition s="export costume list %&apos;costumes&apos; base name %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s">frame</input></inputs><script><block s="doDeclareVariables"><list><l>count</l></list></block><block s="doSetVar"><l>count</l><block s="reportListAttribute"><l><option>length</option></l><block var="costumes"/></block></block><block s="doForEach"><l>item</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="costumes"/></block><script><block s="doApplyExtension"><l>cst_export(cst, name)</l><list><block var="item"/><block s="reportJoinWords"><list><block var="name"/><l> (</l><block var="count"/><l>)</l></list></block></list></block><block s="doChangeVar"><l>count</l><l>-1</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="count"/><l>10</l></block><l>0</l></list></block><script><block s="doWait"><l>1</l></block></script><list></list></block></script></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="aaa" type="command" category="Local blocks"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="$arrowLeftOutline %&apos;NbMove&apos;" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="changeXPosition"><block s="reportMonadic"><l><option>neg</option></l><block var="NbMove"/></block></block></script></block-definition><block-definition s="$arrowRightOutline %&apos;NbMove&apos;" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="changeXPosition"><block var="NbMove"/></block></script></block-definition><block-definition s="$arrowUpOutline %&apos;NbMove&apos;" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="changeYPosition"><block var="NbMove"/></block></script></block-definition><block-definition s="$arrowDownOutline %&apos;NbMove&apos;" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs><input type="%n">10</input></inputs><script><block s="changeYPosition"><block s="reportMonadic"><l><option>neg</option></l><block var="NbMove"/></block></block></script></block-definition><block-definition s="$arrowLeftOutline" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeXPosition"><l>-1</l></block></script></block-definition><block-definition s="$arrowRightOutline" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeXPosition"><l>1</l></block></script></block-definition><block-definition s="$arrowUpOutline" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeYPosition"><l>1</l></block></script></block-definition><block-definition s="$arrowDownOutline" type="command" category="Design helpers"><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeYPosition"><l>-1</l></block></script></block-definition><block-definition s="$arrowRightOutline center $arrowLeftOutline" type="command" category="Design helpers"><comment x="0" y="0" w="232.39999999999998" collapsed="false">Center this sprite horizontally on the stage&#xD;&#xD;Block by Loucheman v1.0</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeXPosition"><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportGet"><l><option>left</option></l></block><block s="reportGet"><l><option>right</option></l></block></list></block><l>2</l></block></block></block></script></block-definition><block-definition s="$arrowUpOutline center $arrowDownOutline" type="command" category="Design helpers"><comment x="0" y="0" w="208.39999999999998" collapsed="false">Center this sprite vertically on the stage&#xD;&#xD;Block by Loucheman v1.0</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="changeYPosition"><block s="reportMonadic"><l><option>neg</option></l><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportGet"><l><option>bottom</option></l></block><block s="reportGet"><l><option>top</option></l></block></list></block><l>2</l></block></block></block></script></block-definition><block-definition s="%&apos;alignment&apos; alignement of %&apos;spriteToAlign&apos; with %&apos;sprite2&apos; offset %&apos;offset&apos;" type="command" category="Design helpers"><comment x="0" y="0" w="269" collapsed="false">Do an aligment on sprite1 over sprite 2&#xD;&#xD;left-left mean left of the 1st sprite will be align with left of the 2nd sprite&#xD;&#xD;Block by Loucheman (v1.03)</comment><header></header><code></code><translations></translations><inputs><input type="%txt">left-left<options>left-left&#xD;right-right&#xD;top-top&#xD;bottom-bottom&#xD;center horizontal&#xD;center vertical&#xD;center h &amp; v&#xD;left-right&#xD;right-left&#xD;top-bottom&#xD;bottom-top&#xD;pivot-pivot</options></input><input type="%mult%s">myself<options>§_objectsMenu</options></input><input type="%s">choose...<options>§_objectsMenu</options></input><input type="%n">0</input></inputs><script><block s="doWarp"><script><block s="doSetVar"><l>spriteToAlign</l><block s="reportListAttribute"><l><option>flatten</option></l><block var="spriteToAlign"/></block><comment w="571" collapsed="true">to accept a list into the slot: you can mix list and object (you can use block like &quot;my other sprites&quot; directly into a slot</comment></block><block s="doSetVar"><l>spriteToAlign</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block><block var="value"/><block s="reportObject"><block var="value"/></block></block></autolambda><list><l>value</l></list></block><block var="spriteToAlign"/></block><comment w="90" collapsed="false">convert descriptions into object if not already an real object: so you can mix real object with sprites names (description)</comment></block><block s="doSetVar"><l>sprite2</l><block s="reportObject"><block var="sprite2"/></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block></autolambda><list><l>value</l></list></block><block var="spriteToAlign"/></block></block></block><script><custom-block s="error %s"><l>Only sprites are allowed...</l></custom-block></script><list></list></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="sprite2"/><l><option>sprite</option></l></block></block><script><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="sprite2"/><block s="reportObject"><l>Stage</l></block></list></block></block><script><custom-block s="error %s"><l>Only sprite or stage allowed...</l></custom-block></script><list></list><comment w="119" collapsed="false">the 2nd sprite can be the stage... no error in this case...</comment></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportListIndex"><block var="sprite2"/><block var="spriteToAlign"/></block><l>0</l></list></block><script><block s="doDeleteFromList"><block s="reportListIndex"><block var="sprite2"/><block var="spriteToAlign"/></block><block var="spriteToAlign"/></block></script><list></list><comment w="90" collapsed="false">can&apos;t align a sprite with itself: remove it from the list...</comment></block><block s="doForEach"><l>sprite1</l><block var="spriteToAlign"/><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>left-left</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite1"/></block></block><block var="offset"/></list></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>right-right</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite1"/></block></block><block var="offset"/></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>top-top</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite1"/></block></block><block var="offset"/></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>bottom-bottom</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite1"/></block></block><block var="offset"/></list></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>left-right</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite1"/></block></block><block var="offset"/></list></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>right-left</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite1"/></block></block><block var="offset"/></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>top-bottom</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><block s="reportDifference"><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite1"/></block></block><block var="offset"/></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>bottom-top</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportVariadicSum"><list><block s="reportDifference"><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite1"/></block></block><block var="offset"/></list></block></block></script><list></list></block><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>pivot-pivot</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="doGotoObject"><block var="sprite2"/></block></script><list></list></block><list></list><comment w="90" collapsed="false">no offset in this case</comment></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>center horizontal</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite2"/></block></list></block><l>2</l></block><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite1"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite1"/></block></list></block><l>2</l></block></block></block></script><list></list></block><list></list><comment w="90" collapsed="false">no offset in this case</comment></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>center vertical</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite2"/></block></list></block><l>2</l></block><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite1"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite1"/></block></list></block><l>2</l></block></block></block></script><list></list></block><list></list><comment w="90" collapsed="false">no offset in this case</comment></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="alignment"/><l>center h &amp; v</l></list></block><script><block s="doTellTo"><block var="sprite1"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite2"/></block></list></block><l>2</l></block><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><block var="sprite1"/></block><block s="reportAttributeOf"><l><option>right</option></l><block var="sprite1"/></block></list></block><l>2</l></block></block></block><block s="changeYPosition"><block s="reportDifference"><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite2"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite2"/></block></list></block><l>2</l></block><block s="reportQuotient"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>top</option></l><block var="sprite1"/></block><block s="reportAttributeOf"><l><option>bottom</option></l><block var="sprite1"/></block></list></block><l>2</l></block></block></block></script><list></list><comment w="90" collapsed="false">no offset in this case</comment></block><list></list></block></script><script><custom-block s="error %s"><l>Unknow alignment...</l></custom-block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script><scripts><script x="32" y="1610.3333333333328"><block s="doDeclareVariables"><list><l>sprite1</l></list></block></script><comment x="482" y="260.20000000000005" w="304" collapsed="false">v1.00 : Original block : only left alignment&#xD;v1.01 : Fusion of 4 blocks (left,right,top,bottom) into 1 block&#xD;            Adding alignment parameter (left,right,top,bottom)&#xD;v1.02 : More alignment parameters (now left-left,right-right,&#xD;            top-top,bottom-bottom,center horizontal,center vertical,&#xD;            left-right,right-left,top-bottom,bottom-top,pivot-pivot)&#xD;v1.03 : Adding offset parameter</comment></scripts></block-definition><block-definition s="%&apos;sprite&apos;" type="reporter" category="Design helpers"><comment x="0" y="0" w="182" collapsed="false">Object name picker&#xD;&#xD;It&apos;s an helper block for the distribute horizontally and vertically blocks&#xD;&#xD;See inside the block for more info...&#xD;&#xD;Block by Loucheman</comment><header></header><code></code><translations></translations><inputs><input type="%txt"><options>§_objectsMenu</options></input></inputs><script><block s="doReport"><block var="sprite"/></block></script><scripts><script x="10" y="264.3666666666666"><custom-block s="distribute sprites: %mult%txt %txt on the stage ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block></list><l>vertically</l><l/></custom-block></script><comment x="12" y="162.2" w="293" collapsed="true">How to use it ?</comment><comment x="100" y="196.2" w="96" collapsed="false">Drop it into this slot&#xD;&#xD;             V</comment></scripts></block-definition><block-definition s="distribute sprites: %&apos;sprites&apos; %&apos;direction&apos; on the stage ( keep natural order? %&apos;naturalOrder?&apos; )" type="command" category="Design helpers"><comment x="0" y="0" w="260" collapsed="false">Distribute a list of sprite on the stage with the same spacing between sprites&#xD;&#xD;Sprites: Write sprites name into the variadic slot or you can use the helper block (an object picker).&#xD;&#xD;Sprite can be: the name of a sprite, an object (like my self or a clone), a list of object (like&quot;my other sprites&quot; or your own list)&#xD;&#xD;keep natural order : &#xD;    true: display sprites on the screen in natural order&#xD;    (left to right / top to botton) order to&#xD;    false: display sprites on the screen ordered in order&#xD;    of the parameters&#xD;&#xD;See inside the block for an example of how to use the helper block to pick a sprite.&#xD;&#xD;Block by Loucheman v1.1</comment><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input><input type="%txt" readonly="true">vertically<options>vertically&#xD;horizontally</options></input><input type="%b">true</input></inputs><script><custom-block s="// %mlt"><l>&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;</l></custom-block><block s="doWarp"><script><block s="doSetVar"><l>sprites</l><block s="reportListAttribute"><l><option>flatten</option></l><block var="sprites"/></block><comment w="571" collapsed="true">to accept a list into the slot: you can mix list and object (you can use block like &quot;my other sprites&quot; directly into a slot</comment></block><block s="doSetVar"><l>sprites</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block><block var="value"/><block s="reportObject"><block var="value"/></block></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block><comment w="90" collapsed="false">convert descriptions into object if not already an real object: so you can mix real object with sprites names (description)</comment></block><block s="doIf"><block s="reportNot"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><script><custom-block s="error %s"><l>Only sprites are allowed...</l></custom-block></script><list></list></block><block s="doSetVar"><l>sprites</l><custom-block s="$flash remove duplicates from %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportObject"><l></l></block></autolambda><list></list></block><block var="sprites"/></block></custom-block><comment w="81" collapsed="false">no duplicated sprites allowed...</comment></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="direction"/><l>vertically</l></list></block><script><custom-block s="// %mlt"><l>vertically</l></custom-block><block s="doIf"><block var="naturalOrder?"/><script><block s="doSetVar"><l>sprites</l><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="$flash sort %l ordering with %predRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><block s="reportAttributeOf"><l><option>top</option></l><l></l></block></list></block></autolambda><list></list></block><block var="sprites"/></block><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><l/></block><block s="reportListItem"><l>2</l><l/></block></list></block></autolambda><list></list></block></custom-block></block></block></block></script><list></list></block><block s="doSetVar"><l>sprites</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="sprites"/></block><comment w="253" collapsed="true">reverse: because draw botton to top</comment></block><custom-block s="let %upvar be %s"><l>spacing</l><block s="reportQuotient"><block s="reportDifference"><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>height</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="sprites"/></block><l>1</l></list></block></block></custom-block><custom-block s="let %upvar be %s"><l>where to left align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>bottom</option></l><l>Stage</l></block><block var="spacing"/></list></block></custom-block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="sprites"/><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><block var="where"/><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></block></script><list><l>where</l></list></block><list><block var="where to left align"/></list></block><block s="doChangeVar"><l>where to left align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>height</option></l><block var="item"/></block><block var="spacing"/></list></block></block></script></custom-block></script><script><custom-block s="// %mlt"><l>horizontally</l></custom-block><block s="doIf"><block var="naturalOrder?"/><script><block s="doSetVar"><l>sprites</l><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="$flash sort %l ordering with %predRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><block s="reportAttributeOf"><l><option>left</option></l><l></l></block></list></block></autolambda><list></list></block><block var="sprites"/></block><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><l/></block><block s="reportListItem"><l>2</l><l/></block></list></block></autolambda><list></list></block></custom-block></block></block></block></script><list></list></block><custom-block s="let %upvar be %s"><l>spacing</l><block s="reportQuotient"><block s="reportDifference"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>width</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="sprites"/></block><l>1</l></list></block></block></custom-block><custom-block s="let %upvar be %s"><l>where to left align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block var="spacing"/></list></block></custom-block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="sprites"/><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block var="where"/><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></block></script><list><l>where</l></list></block><list><block var="where to left align"/></list></block><block s="doChangeVar"><l>where to left align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>width</option></l><block var="item"/></block><block var="spacing"/></list></block></block></script></custom-block></script></block></script></block></script><scripts><script x="542" y="729.1999999999998"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><block s="reportNewList"><list><custom-block s="%txt"><l>Sprite2</l></custom-block><l>Sprite3</l><block s="reportGet"><l><option>other sprites</option></l></block></list></block></list><l>vertically</l><l/><comment w="90" collapsed="false">you can put list directly into a slot</comment></custom-block></script><script x="545" y="644.166666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><l>Sprite2</l></list><l>vertically</l><l/><comment w="90" collapsed="false">you can write the sprite name directely into the slot</comment></custom-block></script><script x="563" y="791.0333333333328"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><block s="reportNewList"><list><custom-block s="%txt"><l>Sprite2</l></custom-block><l>Sprite3</l><block s="reportGet"><l><option>other sprites</option></l></block></list></block><l>vertically</l><l/><comment w="90" collapsed="false">you can put list into the variadic control</comment></custom-block></script><script x="556" y="570.1666666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><block s="reportGet"><l><option>other sprites</option></l></block></list><l>vertically</l><l/><comment w="90" collapsed="false">you can mix non-object with real object</comment></custom-block></script><script x="569" y="514.1666666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><custom-block s="%txt"><l>Sprite2</l></custom-block></list><l>vertically</l><l/><comment w="122" collapsed="false">how to use helper block</comment></custom-block></script></scripts></block-definition><block-definition s="distribute free space between sprites: %&apos;sprites&apos; %&apos;direction&apos; ( keep natural order? %&apos;naturalOrder?&apos; )" type="command" category="Design helpers"><comment x="0" y="0" w="260" collapsed="false">Distribute a list of sprite on the stage with the same spacing between sprites&#xD;&#xD;Sprites: Write sprites name into the variadic slot or you can use the helper block (an object picker).  You need at least 3 sprite to see an effect...&#xD;&#xD;Sprite can be: the name of a sprite, an object (like my self or a clone), a list of object (like&quot;my other sprites&quot; or your own list)&#xD;&#xD;keep natural order : &#xD;    true: display sprites on the screen in natural order&#xD;    (left to right / top to botton) order to&#xD;    false: display sprites on the screen ordered in order&#xD;    of the parameters&#xD;&#xD;See inside the block for an example of how to use the helper block to pick a sprite.&#xD;&#xD;Block by Loucheman v1.1</comment><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input><input type="%txt" readonly="true">vertically<options>vertically&#xD;horizontally</options></input><input type="%b">true</input></inputs><script><custom-block s="// %mlt"><l>&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;</l></custom-block><block s="doWarp"><script><block s="doSetVar"><l>sprites</l><block s="reportListAttribute"><l><option>flatten</option></l><block var="sprites"/></block><comment w="571" collapsed="true">to accept a list into the slot: you can mix list and object (you can use block like &quot;my other sprites&quot; directly into a slot</comment></block><block s="doSetVar"><l>sprites</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block><block var="value"/><block s="reportObject"><block var="value"/></block></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block><comment w="90" collapsed="false">convert descriptions into object if not already an real object: so you can mix real object with sprites names (description)</comment></block><block s="doIf"><block s="reportNot"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><script><custom-block s="error %s"><l>Only sprites are allowed...</l></custom-block></script><list></list></block><block s="doSetVar"><l>sprites</l><custom-block s="$flash remove duplicates from %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportObject"><l></l></block></autolambda><list></list></block><block var="sprites"/></block></custom-block><comment w="81" collapsed="false">no duplicated sprites allowed...</comment></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="direction"/><l>vertically</l></list></block><script><custom-block s="// %mlt"><l>vertically</l></custom-block><block s="doIf"><block var="naturalOrder?"/><script><block s="doSetVar"><l>sprites</l><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="$flash sort %l ordering with %predRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><block s="reportAttributeOf"><l><option>top</option></l><l></l></block></list></block></autolambda><list></list></block><block var="sprites"/></block><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l>2</l><l/></block><block s="reportListItem"><l>2</l><l/></block></list></block></autolambda><list></list></block></custom-block></block></block></block></script><list></list><comment w="260" collapsed="true">natural order: order by top of each sprite</comment></block><block s="doSetVar"><l>sprites</l><block s="reportListAttribute"><l><option>reverse</option></l><block var="sprites"/></block><comment w="253" collapsed="true">reverse: because draw botton to top</comment></block><custom-block s="let %upvar be %s"><l>spacing</l><block s="reportQuotient"><block s="reportDifference"><block s="reportDifference"><block s="reportVariadicMax"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>top</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block><block s="reportVariadicMin"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>bottom</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>height</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="sprites"/></block><l>1</l></block></block></custom-block><custom-block s="let %upvar be %s"><l>where to align</l><block s="reportVariadicMin"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>bottom</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block><comment w="90" collapsed="false">find the lowest bottom from sprite list, will draw the 1st sprite on the botton from this point</comment></custom-block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="sprites"/><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><block var="where"/><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></block></script><list><l>where</l></list></block><list><block var="where to align"/></list></block><block s="doChangeVar"><l>where to align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>height</option></l><block var="item"/></block><block var="spacing"/></list></block></block></script></custom-block></script><script><custom-block s="// %mlt"><l>horizontally</l></custom-block><block s="doIf"><block var="naturalOrder?"><comment w="260" collapsed="true">natural order: order by left of each sprite</comment></block><script><block s="doSetVar"><l>sprites</l><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="$flash sort %l ordering with %predRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><block s="reportAttributeOf"><l><option>left</option></l><l></l></block></list></block></autolambda><list></list></block><block var="sprites"/></block><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block s="reportListItem"><l>2</l><l/></block><block s="reportListItem"><l>2</l><l/></block></list></block></autolambda><list></list></block></custom-block></block></block></block></script><list></list></block><custom-block s="let %upvar be %s"><l>spacing</l><block s="reportQuotient"><block s="reportDifference"><block s="reportDifference"><block s="reportVariadicMax"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>right</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block><block s="reportVariadicMin"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>left</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>width</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block></block><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="sprites"/></block><l>1</l></block></block></custom-block><custom-block s="let %upvar be %s"><l>where to align</l><block s="reportVariadicMin"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAttributeOf"><l><option>left</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block><comment w="90" collapsed="false">find the leftiest (?) from sprite list, will draw the 1st sprite on the left from this point</comment></custom-block><custom-block s="%upvar for each %upvar of %l %ca"><l>#</l><l>item</l><block var="sprites"/><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><block var="where"/><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></block></script><list><l>where</l></list></block><list><block var="where to align"/></list></block><block s="doChangeVar"><l>where to align</l><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>width</option></l><block var="item"/></block><block var="spacing"/></list></block></block></script></custom-block></script></block></script></block></script><scripts><script x="542" y="729.1999999999998"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><block s="reportNewList"><list><custom-block s="%txt"><l>Sprite2</l></custom-block><l>Sprite3</l><block s="reportGet"><l><option>other sprites</option></l></block></list></block></list><l>vertically</l><l><bool>false</bool></l><comment w="90" collapsed="false">you can put list directly into a slot</comment></custom-block></script><script x="563" y="791.0333333333328"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><block s="reportNewList"><list><custom-block s="%txt"><l>Sprite2</l></custom-block><l>Sprite3</l><block s="reportGet"><l><option>other sprites</option></l></block></list></block><l>vertically</l><l><bool>false</bool></l><comment w="90" collapsed="false">you can put list into the variadic control</comment></custom-block></script><script x="556" y="570.1666666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><block s="reportGet"><l><option>other sprites</option></l></block></list><l>vertically</l><l><bool>false</bool></l><comment w="90" collapsed="false">you can mix non-object with real object</comment></custom-block></script><script x="569" y="514.1666666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><custom-block s="%txt"><l>Sprite2</l></custom-block></list><l>vertically</l><l><bool>false</bool></l><comment w="122" collapsed="false">how to use helper block</comment></custom-block></script><script x="540" y="644.166666666667"><custom-block s="distribute free space between sprites: %mult%txt %txt ( keep natural order? %b )"><list><custom-block s="%txt"><l>Sprite</l></custom-block><l>Sprite2</l></list><l>vertically</l><l><bool>false</bool></l><comment w="90" collapsed="false">you can write the sprite name directely into the slot</comment></custom-block></script></scripts></block-definition><block-definition s="$flash remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations>ca:elimina els duplicats de _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportApplyExtension"><l>dta_analyze(list)</l><list><block var="data"/></list></block></block></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>lst_sort(list, fn)</l><list><block var="data"/><block var="function"/></list></block></block></script></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doForEach"><l>inner item</l><block var="data"/><script><block s="doSetVar"><l>item</l><block var="inner item"/></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333337" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="// %&apos;rem&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mlt"></input></inputs></block-definition><block-definition s="move horizontal pivot to %&apos;where&apos;" type="command" category="Design helpers"><comment x="0" y="0" w="163" collapsed="false">Set the horizontal pivot (rotation center) to the left, center or right of the sprite.&#xD;&#xD;Block by Loucheman v1.0</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">left<options>left&#xD;center&#xD;right</options></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>left</l></list></block><script><block s="doSetVar"><l><option>my rotation x</option></l><block s="reportGet"><l><option>left</option></l></block></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>center</l></list></block><script><block s="doSetVar"><l><option>my rotation x</option></l><custom-block s="average %mult%n"><list><block s="reportGet"><l><option>left</option></l></block><block s="reportGet"><l><option>right</option></l></block></list></custom-block></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>right</l></list></block><script><block s="doSetVar"><l><option>my rotation x</option></l><block s="reportGet"><l><option>right</option></l></block></block></script><script><custom-block s="error %s"><l>Invalid parameter</l></custom-block></script></block></script></block></script></block></script></block-definition><block-definition s="average %&apos;nums&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:a soma de _&#xD;</translations><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="nums"/></block><script><block s="doReport"><l>0</l></block></script><list></list></block><block s="doReport"><block s="reportQuotient"><block s="reportCombine"><block var="nums"/><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l></l></list></block></autolambda><list></list></block></block><block s="reportListAttribute"><l><option>length</option></l><block var="nums"/></block></block></block></script></block-definition><block-definition s="move vertical pivot to %&apos;where&apos;" type="command" category="Design helpers"><comment x="0" y="0" w="163" collapsed="false">Set the vertical pivot (rotation center) to the top, center or bottom of the sprite.&#xD;&#xD;Block by Loucheman v1.0</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">top<options>top&#xD;center&#xD;bottom</options></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>top</l></list></block><script><block s="doSetVar"><l><option>my rotation y</option></l><block s="reportGet"><l><option>top</option></l></block></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>center</l></list></block><script><block s="doSetVar"><l><option>my rotation y</option></l><custom-block s="average %mult%n"><list><block s="reportGet"><l><option>bottom</option></l></block><block s="reportGet"><l><option>top</option></l></block></list></custom-block></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="where"/><l>bottom</l></list></block><script><block s="doSetVar"><l><option>my rotation y</option></l><block s="reportGet"><l><option>bottom</option></l></block></block></script><script><custom-block s="error %s"><l>Invalid parameter</l></custom-block></script></block></script></block></script></block></script></block-definition><block-definition s="set pivot to my center" type="command" category="Design helpers"><comment x="0" y="0" w="163" collapsed="false">Set the pivot (rotation center) in the middle of the costume (x &amp; y) &#xD;&#xD;Block by Loucheman v1.0</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l><option>my rotation x</option></l><custom-block s="average %mult%n"><list><block s="reportGet"><l><option>left</option></l></block><block s="reportGet"><l><option>right</option></l></block></list></custom-block></block><block s="doSetVar"><l><option>my rotation y</option></l><custom-block s="average %mult%n"><list><block s="reportGet"><l><option>bottom</option></l></block><block s="reportGet"><l><option>top</option></l></block></list></custom-block></block></script></block-definition><block-definition s="setting %&apos;which&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows reading global settings programmatically.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:o valor da configuração _&#xD;ca:paràmetre _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;User&#xD;Presentation mode&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support&#xD;Hyper blocks support&#xD;Visible palette</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    ide = stage.parentThatIsA(IDE_Morph),&#xD;    world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        return ide.projectNotes;&#xD;    case &apos;Project name&apos;:&#xD;        return ide.projectName;&#xD;    case &apos;User&apos;:&#xD;        return ide.cloud.username;&#xD;    case &apos;Presentation mode&apos;:&#xD;        return ide.isAppMode;&#xD;    case &apos;Language&apos;:&#xD;        return SnapTranslator.language;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        return SyntaxElementMorph.prototype.scale;&#xD;    case &apos;Stage size&apos;:&#xD;        return new List([stage.dimensions.x, stage.dimensions.y]);&#xD;    case &apos;Stage scale&apos;:&#xD;       return stage.scale;&#xD;    case &apos;Retina display support&apos;:&#xD;        return isRetinaEnabled();&#xD;    case &apos;Long form input dialog&apos;:&#xD;        return InputSlotDialogMorph.prototype.isLaunchingExpanded;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        return BlockLabelPlaceHolderMorph.prototype.plainLabel;&#xD;    case &apos;Input sliders&apos;:&#xD;        return MorphicPreferences.useSliderForInput;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        return ArgMorph.prototype.executeOnSliderEdit;&#xD;    case &apos;Clicking sound&apos;:&#xD;        return !!BlockMorph.prototype.snapSound;&#xD;    case &apos;Turbo mode&apos;:&#xD;        return stage.isFastTracked;&#xD;    case &apos;Flat design&apos;:&#xD;        return MorphicPreferences.isFlat;&#xD;    case &apos;Keyboard editing&apos;:&#xD;        return !!this.scripts.focus;&#xD;    case &apos;Visible stepping&apos;:&#xD;        return Process.prototype.enableSingleStepping;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        return stage.isThreadSafe;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        return StageMorph.prototype.frameRate &gt; 0;&#xD;    case &apos;Flat line ends&apos;:&#xD;        return SpriteMorph.prototype.useFlatLineEnds;&#xD;    case &apos;Codification support&apos;:&#xD;        return StageMorph.prototype.enableCodeMapping;&#xD;    case &apos;Inheritance support&apos;:&#xD;        return StageMorph.prototype.enableInheritance;&#xD;    case &apos;Hyper blocks support&apos;:&#xD;        return Process.prototype.enableHyperOps;&#xD;    default: return which;&#xD;    case &apos;Visible palette&apos;:&#xD;        return ide.currentCategory;&#xD;}</l></block><list><block var="which"/></list></block></block></script></block-definition><block-definition s="set flag %&apos;which&apos; to %&apos;tf&apos;" type="command" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows changing global settings programmatically.&#xD;This block is for Boolean (checkbox) settings; use&#xD;SET VALUE for numeric or text values.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:altera o valor da configuração _ para _&#xD;ca:fixa el paràmetre _ a _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Presentation mode&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support&#xD;Hyper blocks support</options></input><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>tf</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph),&#xD;        thisObj = this;&#xD;&#xD;if (tf != !!tf) return;&#xD;&#xD;try{&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Presentation mode&apos;:&#xD;        if (tf != ide.isAppMode) ide.toggleAppMode();&#xD;        break;&#xD;    case &apos;Retina display support&apos;:&#xD;        if (tf != isRetinaEnabled()) ide.toggleRetina();&#xD;        break;&#xD;    case &apos;Long form input dialog&apos;:&#xD;        if (tf != InputSlotDialogMorph.prototype.isLaunchingExpanded)&#xD;            ide.toggleLongFormInputDialog();&#xD;        break;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        if (tf != BlockLabelPlaceHolderMorph.prototype.plainLabel)&#xD;            ide.togglePlainPrototypeLabels();&#xD;        break;&#xD;    case &apos;Input sliders&apos;:&#xD;        MorphicPreferences.useSliderForInput = tf;&#xD;        break;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        ArgMorph.prototype.executeOnSliderEdit = tf;&#xD;        break;&#xD;    case &apos;Clicking sound&apos;:&#xD;        if (tf != !!BlockMorph.prototype.snapSound)&#xD;            BlockMorph.prototype.toggleSnapSound();&#xD;        break;&#xD;    case &apos;Turbo mode&apos;:&#xD;        if (tf != stage.isFastTracked)&#xD;            ide.toggleFastTracking();&#xD;        break;&#xD;    case &apos;Flat design&apos;:&#xD;        if (tf == MorphicPreferences.isFlat) break;&#xD;        if (tf)&#xD;            ide.flatDesign();&#xD;        else&#xD;            ide.defaultDesign();&#xD;        break;&#xD;    case &apos;Keyboard editing&apos;:&#xD;        if (thisObj.scripts.focus &amp;&amp; !tf) {&#xD;            thisObj.scripts.focus.stopEditing();&#xD;        } else if (tf &amp;&amp; !thisObj.scripts.focus) {&#xD;            thisObj.scripts.toggleKeyboardEntry();&#xD;        };&#xD;        break;&#xD;    case &apos;Visible stepping&apos;:&#xD;        if (tf != Process.prototype.enableSingleStepping)&#xD;            ide.toggleSingleStepping();&#xD;        break;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        stage.isThreadSafe = tf;&#xD;        break;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        if (tf != (StageMorph.prototype.frameRate &gt; 0))&#xD;            ide.toggleVariableFrameRate();&#xD;        break;&#xD;    case &apos;Flat line ends&apos;:&#xD;        SpriteMorph.prototype.useFlatLineEnds = tf;&#xD;        break;&#xD;    case &apos;Codification support&apos;:&#xD;        if (tf != StageMorph.prototype.enableCodeMapping) {&#xD;            StageMorph.prototype.enableCodeMapping = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;    case &apos;Inheritance support&apos;:&#xD;        if (tf != StageMorph.prototype.enableInheritance) {&#xD;            StageMorph.prototype.enableInheritance = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;    case &apos;Hyper blocks support&apos;:&#xD;        Process.prototype.enableHyperOps = tf;&#xD;        break;&#xD;};&#xD;}&#xD;finally {&#xD;ide.savingPreferences = false;&#xD;};&#xD;</l></block><list><block var="which"/><block var="tf"/></list></block></script></block-definition><block-definition s="set value %&apos;which&apos; to %&apos;value&apos;" type="command" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows changing global settings programmatically.&#xD;This block is for numeric or text settings; use&#xD;SET FLAG for Boolean (checkbox) values.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:altera o valor da configuração _ para _&#xD;ca:fixa el valor de _ a _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Visible palette</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>value</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;try {&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        ide.projectNotes = value;&#xD;        break;&#xD;    case &apos;Project name&apos;:&#xD;        ide.setProjectName(value);&#xD;        break;&#xD;    case &apos;Language&apos;:&#xD;        ide.setLanguage(value);&#xD;        break;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        if (!isNaN(value)) ide.setBlocksScale(Math.min(value, 12));&#xD;        break;&#xD;    case &apos;Stage size&apos;:&#xD;        if ((value instanceof List) &amp;&amp; value.length()==2&#xD;                       &amp;&amp; !isNaN(value.at(1)) &amp;&amp; !isNaN(value.at(2)))&#xD;            ide.setStageExtent(new Point(value.at(1), value.at(2)));&#xD;        break;&#xD;    case &apos;Stage scale&apos;:&#xD;        ide.toggleStageSize(value != 1, Math.max(0.1, value));&#xD;        break;&#xD;    case &apos;Visible palette&apos;:&#xD;        ide.currentCategory = value.toLowerCase();&#xD;        ide.categories.children.forEach(function (each) {&#xD;                each.refresh();&#xD;        });&#xD;        ide.refreshPalette(true);&#xD;        break;&#xD;};&#xD;}&#xD;finally {ide.savingPreferences = true;&#xD;};</l></block><list><block var="which"/><block var="value"/></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;pt:lança _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;pt:lança _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="263.3333333333333" collapsed="false">This is a breakpoint block, to be used in debugging.&#xD;The Boolean input specifies the condition under which&#xD;the program should pause.  (Use True for an unconditional breakpoint.)  The intent is that the script should have&#xD;SHOW VARIABLE blocks for the process&apos;s local variables.&#xD;After the pause, this block automatically hides all temporary variables.</comment><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;pt:se _ , então _ e faz pausa em tudo $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="cascade until %&apos;pred&apos; %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="210.47493489583334" collapsed="false">Call f(f(f(...(f(x))))) until condition is true, where the three input slots are condition, f, and x from left to right.  The # variable can be used inside f or condition to indicate how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado da invocação em cascata até que _ de _ com argumento inicial _ _&#xD;ca:en cascada fins _ _ _ _&#xD;</translations><inputs><input type="%predRing"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list><block var="result"/></list></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="compose %&apos;f&apos; %&apos;g&apos;" type="reporter" category="control"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Returns the function x↦f(g(x)) where f and g are the two inputs.</comment><header></header><code></code><translations>pt:a composição de _ com _&#xD;ca:composa _ _&#xD;</translations><inputs><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="f"/><list><block s="evaluate"><block var="g"/><list><l></l></list></block></list></block></autolambda><list></list></block></block></script></block-definition><block-definition s="repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;ca:repeteix _ fins _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;action&apos; while %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="287.3333333333333" collapsed="false">Run the script repeatedly, as long as the given condition is true.  Runs the script at least once before testing the condition.</comment><header></header><code></code><translations>pt:repete _ enquanto _ $loop-0.7&#xD;ca:repeteix _ mentre _&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat while %&apos;pred&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="264" collapsed="false">Runs the script repeatedly, as long as the condition is true. Tests the condition before the first time the script is run.  Like the built in REPEAT UNTIL except that in this block the condition must be true, not false.</comment><header></header><code></code><translations>pt:enquanto _ , repete _ $loop-0.7&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;num&apos; %&apos;#&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="171" collapsed="false">Runs the script the specified number of times, like the built-in REPEAT block, but this one provides the # variable that can be used inside the script.  Try&#xD;REPEAT (200)&#xD;                MOVE (#) STEPS&#xD;   RIGHT 92&#xD;with the pen down.</comment><header></header><code></code><translations>pt:repete _ vezes _ _ $loop-0.7&#xD;ca:repeteix _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="let %&apos;a&apos; be %&apos;val&apos; in %&apos;loop&apos; %&apos;body&apos;" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Provides LOOP as a function of one input that runs&#xD;the body of the LET with A set to the function input,&#xD;so the body can run itself recursively.&#xD;See COPY block in Variables for an example of use.</comment><header></header><code></code><translations>pt:tendo _ o valor inicial _ , executa _ definido como _&#xD;ca:fes que _ sigui _ al _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>a</l><block var="val"/></block><block s="doSetVar"><l>loop</l><block s="reifyScript"><script><block s="doSetVar"><l>a</l><block var="new value"/></block><block s="doRun"><block var="body"/><list><block var="a"/></list></block></script><list><l>new value</l></list></block></block><block s="doRun"><block var="loop"/><list><block var="a"/></list></block></script></block-definition><block-definition s="-- %&apos;n&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%anyUE" readonly="true"></input></inputs><script><block s="doRun"><block s="reifyScript"><script><block s="doChangeVar"><l></l><l>-1</l></block></script><list></list></block><list><block var="n"/></list></block><block s="doReport"><block s="evaluate"><block var="n"/><list></list></block></block></script></block-definition><block-definition s="animate setter %&apos;setter&apos; getter %&apos;getter&apos; delta %&apos;delta&apos; over %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="control"><header></header><code></code><translations>de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _&#xD;ca:modifica setter _ i getter _ amb delta _ en _ segons de forma _&#xD;pt:anima com modificador _ e inspector _ de _ em _ s de forma _&#xD;</translations><inputs><input type="%cmdRing"></input><input type="%repRing"></input><input type="%n">50</input><input type="%n">1</input><input type="%repRing"></input></inputs><script><block s="doDeclareVariables"><list><l>end time</l><l>destination</l></list></block><block s="doSetVar"><l>end time</l><block s="reportVariadicSum"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block s="reportVariadicProduct"><list><block var="duration"/><l>1000</l></list></block></list></block></block><block s="doSetVar"><l>destination</l><block s="reportVariadicSum"><list><block s="evaluate"><block var="getter"/><list></list></block><block var="delta"/></list></block></block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="end time"/></list></block><script><block s="doRun"><block var="setter"/><list><block s="reportDifference"><block var="destination"/><block s="reportVariadicProduct"><list><block var="delta"/><block s="evaluate"><block var="easing"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportVariadicProduct"><list><block var="duration"/><l>1000</l></list></block></block></list></block></list></block></block></list></block></script></block><block s="doRun"><block var="setter"/><list><block var="destination"/></list></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Grad _&#xD;ca:graus de _ radians&#xD;pt:_ radianos em graus&#xD;</translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="radians"/><l>180</l></list></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>de:Fehler _&#xD;pt:assinala o erro _&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="glide %&apos;steps&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="motion"><header></header><code></code><translations>de:gleite _ in _ Sek. beschleunigt: _&#xD;ca:llisca _ en _ segons de forma _&#xD;fr:glisser _ en _ sec. accélérer _&#xD;pt:desliza _ em _ s de forma _&#xD;</translations><inputs><input type="%n">50</input><input type="%n">1</input><input type="%s" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input></inputs><script><custom-block s="animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing"><block s="reifyScript"><script><block s="doGotoObject"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getPosition"></block></autolambda><list></list></block><block s="reportVariadicProduct"><list><block var="steps"/><block s="reportNewList"><list><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block></list></block></list></block><block var="duration"/><custom-block s="easing %txt"><block var="easing"/></custom-block></custom-block></script></block-definition><block-definition s="animate %&apos;attribute&apos; by %&apos;delta&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="motion"><header></header><code></code><translations>de:animiere _ um _ in _ Sek. beschleunigt: _&#xD;ca:modifica _ amb _ en _ segons de forma _&#xD;pt:anima _ de _ em _ s de forma _&#xD;</translations><inputs><input type="%s" readonly="true">x position<options>steps&#xD;x position&#xD;y position&#xD;direction&#xD;size&#xD;ghost effect&#xD;color effect&#xD;saturation effect&#xD;brightness effect&#xD;fisheye effect&#xD;whirl effect&#xD;pixelate effect&#xD;mosaic effect&#xD;negative effect&#xD;tempo&#xD;volume&#xD;balance</options></input><input type="%n">50</input><input type="%n">1</input><input type="%s" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input></inputs><script><block s="doDeclareVariables"><list><l>accessors</l><l>func</l></list></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>steps</l></list></block><script><block s="doSetVar"><l>accessors</l><block s="reportNewList"><list><block s="reifyScript"><script><block s="doGotoObject"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getPosition"></block></autolambda><list></list></block></list></block></block><block s="doSetVar"><l>delta</l><block s="reportVariadicProduct"><list><block var="delta"/><block s="reportNewList"><list><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block></list></block></list></block></block></script><script><block s="doSetVar"><l>accessors</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>x position</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setXPosition"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>y position</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setYPosition"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>direction</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setHeading"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>size</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setScale"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>tempo</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetTempo"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getTempo"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>volume</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setVolume"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getVolume"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="attribute"/><l>balance</l></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setPan"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getPan"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setEffect"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getEffect"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block></block></autolambda><list></list></block></list></block></block></block></block></block></block></block></block></block></script></block><block s="doIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><script><block s="doSetVar"><l>func</l><block var="easing"/></block></script><script><block s="doSetVar"><l>func</l><custom-block s="easing %txt"><block var="easing"/></custom-block></block></script></block><custom-block s="animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing"><block s="reportListItem"><l>1</l><block var="accessors"/></block><block s="reportListItem"><l>2</l><block var="accessors"/></block><block var="delta"/><block var="duration"/><block var="func"/></custom-block></script></block-definition><block-definition s="easing %&apos;choice&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Beschleunigung _&#xD;ca:de forma _&#xD;pt:a forma _&#xD;</translations><inputs><input type="%txt" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>linear</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>id</option></l><l></l></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quadratic-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><l></l></list></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quadratic-in</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><block s="reportDifference"><l>2</l><l></l></block></list></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quadratic-in-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicLessThan"><list><l></l><l>.5</l></list></block><block s="reportVariadicProduct"><list><l>2</l><block s="reportVariadicProduct"><list><l></l><l></l></list></block></list></block><block s="reportDifference"><block s="reportVariadicProduct"><list><block s="reportDifference"><l>4</l><block s="reportVariadicProduct"><list><l>2</l><l></l></list></block></block><l></l></list></block><l>1</l></block></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>cubic-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><l></l></list></block></list></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>cubic-in</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportVariadicProduct"><list><custom-block s="-- %anyUE"><block var="t"/></custom-block><block var="t"/></list></block><block var="t"/></list></block><l>1</l></list></block></autolambda><list><l>t</l></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>cubic-in-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicLessThan"><list><l></l><l>.5</l></list></block><block s="reportVariadicProduct"><list><l>4</l><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><l></l></list></block></list></block></list></block><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportVariadicProduct"><list><block s="reportDifference"><l></l><l>1</l></block><block s="reportDifference"><block s="reportVariadicProduct"><list><l>2</l><l></l></list></block><l>2</l></block></list></block><block s="reportDifference"><block s="reportVariadicProduct"><list><l>2</l><l></l></list></block><l>2</l></block></list></block><l>1</l></list></block></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quart-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><l></l></list></block></list></block></list></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quart-in</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportDifference"><l>1</l><block s="reportVariadicProduct"><list><custom-block s="-- %anyUE"><block var="t"/></custom-block><block s="reportVariadicProduct"><list><block var="t"/><block s="reportVariadicProduct"><list><block var="t"/><block var="t"/></list></block></list></block></list></block></block></autolambda><list><l>t</l></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>quart-in-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicLessThan"><list><l></l><l>.5</l></list></block><block s="reportVariadicProduct"><list><l>8</l><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><block s="reportVariadicProduct"><list><l></l><l></l></list></block></list></block></list></block></list></block><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportDifference"><l>1</l><block s="reportVariadicProduct"><list><l>8</l><block s="reportVariadicProduct"><list><custom-block s="-- %anyUE"><block var="t"/></custom-block><block s="reportVariadicProduct"><list><block var="t"/><block s="reportVariadicProduct"><list><block var="t"/><block var="t"/></list></block></list></block></list></block></list></block></block></autolambda><list><l>t</l></list></block><list><l></l></list></block></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>sine-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>sin</option></l><block s="reportVariadicSum"><list><l>90</l><block s="reportVariadicProduct"><list><l></l><l>90</l></list></block></list></block></block></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>sine-in</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportMonadic"><l><option>sin</option></l><block s="reportVariadicProduct"><list><l></l><l>90</l></list></block></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>sine-in-out</l></list></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="reportQuotient"><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>cos</option></l><block s="reportVariadicProduct"><list><l></l><l>180</l></list></block></block></block><l>2</l></block></autolambda><list></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="choice"/><l>elastic</l></list></block><script><block s="doReport"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>p</l></list></block><block s="doSetVar"><l>p</l><l>0.3</l></block><block s="doReport"><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportPower"><l>2</l><block s="reportVariadicProduct"><list><l>-10</l><l></l></list></block></block><block s="reportMonadic"><l><option>sin</option></l><custom-block s="degrees %n"><block s="reportVariadicProduct"><list><block s="reportDifference"><l></l><block s="reportQuotient"><block var="p"/><l>4</l></block></block><block s="reportQuotient"><block s="reportVariadicProduct"><list><l>2</l><custom-block s="PI"></custom-block></list></block><block var="p"/></block></list></block></custom-block></block></list></block><l>1</l></list></block></block></script><list></list></block></block></script><list></list></block><custom-block s="error %s"><block s="reportJoinWords"><list><l>unknown easing function "</l><block var="choice"/><l>"</l></list></block></custom-block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; $nl in %&apos;time&apos; secs easing %&apos;easing&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _&#xD;ca:per _ = _ fins _ _ en _ segons de forma _ _&#xD;pt:para _ de _ a _ _ em _ s de forma _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">0</input><input type="%n">100</input><input type="%n">1</input><input type="%txt" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>i</l><block var="start"/></block><custom-block s="animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing"><block s="reifyScript"><script><block s="doSetVar"><l>i</l><l></l></block><block s="doRun"><block var="action"/><list></list></block></script><list></list></block><block s="reifyReporter"><autolambda><block var="i"/></autolambda><list></list></block><block s="reportDifference"><block var="end"/><block var="start"/></block><block var="time"/><block s="reportIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><block var="easing"/><custom-block s="easing %txt"><block var="easing"/></custom-block></block></custom-block></script></block-definition><block-definition s="touching sprite %&apos;sprite&apos; with this costume %&apos;costume&apos;" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite<options>§_objectsMenu</options></input><input type="%s"><options>§_costumesMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>savedCst</l><l>isTouching?</l></list></block><block s="doSetVar"><l>savedCst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="costume"/></block><block s="doSetVar"><l>isTouching?</l><block s="reportTouchingObject"><block var="sprite"/></block></block><block s="doSwitchToCostume"><block var="savedCst"/></block><block s="doReport"><block var="isTouching?"/></block></script></block-definition><block-definition s="ConversionAngle 0-360 %&apos;Angle&apos;" type="reporter" category="operators"><comment x="0" y="0" w="330" collapsed="false">Prend n&apos;importe quel angle et le ramène dans un intervalle entre 0 et 360 degrés (l&apos;angle prut être une fraction (ex: -10.5 degrés)&#xD;&#xD;Ex:&#xD;   -90 degrés deviendra 270 degrés&#xD;   -45 degrés deviendra 315 degré s&#xD;   360 degrés deviendra 0 degrés (1 tour)&#xD;   361 degrés deviendra 1 degrés&#xD;   720 degrés deviendra 0 degrés (2 tours)&#xD;   -0.5 degrés deviendra 359.5 degrés&#xD;&#xD;   Si l&apos;angle est la résultante d&apos;une opération, le résultat sera converti:&#xD;   formule: angle de direction = (angle de direction - 90)  &#xD;&#xD;Dans le cas ou l&apos;angle de départ est = à 45 degrés si on soustrait 90 degrés on arrive à un résultat de -45 degrés : Le retour de cette fonction sera donc de 315 degrés au lieu de -45</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doUntil"><block s="reportVariadicGreaterThanOrEquals"><list><block var="Angle"/><l>0</l></list></block><script><block s="doChangeVar"><l>Angle</l><l>360</l></block></script></block><block s="doReport"><block s="reportModulus"><block var="Angle"/><l>360</l></block></block></script></block-definition><block-definition s="circle radius %&apos;MyRadius&apos; x %&apos;x&apos; y %&apos;y&apos;" type="command" category="pen"><variables><list struct="atomic" id="7654">MyX,MyY</list></variables><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="up"></block><block s="doSetVar"><l>MyX</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block></block><block s="doSetVar"><l>MyY</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block><block s="down"></block><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block><l>1</l><block var="MyRadius"/><script><block s="doSetVar"><l>MyX</l><block var="i"/></block><block s="doSetVar"><l>MyY</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block></script></custom-block><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><block var="MyRadius"/><l>-1</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block><script><block s="doSetVar"><l>MyX</l><block var="i"/></block><block s="doSetVar"><l>MyY</l><block s="reportMonadic"><l><option>neg</option></l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></block></block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="step"/><l>0</l></list></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="Create new costume from pentrails" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doAddToList"><block s="reportPenTrailsAsCostume"></block><block s="reportGet"><l><option>costumes</option></l></block></block></script></block-definition><block-definition s="turn around radius x %&apos;x&apos; y %&apos;y&apos; radius %&apos;MyRadius&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">130</input></inputs><script><custom-block s="let %upvar be %s"><l>MyX</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block></custom-block><custom-block s="let %upvar be %s"><l>MyY</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></custom-block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block><l>1</l><block var="MyRadius"/><script><block s="doSetVar"><l>MyX</l><block var="i"/></block><block s="doSetVar"><l>MyY</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block></script></custom-block><custom-block s="for %upvar = %n step %n to %n %cs"><l>i</l><block var="MyRadius"/><l>-1</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block><script><block s="doSetVar"><l>MyX</l><block var="i"/></block><block s="doSetVar"><l>MyY</l><block s="reportMonadic"><l><option>neg</option></l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></block></block><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block></script></custom-block></script><scripts><script x="401.5126953125" y="180.2"><block s="up"></block></script><script x="404.5126953125" y="293.2"><block s="down"></block></script><script x="405" y="337.46666666666664"><block s="up"></block></script><script x="396" y="389.6333333333334"><block s="doWarp"><script></script></block></script></scripts></block-definition><block-definition s="turn around radius x %&apos;x&apos; y %&apos;y&apos; radius %&apos;MyRadius&apos; (2)" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">130</input></inputs><scripts><script x="412.5126953125" y="180.2"><block s="up"></block></script><script x="415.5126953125" y="293.2"><block s="down"></block></script><script x="416" y="337.46666666666664"><block s="up"></block></script><script x="407" y="389.6333333333334"><block s="doWarp"><script></script></block></script><script x="10" y="128.63333333333333"><custom-block s="let %upvar be %s"><l>myX</l><block s="reportMonadic"><l><option>neg</option></l><block var="MyRadius"/></block></custom-block><custom-block s="let %upvar be %s"><l>myY</l><block s="reportMonadic"><l><option>sqrt</option></l><block s="reportDifference"><block s="reportPower"><block var="MyRadius"/><l>2</l></block><block s="reportPower"><block var="MyX"/><l>2</l></block></block></block></custom-block></script><script x="42" y="219.13333333333338"><block s="gotoXY"><block s="reportVariadicSum"><list><block var="MyX"/><block var="x"/></list></block><block s="reportVariadicSum"><list><block var="MyY"/><block var="y"/></list></block></block></script></scripts></block-definition><block-definition s="%&apos;#&apos; repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;ca:repeteix _ fins _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script></block-definition><block-definition s="Fully On Stage (sprite)?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block s="reportGet"><l><option>self</option></l></block><l><option>sprite</option></l></block><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThanOrEquals"><list><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>right</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>left</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicGreaterThanOrEquals"><list><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>bottom</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block><block s="reportVariadicLessThanOrEquals"><list><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>self</option></l></block></block><block s="reportAttributeOf"><l><option>top</option></l><block s="reportGet"><l><option>stage</option></l></block></block></list></block></list></block></block></script><script><custom-block s="error %s"><l>not a sprite</l></custom-block></script></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="145,26,68,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="8127"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="8128"></list></costumes><sounds><list struct="atomic" id="8129"></list></sounds><variables><variable name="@SaveShown"><bool>true</bool></variable></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Ant" idx="1" x="-499.99999999999994" y="0" heading="45" scale="0.2" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="94.35,22.644,0,1" pen="tip" id="8134"><costumes><list id="8135"><item><ref mediaID="Ant_cst_ant-empty"></ref></item><item><ref mediaID="Ant_cst_ant-full"></ref></item><item><ref mediaID="Ant_cst_ant-spriteDetection"></ref></item><item><ref mediaID="Ant_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="8136"></list></sounds><blocks><block-definition s="go for food %&apos;food&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite<options>§_objectsMenu</options></input></inputs><script><block s="doFaceTowards"><block s="reportObject"><block var="food"/></block></block><block s="clear"></block><block s="up"></block><block s="setScale"><l>20</l></block><custom-block s="let %upvar be %s"><l>rl</l><l>-1</l></custom-block><block s="doWarp"><script><custom-block s="%upvar repeat %cs until %boolUE"><l>#</l><script><block s="setHeading"><l><option>random</option></l></block><block s="doSetVar"><l>rl</l><block s="reportRelationTo"><l><option>ray length</option></l><block s="reportObject"><block var="food"/></block></block></block></script><block s="reportVariadicOr"><list><block s="reportVariadicNotEquals"><list><block var="rl"/><l>-1</l></list></block><block s="reportVariadicGreaterThan"><list><block var="#"/><l>2000</l></list></block></list></block></custom-block><block s="doIf"><block s="reportVariadicLessThan"><list><block s="reportListAttribute"><l><option>length</option></l><block s="reportAskFor"><block s="reportObject"><block var="food"/></block><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicNotEquals"><list><l></l><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>0</l></list></block></list></block></autolambda><list></list></block><block s="reportGetImageAttribute"><l><option>pixels</option></l><l><option>current</option></l></block></block></autolambda><list></list></block><list></list></block></block><l>10</l></list></block><script><block s="doBroadcast"><l>init food</l><list><block var="food"/></list></block><block s="doBroadcast"><l>aim a new food</l><list><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportAttributeOf"><l>myFood</l><block var="value"/></block><block var="food"/></list></block></autolambda><list><l>value</l></list></block><block s="reportAskFor"><l>Ant</l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>clones</option></l></block></autolambda><list></list></block><list></list></block></block></list></block></script><list></list></block></script></block><block s="doSwitchToCostume"><l>ant-empty</l></block><block s="doRepeat"><custom-block s="%n div %n"><block var="rl"/><block var="mySpeed"/></custom-block><script><block s="forward"><block var="mySpeed"/></block></script></block><block s="doWarp"><script><block s="setScale"><l>30</l></block><block s="doSwitchToCostume"><l>ant-spriteDetection</l></block><block s="doCutFrom"><block s="reportObject"><block var="food"/></block></block><block s="doSwitchToCostume"><l>ant-full</l></block><block s="setScale"><l>20</l></block></script></block></script><scripts><script x="675.560546875" y="338.0333333333335"><block var="food"/></script></scripts></block-definition><block-definition s="return home %&apos;home&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite<options>§_objectsMenu</options></input></inputs><script><block s="setScale"><l>20</l></block><block s="doSwitchToCostume"><l>ant-full</l></block><block s="doFaceTowards"><block s="reportObject"><block var="home"/></block></block><block s="doDeclareVariables"><list><l>rl</l></list></block><block s="doSetVar"><l>rl</l><block s="reportRelationTo"><l><option>ray length</option></l><block var="home"/></block></block><block s="doRepeat"><custom-block s="%n div %n"><block var="rl"/><block var="mySpeed"/></custom-block><script><block s="forward"><block var="mySpeed"/></block></script></block><block s="forward"><block s="reportModulus"><block var="rl"/><block var="mySpeed"/></block></block><block s="doSwitchToCostume"><l>ant-empty</l></block></script></block-definition></blocks><variables><variable name="myBase"><l>0</l></variable><variable name="myFood"><l>0</l></variable><variable name="mySpeed"><l>5</l></variable></variables><scripts><script x="20" y="17.333333333333258"><block s="receiveGo"></block><block s="doWait"><l>1</l></block><block s="doSwitchToCostume"><l>ant-empty</l></block><block s="gotoXY"><l>-500</l><l>0</l></block><block s="doWarp"><script><block s="doRepeat"><l>10</l><script><block s="createClone"><l><option>myself</option></l></block><block s="doWait"><l>0</l></block></script></block></script></block></script><script x="20" y="234.16666666666657"><block s="receiveOnClone"></block><block s="doSetVar"><l>mySpeed</l><block s="reportRandom"><l>1</l><l>2</l></block></block><block s="doSetVar"><l>myBase</l><block s="reportListItem"><l><option>random</option></l><block var="baseList"/></block></block><block s="doGotoObject"><block s="reportObject"><block var="myBase"/></block></block><block s="doBroadcastAndWait"><l>aim a new food</l><list><block s="reportGet"><l><option>self</option></l></block></list></block></script><script x="20" y="384.6666666666666"><block s="receiveMessage"><l>aim a new food</l><list></list></block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="doSetVar"><l>myFood</l><block s="reportListItem"><l><option>random</option></l><block var="foodList"/></block></block><block s="doForever"><script><custom-block s="go for food %s" scope="local"><block s="reportObject"><block var="myFood"/></block></custom-block><custom-block s="return home %s" scope="local"><block s="reportObject"><block var="myBase"/></block></custom-block></script></block></script></scripts></sprite><sprite name="Food" idx="2" x="-499.9999999999999" y="0" heading="217.64" scale="0.54" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="150.45,126.37800000000001,0,1" pen="tip" id="8402"><costumes><list id="8403"><item><ref mediaID="Food_cst_Untitled"></ref></item><item><ref mediaID="Food_cst_Untitled(3)"></ref></item><item><ref mediaID="Food_cst_Untitled(2)"></ref></item><item><ref mediaID="Food_cst_Untitled(4)"></ref></item></list></costumes><sounds><list struct="atomic" id="8404"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><block s="receiveGo"></block><block s="doSwitchToCostume"><l>Untitled</l></block><block s="gotoXY"><l>-500</l><l>0</l></block><block s="doSetVar"><l>foodList</l><block s="reportNewList"><list></list></block></block><block s="doRepeat"><l>5</l><script><block s="doAddToList"><block s="newClone"><l><option>myself</option></l></block><block var="foodList"/></block></script></block></script><script x="20" y="195"><block s="receiveOnClone"></block><block s="doBroadcast"><l>init food</l><list><block s="reportGet"><l><option>self</option></l></block></list><comment w="90" collapsed="false">init food is also called from ant...</comment></block></script><script x="20" y="293.8333333333333"><block s="receiveMessage"><l>init food</l><list></list></block><block s="doWarp"><script><block s="doSwitchToCostume"><block s="reportRandom"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="setScale"><block s="reportRandom"><l>30</l><l>60</l></block></block><block s="setHeading"><l><option>random</option></l></block><custom-block s="repeat %cs until %boolUE"><script><block s="doGotoObject"><l><option>random position</option></l></block></script><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportTouchingObject"><block s="reportConcatenatedLists"><list><block var="baseList"/><block s="reportGet"><l><option>other clones</option></l></block></list></block></block></block><custom-block s="Fully On Stage (sprite)?"></custom-block></list></block></custom-block></script></block></script></scripts></sprite><sprite name="Base" idx="3" x="-499.99999999999994" y="-5.684341886080802e-14" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="0,74.25600000000007,142.8,1" pen="tip" id="8484"><costumes><list id="8485"><item><ref mediaID="Base_cst_Untitled"></ref></item><item><ref mediaID="Base_cst_Untitled(2)"></ref></item><item><ref mediaID="Base_cst_Untitled(3)"></ref></item></list></costumes><sounds><list struct="atomic" id="8486"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><block s="receiveGo"></block><block s="doSwitchToCostume"><l>Untitled</l></block><block s="gotoXY"><l>-500</l><l>0</l></block><block s="doSetVar"><l>baseList</l><block s="reportNewList"><list></list></block></block><block s="doRepeat"><l>3</l><script><block s="doAddToList"><block s="newClone"><l><option>myself</option></l></block><block var="baseList"/></block></script></block></script><script x="20" y="234"><block s="receiveOnClone"></block><block s="doWarp"><script><block s="doSwitchToCostume"><block s="reportRandom"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block s="reportGet"><l><option>costumes</option></l></block></block></block></block><block s="setScale"><block s="reportRandom"><l>80</l><l>100</l></block></block><custom-block s="repeat %cs until %boolUE"><script><block s="doGotoObject"><block s="reportNewList"><list><block s="reportRandom"><l>-180</l><l>180</l></block><block s="reportRandom"><l>-150</l><l>170</l></block></list></block></block></script><block s="reportNot"><block s="reportTouchingObject"><block s="reportGet"><l><option>neighbors</option></l></block></block></block></custom-block></script></block></script></scripts></sprite><watcher var="foodList" style="normal" x="12.698412698412312" y="12.698412698412682" color="243,118,29" hidden="true"/><watcher var="baseList" style="normal" x="12.698412698412312" y="39.365081904761894" color="243,118,29" hidden="true"/><watcher scope="Ant" var="myBase" style="normal" x="15.335463258785921" y="15.335463258785943" color="243,118,29" hidden="true"/><watcher scope="Ant" var="myFood" style="normal" x="15.335463258785921" y="47.539939169329074" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="foodList"><list struct="atomic" id="8558">0,0,0,0,0</list></variable><variable name="baseList"><list struct="atomic" id="8559">0,0,0</list></variable></variables></scene></scenes></project><media name="ant v1.1" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="ant-empty" center-x="73" center-y="67.51666666666665" image="data:image/png;base64,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" mediaID="Ant_cst_ant-empty"/><costume name="ant-full" center-x="73.5" center-y="67.51666666666665" image="data:image/png;base64,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" mediaID="Ant_cst_ant-full"/><costume name="ant-spriteDetection" center-x="69.5" center-y="25.51666666666665" image="data:image/png;base64,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" mediaID="Ant_cst_ant-spriteDetection"/><costume name="Untitled" center-x="3" center-y="4.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAJCAYAAAARml2dAAAAAXNSR0IArs4c6QAAAElJREFUGFe9zbENgEAQA8F5CiGCBIn+oALoD4mEj2gEdOK+BZys5Q1cfOmxZN9xF3Q4MKU4MYeIPMmG8qe4MORzxdjOY1xTbKgvsMENDIsRNcEAAAAASUVORK5CYII=" mediaID="Ant_cst_Untitled"/><costume name="Untitled" center-x="32" center-y="41.51666666666665" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABQCAYAAABFyhZTAAAAAXNSR0IArs4c6QAAAxxJREFUeF7tnL9y3CAQxpeGSZkmle9qu3D8Pjyh3scuYrt0nBRuXHpGhfGgkTyIAxYBi0DStTrB/vb7WP5Idww28JFcSB2D9R1zYTkvtJAHE9SAvgGAJ5OjVeCfkot3TBTWdxfQzQH7VLUlwIRuCfiX5OINU9UBfQaAV3WtGeClyl6M3bGQ7Ql4GM+7AR7s3HfnJoBT7TybrmKKQOo9CsC3ODDbbxLYFjTruxMA/MMS2AxwSKABSjPJxSeWlNDrJGM4BHQKEANe0lYIdFbgmOCaBI4BbVXhK8nFsGSL/SAK/5BcfMS2bV1mpjSWomyIwjnaz7I9zBUINi3l6kdP7qKiRRGAy2G5+xqXliwImKLzKYAqgKkAXVs2GzRFDKpAzhSm6MRXFD0V+iS5+JtSUK0VWgO+llw85u4Aa88FTJX4SWGSbGKwvjFMCkzV+AFsyUBJS099qa3X7NQ+RJlc39kVMOu7KwD4X3JKGurGGgr7NgxU8axq6QNY8zW5wgBQfB5eVeEpuVSZdS3xSm4a9EWOvpa+lVw85JpyItfQQJX476JlBkbVod5PFZY2wG8kF3+o1K4RWLGSQdcKTAatnuJND6hLDSnnGC4dQOn+0DMtqiLmUJnsIGJ1hc0DAKrETg6qAphqFvAtdlazdElY10rLGgO11UqBT+9r7UbhUWX8pZatKPxdvDBL7Q2YbF7EEk113TeGix8MUEHOdmqlN+IloLx78QN4zMDWihVapfcGnPx2ztpj1dW/tUpvVd1htWXLxAFcqz8j4joUHpN2lly8RCSw+lt8S0uyY9o1s+LdD2+xeO3qAMA5LRmWK/aQrYTVUYVVEFuydhAwAGymaocCK6Gbr9rq/ewlwM1DX7xNG1g0mlU6FnjIS2uFjPXdHQA8LLW0boLfkov7QFes+jX9AXwKsIKo+mST7D8AarQ367trAHg2rZWqsN5eNcXMpix6iBc56LL+EjQmBuy3jDkVnsVX2uY+VfXAyIBLTl2YqsWAAYD0YdwSUKoxbB12ue0dal9bMKSWpjgCToENPQCIKZbB9yxRP8bCZiBfNKWjPHx/dooAAAAASUVORK5CYII=" mediaID="Food_cst_Untitled"/><costume name="Untitled(3)" center-x="36.5" center-y="58.5" image="data:image/png;base64,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" mediaID="Food_cst_Untitled(3)"/><costume name="Untitled(2)" center-x="25" center-y="55.5" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABvCAYAAACuL5OYAAAAAXNSR0IArs4c6QAABQpJREFUeF7tnM+PFEUUx79v4x+hIheNYQ94ApRw2qPszgwkmnDhQKKJ3ji44EYw7BrxN3fChTvxtD0DazjAQRMCgYuJUUjwssD8ETDllFO9W9PTPV1d/V51zWT7trNVNe9T7716r17VNCHnUWjtA+hXAEetf/8O0KeEzX/y+jT9GeWDdL4A1C+Owt0D1MeE7jPH9iLNJkAUOgcAdRfA6x7f2JjWxkAUjr8FvPbAguj7A736hHDzscdkeHXJgLTWAPrejOQLkQrSB9ThUCa3A6Kw8jaw8IenBopmcQt4dTaEZiyQ9i0AHzJpwwbrA7Qkvdr9D6Jw4gNgcM/LON07ia5uBqTzNaC+cZfJuWXGz2iVsHnFuXeFhgak3QOwXKFflaZa0yawqnVCd6NKZ9e2FMisUnmuEZLPXIWr0o4UxMyqQA71J4CPCN0nVQQta0sKrUsArZc1ZP5/j5C0OMdsCgTA4DCh95ALpkEQXCQkl+cBJCEkHU4QO7/iGtdxnME7hN5Tx8ZTm+nldz8wuM+cY7nK1gdeHiHc2nbtUNQuDYiLAK5ndoR1x57W3474a4Tkx7pflrOxartCvQDwRl0BhpkeS7TP3epq4RROvAcMtgC8WV/YaSPQBmGzdhwrBMl+tULrXYAkdnwsfuIEkrMF5lASq584grS/BPCDkb7uFjhnEur7SSmIkDYyMPX9xAGEtSBRYJJhQAJkx0FAOuuAusTh3cVj7IHszI2Dj8yNRubG2UNkxwF8ZJR3tXXl46qcwwcDGStQ6COHJV6ocCDnAPqJV3h7tGAgKweBhd/kUvpAICM/GVu9uJVzg5CcqjNoaRxJBw+wt3+fkOjTMq/HGcSsXtltMGdKv0VIjntRYFgrrdpRWDPeWqkMIhxXvKuPniBShW//naIniFgieRdQp31OgmMD0W7rdTwXC8jz3WDrZ16xgFiLp1+UjxAEOjYdIyT/VgkNMYHYwfXmMMqvzCpIVu5KwTEmjWRBKgXHmEEqFbdjBPEqbscIYpmYe0yJHEQvxW5njLGC2Ob1F6BOll35iBUku4KVxpVZAdFgh4YXDB4VBclZApkaV2YJZKrjzwKIU1zxBAlRoc/1hkKteIKEqNCPgZRqxQvEVFLOmPsr+k/O+lZJ9p4f7WuABNdKCphbXvUGMVpZBfCz+QamSzZO26mJvUpNkMa0MhFTaoEYrVwA8K3TPLI1mixQcIB8BYDtkqUj60QhjwPkyPA6ur5KGPgZL+TVBjHmZf9kQxKosJDHBdKAeY37CRdIA+YlABLYvIzpioFInZkUudx4qsJiWiONiJ2ZFJCIaWQPxHO53tPI9ImbIx+RvkGUnUgx02oJ3yAKBiJ9gygQSPhYImRacwYS0uFFNRLS4YVyrZFpiTt8YaGOLWlM1xSFdohN1sRrGCRAQmyyLhCS7+wFmR0kZ5MlUE4VKAflZWDGV27L/UgzEIjRiuA19KAgomco/AW6wh315G+AuX2lC6jP02uDIs5uLcX6nvAdhlf4pENaBTr90W61URTE+IogzG50FwcRgkk1tHOmGAREAGYiVQkGUgDjWUGxu43MKyiIDMwopgQHsWCY3mjQIMju8sxxBhkBSIl2ugBc3mZjojyDu9Udov5rGXRgjOipCJQ5hosIZGRquX5TkqdpP4nwUXB+pYmRPlKQKUmnNe20CKi/Rx9EDuIec3R0n5Fnurmp8zMDkjE3KyugbYCW/wOt00bqi8Pf0QAAAABJRU5ErkJggg==" mediaID="Food_cst_Untitled(2)"/><costume name="Untitled(4)" center-x="52" center-y="54" image="data:image/png;base64,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" mediaID="Food_cst_Untitled(4)"/><costume name="Untitled" center-x="39" center-y="1.5166666666666515" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAtCAYAAAA5reyyAAAAAXNSR0IArs4c6QAAA0RJREFUaEPtmz2LFTEUhp/9EyJqJYgggoLKilhYiR+FjXZWYqGl7LoIIq42fmNnZWuljSD4UVmoCCIKuwhaq4i/wjkycznOzkzmZJLcXGdT3nuSOXnynuQkk5kjXdkMPAH2q0e+Ac4CXz3d2A48BA6W9Ye2Z3ZjzlzDv8ICcLeh+i/gkAfELcAHYGOLS++Bk8APf5fdNVMCvFq4s9zikhWiqPkZsNvRxY/AiZgQUwGsq+UScBMQcJWC+kIUeE+BPQreBeB+C8xF4J5bS34WqQAKsBulixqa/GSBeAq4DOxS3f1ezIMyQLr8BDap5+2NpcJUALvCtw7RIoUmeFV9PTAygLcsDfe1TQFQQu4VsMPhVF2ZffvQx07m3mt9DK02KQC2rb5WX4fYy+DsK1ImUWzQkgKgDt+ukAvasYb59kWZcwZNa1IAlPARiDmU4CtyCoCPy4R2WgD1ihx8LowNcB6QHUEuRRaStmTey8fYAK8A1708i1Mp+GISG6Ar/4uDaW2r0XLCmABdm/1U8OrPCarCmAC7tm/TgBdFhTEB5hK+TYMVbDWOBTDX8K1g9j35cUZKLIC5ha8Gp4/PBm/vYgHMOXyDzoUxAG4F3nYctTvDIqHB4BU5BsDnxe7jSMNmPiEX56O0CgcdMoQGuA345nQ/PwPvQ4aQAOUV4+sZCV0ZwiDH/qEA1tOWmKfLIfU7eEEJBTDXtMUC2yu5DgGw7zsPS2emYfsFOGx9excCYA7vPEIBNy8mIQDqE+fU7zxCgNOLiSyCpy0qHApwVtOWLvCm6yBDAOZ+YGBRp1ZhVe9TeZtCIqy1+AKUnO+Rup8yK2lLF4smiGL/ubgFdrzMG9fU9wE4awmzRYlttkvAnaY/rQDHCK/i1njf0AKwDu9/CFuXOut9lDuJkupMbtT2BThGeFp5+lqy/D5RYx+AY4bXpVBR4zkXwHV4/yIU5Wk1LmqATbfodfUxzHmuObH+/7IGeB540NLCOrxmMEsVwK5dxbvihukB69CMwF72/ccEYNsnA78LRW4YAQifLv6FB6wIwFyOoyZO+fRoWnUE4EXgdiIHZDo44/FVUiL37I8RgDuBl+q7Ct2KqOJoccN01d70OGr8ATtyqt3/iKZ5AAAAAElFTkSuQmCC" mediaID="Base_cst_Untitled"/><costume name="Untitled(2)" center-x="39" center-y="3.0166666666666515" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAuCAYAAAC/OZ4cAAAAAXNSR0IArs4c6QAABKxJREFUaEPtm03IVkUUx3+6qIXVqkjMWhVlGyEKXdQuMCgoFwUakZREiwgXJmpRCfZBibQoBHERkV8VkSGkfUDQB6ISrYLEhdinRWBWC9vY/GHm7XS7HzPvzL3vfXwdeOB53ztz5szvnpk5c+Y8c8gvC4F3gCUVUV8ADwPf5ncxXglzCqi2Fni5Q45gbgBeApaaup8DqzMgXw/sAG71MnPlJeMoAfBZ4JnInv8GLjJ1TwK7gC3Ab5EyQrXL/EtZCVzj/yl573tZ3wFvAX8kyk2qngvwBuBT4MqkXv9b+U/g1USIlwKPAk+7dpc09P098AqwvU+IOQC19h018H4G5jcMRvVuNs8+Bm4HBE8AUiAK3iOujZaO0N8B4I6avn8EHgIOZrzg1qY5ALWmPe+lt8ELClhYhwxAPY+FeCNwJ7DGWdYCL/gM8GUFoKatQKu8C6zqywpzAKasffYtBpAWrIX4est6KIC3GcsTPBWth7YIoMYWXsx9zkv4oA8rHArg28C9LQMQ1AAxZZwCWIVXtXj9/RTwXIrg2LpDAfwVuKJDqaplxo4hpt5+4H4gWGxMm6g6QwEMyrRZTJTCiZXsursOeLP0WjhbAIr7ceCx0jvy0AATDahIdbsjbwReKCLVCxkC4DfuRKDdc6aKBbjJKSHvoVgZAmAxZQsIKr6ZzBaAdjMp6hP2DVBv/K4ClpMrwrpI7wEPlnJp+gZo33zToT8XTmz7Xqywb4B1p4LYAZeuZ62w2MmkT4Bjmb51L0K6KcCQGoP8n6zpArzaRUWOdMQBxzR9qzMhhM/kE2Yd76YDUEHUnS7ye5PXqiuU1ecZN3Wa26CFvmfvyKkAYyxPgxrz9C26I6cAVARaYBZHvPYxTl+rdrEgQwrAmNu3cGi/1ms7pulbBzDoO+0gQwpAG4H+AbiqxhK1KCvUPwmlSNg/FmDM2veiDxeFMPpMO85dL7FI2D8WYMwFkl1XpPzYAUrHbOc6BmDM3e9ul12wYuTrXpdF6t5GqShJF/FdAKtT91SD8xxz59E1gJl+rjE8kBqxbgNYdVu6HGYBGPrOowR0u5koi0HeRrQVNgEUvH3mtNGmqI04TzrAEz7NJDodpAlg1ec7H9yWNiOwVqh0kD3AMeAzd9yTgTSWJoAxPt8TPitrUtyWLoB6HtJB9P0nl36idLlPfAZZ7bSuA6hdVyli17X0+Bqw3OSnjPXEkbJGWiu07bT2K/RVm6BUBahd9yu3Dlze0fNZdz14cYp2E173I2BvXb5hFaB1mLvGfD5YXcoYlW+42aczTwViqwBjM66UaarPJJw2uiC1PZeRnHZpxPJKVLSxfAh8HazRAlQlPVwU0WM1VTeiycRWkeUFgGEQwRp3WYCx4apzPvduYolkKG5hyhoftwB1X3p3hvDZ0LRqjRsDwFuAw7OBQOExPhkAKmuplwzOwgqPSZyOrasEUN73ev+ZazT8y/2AZp4L8ej3FvIPL5R/CQjeNpdevFUAlwFK7K7+RCEAHAqclNJ16S9DdZjRz+9BVwGM3X0z+ptqKmtWlKcuI2BKqRIdDSVDAO8B3qgcpEP/sgrlFSvYWKLop1hNAEvIH1zGPzqOFOwNLFKXAAAAAElFTkSuQmCC" mediaID="Base_cst_Untitled(2)"/><costume name="Untitled(3)" center-x="48" center-y="2.0166666666666515" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAAAuCAYAAABDLLXWAAAAAXNSR0IArs4c6QAABAFJREFUeF7tm1vIDVEUgL9fhFzjwV1Jub9JeeDNrXgll5IkSRShXAp5UeLPA4k8UEiSIuX6QHkQyhO5lUISuZNrmPW3R9tv5sysfWb2nHPm7Ldp9lp7rW/W2WfvtdduobbaIOAkMNEy6xqwBLjvaOpI4CAwychXq09tRotaInsBG8I9oBcwwBrmCXAM2Am8Vg7fE9gAzAeGGlnRd8boegqcAD4q9aq6Fw1ZAF8B+idY/QnYowTdA1gGbA7kusfofwbsBg7kCbooyO1/wiGDr0AX83AZmAIIYIGkAS2AlwYya60PeB6YEQH7ObAYuKAKT0XnIiBHRe8LYAuwywJ63YIsLqUFPQaYCawKInSgYfEF+AD0s9jIFCEfQ9opYFFe0ewb8uAAwM2Y6eExMMw4HUZvyESebdCHKszPAnmyNcY3oHNE4H0PPuxv8070zwHOKQI0dVffkNcHTm2PAZlktA06qa/L+7Nm/r7tIlxJxjdkmRK2GoPEqVlKh9pHuFI8VfdtwKVgqpKlXibNN+TDwEJjuax7ZX6u1SbT2nTgbbUG+oTcCqyu1mDP8hIU8odYVfMFebZZ9FdlbEHCVUe0L8h3gdEFQcpi2L3ACldFviDLUqme28Ngaz/C1YEm5PTknFk5C6a3ra2nbF3tpI9SvCa6O7NyFlS6LetOyUPUc3Nm5SyopCUbENmI1HObBxx3ccAXZHun52JnLcjcAia4GOIDcqWkkIvNRco48XISUnppJ4WUojXXfYE5pVEZljfktCcfKqML7Ow0ZeQJuZGmCfu7qpmpBRRR1EjThO32vuBg9gFwx6REE5HkCbkRVhRJAG+Yc8OK6dC8IMs+/2qKU+gkJ+rh/ZFgN7u/UpI/D8hDAPnCScf89QBQY2NsSjRryLKaOAqM11jXQH0jp48sIUetJn4CHRsIYhpX/gOdFeSoCJY6BymTKmP759gqC8hRG46w+qeMgEOfpaxspTy4Qo6qvgyV+zi2L+Lj/QI6KAduy9y5Ql5jiv+UY9Z1dynrkv+Xrgov2rbhWshxhYKKceu6q10/l9aRliTIU4GxQXlpb6CvqUGwy1BlapDy01FpRyxhv1jIfYCLJV7vZhkLsZClzmB5liOVWNd/kJsRnG00vAKGt5+TmxGcLeR3wFwbsvyxSY7UrkbPdshyattoQ25GcT5BsCmELDu4R9almHyGK59Wyd8sEsgC+LTjcu0H0MlceilrMigudASwHFW1CuRqtsifgW4eA1QMl3z1S49jug71PrRVIK8DdrhqykFObonKLyvq9ulfw3MYNzeVAnmcuSgY3nnTDibRJedcsibMosm13DjIWej3riMqdzHN5CvkjvOb4H6bVMlLfrjZHAn8AQ4gr90ygEDWAAAAAElFTkSuQmCC" mediaID="Base_cst_Untitled(3)"/></media></snapdata>