<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ndbx formatVersion="21" type="file" uuid="d92aa6bd-8aaf-41be-8c6e-d1e7ae9386c7">
    <property name="canvasHeight" value="1000"/>
    <property name="canvasWidth" value="1000"/>
    <property name="canvasX" value="0"/>
    <property name="canvasY" value="0"/>
    <node name="root" prototype="core.network" renderedChild="combine1">
        <node name="characters1" position="7.00,-12.00" prototype="string.characters"/>
        <node name="characters2" position="-4.00,-12.00" prototype="string.characters"/>
        <node name="colorize1" position="10.00,-4.00" prototype="corevector.colorize">
            <port name="fill" type="color" value="#00d400ff"/>
            <port name="stroke" type="color" value="#006403ff"/>
            <port name="strokeWidth" type="float" value="2.0"/>
        </node>
        <node name="colorize2" position="-1.00,-4.00" prototype="corevector.colorize">
            <port name="fill" type="color" value="#ff0000ff"/>
            <port name="stroke" type="color" value="#640000ff"/>
            <port name="strokeWidth" type="float" value="2.0"/>
        </node>
        <node name="colorize3" position="-12.00,-4.00" prototype="corevector.colorize">
            <port name="fill" type="color" value="#e1000045"/>
            <port name="stroke" type="color" value="#940000ff"/>
        </node>
        <node name="colorize4" position="-7.00,6.00" prototype="corevector.colorize">
            <port name="fill" type="color" value="#ffffffff"/>
        </node>
        <node name="combine1" position="-2.00,8.00" prototype="list.combine"/>
        <node name="disorder" position="13.00,-14.00" prototype="math.number">
            <port name="value" type="float" value="29.0"/>
        </node>
        <node name="disorder1" position="2.00,-14.00" prototype="math.number">
            <port name="value" type="float" value="22.0"/>
        </node>
        <node name="disorder2" position="-9.00,-14.00" prototype="math.number">
            <port name="value" type="float" value="106.0"/>
        </node>
        <node name="heart_size" position="-14.00,-12.00" prototype="math.number">
            <port name="value" type="float" value="131.0"/>
        </node>
        <node name="import_svg1" position="-15.00,-14.00" prototype="corevector.import_svg">
            <port name="file" type="string" value="Love_Heart.svg"/>
        </node>
        <node name="linearity" position="13.00,-12.00" prototype="math.number">
            <port name="value" type="float" value="373.0"/>
        </node>
        <node name="linearity1" position="2.00,-12.00" prototype="math.number">
            <port name="value" type="float" value="375.0"/>
        </node>
        <node name="linearity2" position="-9.00,-12.00" prototype="math.number">
            <port name="value" type="float" value="127.0"/>
        </node>
        <node name="rect1" position="-7.00,5.00" prototype="corevector.rect">
            <port name="width" type="float" value="1000.0"/>
            <port name="height" type="float" value="1000.0"/>
        </node>
        <node name="resolution" position="13.00,-10.00" prototype="math.number">
            <port name="value" type="float" value="300.0"/>
        </node>
        <node name="resolution1" position="2.00,-10.00" prototype="math.number">
            <port name="value" type="float" value="300.0"/>
        </node>
        <node name="resolution2" position="-9.00,-10.00" prototype="math.number">
            <port name="value" type="float" value="300.0"/>
        </node>
        <node name="scale1" position="7.00,-10.00" prototype="corevector.scale">
            <port name="scale" type="point" value="367.00,1080.00"/>
        </node>
        <node name="scale2" position="-4.00,-10.00" prototype="corevector.scale">
            <port name="scale" type="point" value="379.00,832.00"/>
        </node>
        <node name="scale3" position="-15.00,-10.00" prototype="corevector.scale">
            <port name="scale" type="point" value="40.00,40.00"/>
        </node>
        <node name="stack1" position="10.00,-3.00" prototype="corevector.stack">
            <port name="margin" type="float" value="-39.0"/>
        </node>
        <node name="stack2" position="-1.00,-3.00" prototype="corevector.stack">
            <port name="margin" type="float" value="6.0"/>
        </node>
        <node name="stack3" position="-12.00,-3.00" prototype="corevector.stack">
            <port name="margin" type="float" value="6.0"/>
        </node>
        <node name="string1" position="7.00,-14.00" prototype="string.string">
            <port name="value" type="string" value="Christmas"/>
        </node>
        <node name="string2" position="-4.00,-14.00" prototype="string.string">
            <port name="value" type="string" value="Merry"/>
        </node>
        <node name="textpath1" position="7.00,-11.00" prototype="corevector.textpath">
            <port name="text" type="string" value="O"/>
            <port name="font_name" type="string" value="MinionPro-Bold"/>
            <port name="font_size" type="float" value="48.0"/>
        </node>
        <node name="textpath2" position="-4.00,-11.00" prototype="corevector.textpath">
            <port name="text" type="string" value="O"/>
            <port name="font_name" type="string" value="MinionPro-Bold"/>
            <port name="font_size" type="float" value="63.0"/>
        </node>
        <node name="translate1" position="10.00,-2.00" prototype="corevector.translate">
            <port name="translate" type="point" value="-377.00,269.00"/>
        </node>
        <node name="translate2" position="-1.00,-2.00" prototype="corevector.translate">
            <port name="translate" type="point" value="-205.00,-77.00"/>
        </node>
        <node name="translate3" position="-12.00,-2.00" prototype="corevector.translate">
            <port name="translate" type="point" value="0.00,49.00"/>
        </node>
        <node name="y_wiggle" position="10.00,-6.00" prototype="core.network" renderedChild="group1">
            <node name="change_signA" position="-1.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="number1" position="8.00,2.00" prototype="math.number"/>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="number1"/>
            </node>
            <node comment="connect to make_point if you want Y values to drift" name="change_signB" position="3.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="multiply3" position="11.00,3.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="number1" position="8.00,1.00" prototype="math.number">
                    <port name="value" type="float" value="1.0"/>
                </node>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="multiply3.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="multiply3"/>
            </node>
            <node name="colorize2" position="-4.00,19.00" prototype="corevector.colorize">
                <port name="fill" type="color" value="#cc0000ff"/>
                <port name="strokeWidth" type="float" value="1.0"/>
            </node>
            <node name="connect1" position="-4.00,18.00" prototype="corevector.connect"/>
            <node comment="values range from 0 at top to specified disorder value at bottom" name="convert_range1" position="-3.00,5.00" prototype="math.convert_range">
                <port name="source_start" type="float" value="-104.0"/>
                <port name="source_end" type="float" value="4.0"/>
                <port name="target_end" type="float" value="6.0"/>
            </node>
            <node comment="maximum disorder, zero=no distortion" name="disorder" position="6.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="59.0"/>
            </node>
            <node comment="divide by 100 for smoother scrubbing" name="divide1" position="9.00,3.00" prototype="math.divide">
                <port name="value1" type="float" value="119.0"/>
                <port name="value2" type="float" value="100.0"/>
            </node>
            <node comment="divide by ten for smoother scrubbing" name="divide2" position="6.00,3.00" prototype="math.divide">
                <port name="value2" type="float" value="10.0"/>
            </node>
            <node name="drift" position="-4.00,17.00" prototype="core.network" renderedChild="translate1">
                <node name="translate1" position="-8.00,13.00" prototype="corevector.translate"/>
                <port childReference="translate1.translate" description="The amount of translation." label="" name="translate" range="list" type="point" value="0.00,0.00" widget="point"/>
                <port childReference="translate1.shape" description="The input shape." label="" name="shape" range="list" type="geometry" widget="none"/>
            </node>
            <node name="get_Y_vals" position="-1.00,-2.00" prototype="core.network" renderedChild="take_every1">
                <node name="make_strings1" position="-1.00,-3.00" prototype="string.make_strings">
                    <port name="separator" type="string" value=","/>
                </node>
                <node name="rest1" position="-1.00,-2.00" prototype="list.rest"/>
                <node name="take_every1" position="-1.00,-1.00" prototype="list.take_every">
                    <port name="n" type="int" value="2"/>
                </node>
                <port childReference="make_strings1.string" description="" label="" name="string" range="value" type="string" value="Alpha;Beta;Gamma" widget="string"/>
                <conn input="rest1.list" output="make_strings1"/>
                <conn input="take_every1.list" output="rest1"/>
            </node>
            <node name="group1" position="-4.00,20.00" prototype="corevector.group"/>
            <node comment="100 for linear gradient, higher for exponential" name="linearity" position="9.00,-9.00" prototype="math.integer">
                <port name="value" type="int" value="174"/>
            </node>
            <node name="lookup1" outputRange="list" position="-6.00,-5.00" prototype="data.lookup">
                <port name="key" type="string" value="points"/>
            </node>
            <node name="make_point1" position="1.00,14.00" prototype="corevector.make_point"/>
            <node name="max1" position="2.00,1.00" prototype="math.max"/>
            <node name="min1" position="-1.00,1.00" prototype="math.min"/>
            <node name="pow1" position="1.00,9.00" prototype="math.pow">
                <port name="value2" type="float" value="1.2"/>
            </node>
            <node name="random_numbers1" position="-1.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="128"/>
            </node>
            <node name="random_numbers2" position="3.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="176"/>
            </node>
            <node name="resample1" position="-6.00,-6.00" prototype="corevector.resample">
                <port name="method" type="string" value="amount"/>
                <port name="points" type="int" value="345"/>
                <port name="per_contour" type="boolean" value="true"/>
            </node>
            <node name="resoluiton" position="-2.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="100.0"/>
            </node>
            <port childReference="resample1.shape" description="The input shape." label="" name="shape" range="value" type="geometry" widget="none"/>
            <port childReference="disorder.value" description="" label="" name="maximum disorder" range="value" type="float" value="59.0" widget="float"/>
            <port childReference="linearity.value" description="" label="" name="linearity" range="value" type="int" value="174" widget="int"/>
            <port childReference="resoluiton.value" description="" label="" name="resolution" range="value" type="float" value="100.0" widget="float"/>
            <conn input="lookup1.list" output="resample1"/>
            <conn input="colorize2.shape" output="connect1"/>
            <conn input="convert_range1.source_start" output="min1"/>
            <conn input="convert_range1.source_end" output="max1"/>
            <conn input="drift.translate" output="make_point1"/>
            <conn input="drift.shape" output="lookup1"/>
            <conn input="connect1.points" output="drift"/>
            <conn input="change_signA.value" output="random_numbers1"/>
            <conn input="make_point1.x" output="change_signA"/>
            <conn input="change_signB.value" output="random_numbers2"/>
            <conn input="pow1.value1" output="convert_range1"/>
            <conn input="random_numbers1.end" output="pow1"/>
            <conn input="random_numbers2.end" output="pow1"/>
            <conn input="pow1.value2" output="divide1"/>
            <conn input="get_Y_vals.string" output="lookup1"/>
            <conn input="min1.values" output="get_Y_vals"/>
            <conn input="max1.values" output="get_Y_vals"/>
            <conn input="convert_range1.value" output="get_Y_vals"/>
            <conn input="divide1.value1" output="linearity"/>
            <conn input="group1.shapes" output="colorize2"/>
            <conn input="convert_range1.target_end" output="divide2"/>
            <conn input="resample1.points" output="resoluiton"/>
            <conn input="divide2.value1" output="disorder"/>
        </node>
        <node name="y_wiggle1" position="-1.00,-6.00" prototype="core.network" renderedChild="group1">
            <node name="change_signA" position="-1.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="number1" position="8.00,2.00" prototype="math.number"/>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="number1"/>
            </node>
            <node comment="connect to make_point if you want Y values to drift" name="change_signB" position="3.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="multiply3" position="11.00,3.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="number1" position="8.00,1.00" prototype="math.number">
                    <port name="value" type="float" value="1.0"/>
                </node>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="multiply3.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="multiply3"/>
            </node>
            <node name="colorize2" position="-4.00,19.00" prototype="corevector.colorize">
                <port name="fill" type="color" value="#cc0000ff"/>
                <port name="strokeWidth" type="float" value="1.0"/>
            </node>
            <node name="connect1" position="-4.00,18.00" prototype="corevector.connect"/>
            <node comment="values range from 0 at top to specified disorder value at bottom" name="convert_range1" position="-3.00,5.00" prototype="math.convert_range">
                <port name="source_start" type="float" value="-104.0"/>
                <port name="source_end" type="float" value="4.0"/>
                <port name="target_end" type="float" value="6.0"/>
            </node>
            <node comment="maximum disorder, zero=no distortion" name="disorder" position="6.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="59.0"/>
            </node>
            <node comment="divide by 100 for smoother scrubbing" name="divide1" position="9.00,3.00" prototype="math.divide">
                <port name="value1" type="float" value="119.0"/>
                <port name="value2" type="float" value="100.0"/>
            </node>
            <node comment="divide by ten for smoother scrubbing" name="divide2" position="6.00,3.00" prototype="math.divide">
                <port name="value2" type="float" value="10.0"/>
            </node>
            <node name="drift" position="-4.00,17.00" prototype="core.network" renderedChild="translate1">
                <node name="translate1" position="-8.00,13.00" prototype="corevector.translate"/>
                <port childReference="translate1.translate" description="The amount of translation." label="" name="translate" range="list" type="point" value="0.00,0.00" widget="point"/>
                <port childReference="translate1.shape" description="The input shape." label="" name="shape" range="list" type="geometry" widget="none"/>
            </node>
            <node name="get_Y_vals" position="-1.00,-2.00" prototype="core.network" renderedChild="take_every1">
                <node name="make_strings1" position="-1.00,-3.00" prototype="string.make_strings">
                    <port name="separator" type="string" value=","/>
                </node>
                <node name="rest1" position="-1.00,-2.00" prototype="list.rest"/>
                <node name="take_every1" position="-1.00,-1.00" prototype="list.take_every">
                    <port name="n" type="int" value="2"/>
                </node>
                <port childReference="make_strings1.string" description="" label="" name="string" range="value" type="string" value="Alpha;Beta;Gamma" widget="string"/>
                <conn input="rest1.list" output="make_strings1"/>
                <conn input="take_every1.list" output="rest1"/>
            </node>
            <node name="group1" position="-4.00,20.00" prototype="corevector.group"/>
            <node comment="100 for linear gradient, higher for exponential" name="linearity" position="9.00,-9.00" prototype="math.integer">
                <port name="value" type="int" value="174"/>
            </node>
            <node name="lookup1" outputRange="list" position="-6.00,-5.00" prototype="data.lookup">
                <port name="key" type="string" value="points"/>
            </node>
            <node name="make_point1" position="1.00,14.00" prototype="corevector.make_point"/>
            <node name="max1" position="2.00,1.00" prototype="math.max"/>
            <node name="min1" position="-1.00,1.00" prototype="math.min"/>
            <node name="pow1" position="1.00,9.00" prototype="math.pow">
                <port name="value2" type="float" value="1.2"/>
            </node>
            <node name="random_numbers1" position="-1.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="128"/>
            </node>
            <node name="random_numbers2" position="3.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="176"/>
            </node>
            <node name="resample1" position="-6.00,-6.00" prototype="corevector.resample">
                <port name="method" type="string" value="amount"/>
                <port name="points" type="int" value="345"/>
                <port name="per_contour" type="boolean" value="true"/>
            </node>
            <node name="resoluiton" position="-2.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="100.0"/>
            </node>
            <port childReference="resample1.shape" description="The input shape." label="" name="shape" range="value" type="geometry" widget="none"/>
            <port childReference="disorder.value" description="" label="" name="maximum disorder" range="value" type="float" value="59.0" widget="float"/>
            <port childReference="linearity.value" description="" label="" name="linearity" range="value" type="int" value="174" widget="int"/>
            <port childReference="resoluiton.value" description="" label="" name="resolution" range="value" type="float" value="100.0" widget="float"/>
            <conn input="lookup1.list" output="resample1"/>
            <conn input="colorize2.shape" output="connect1"/>
            <conn input="convert_range1.source_start" output="min1"/>
            <conn input="convert_range1.source_end" output="max1"/>
            <conn input="drift.translate" output="make_point1"/>
            <conn input="drift.shape" output="lookup1"/>
            <conn input="connect1.points" output="drift"/>
            <conn input="change_signA.value" output="random_numbers1"/>
            <conn input="make_point1.x" output="change_signA"/>
            <conn input="change_signB.value" output="random_numbers2"/>
            <conn input="pow1.value1" output="convert_range1"/>
            <conn input="random_numbers1.end" output="pow1"/>
            <conn input="random_numbers2.end" output="pow1"/>
            <conn input="pow1.value2" output="divide1"/>
            <conn input="get_Y_vals.string" output="lookup1"/>
            <conn input="min1.values" output="get_Y_vals"/>
            <conn input="max1.values" output="get_Y_vals"/>
            <conn input="convert_range1.value" output="get_Y_vals"/>
            <conn input="divide1.value1" output="linearity"/>
            <conn input="group1.shapes" output="colorize2"/>
            <conn input="convert_range1.target_end" output="divide2"/>
            <conn input="resample1.points" output="resoluiton"/>
            <conn input="divide2.value1" output="disorder"/>
        </node>
        <node comment="modified to let both X and Y drift" name="y_wiggle2" position="-12.00,-6.00" prototype="core.network" renderedChild="group1">
            <node name="change_signA" position="-1.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="number1" position="8.00,2.00" prototype="math.number"/>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="number1"/>
            </node>
            <node comment="connect to make_point if you want Y values to drift" name="change_signB" position="3.00,12.00" prototype="core.network" renderedChild="multiply2">
                <node name="compare1" position="11.00,6.00" prototype="math.compare">
                    <port name="value2" type="float" value="50.0"/>
                </node>
                <node name="multiply1" position="11.00,7.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="multiply2" position="10.00,11.00" prototype="math.multiply"/>
                <node name="multiply3" position="11.00,3.00" prototype="math.multiply">
                    <port name="value2" type="float" value="2.0"/>
                </node>
                <node name="number1" position="8.00,1.00" prototype="math.number">
                    <port name="value" type="float" value="1.0"/>
                </node>
                <node name="random_numbers3" position="11.00,5.00" prototype="math.random_numbers">
                    <port name="amount" type="int" value="1"/>
                    <port name="seed" type="int" value="257"/>
                </node>
                <node name="subtract1" position="11.00,9.00" prototype="math.subtract">
                    <port name="value1" type="float" value="1.0"/>
                </node>
                <port childReference="number1.value" description="" label="" name="value" range="value" type="float" value="0.0" widget="float"/>
                <conn input="compare1.value1" output="random_numbers3"/>
                <conn input="multiply1.value1" output="compare1"/>
                <conn input="subtract1.value2" output="multiply1"/>
                <conn input="multiply2.value2" output="subtract1"/>
                <conn input="multiply2.value1" output="number1"/>
                <conn input="multiply3.value1" output="number1"/>
                <conn input="random_numbers3.seed" output="multiply3"/>
            </node>
            <node name="colorize2" position="-4.00,19.00" prototype="corevector.colorize">
                <port name="fill" type="color" value="#cc0000ff"/>
                <port name="strokeWidth" type="float" value="1.0"/>
            </node>
            <node name="connect1" position="-4.00,18.00" prototype="corevector.connect"/>
            <node comment="values range from 0 at top to specified disorder value at bottom" name="convert_range1" position="-3.00,5.00" prototype="math.convert_range">
                <port name="source_start" type="float" value="-104.0"/>
                <port name="source_end" type="float" value="4.0"/>
                <port name="target_end" type="float" value="6.0"/>
            </node>
            <node comment="maximum disorder, zero=no distortion" name="disorder" position="6.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="59.0"/>
            </node>
            <node comment="divide by 100 for smoother scrubbing" name="divide1" position="9.00,3.00" prototype="math.divide">
                <port name="value1" type="float" value="119.0"/>
                <port name="value2" type="float" value="100.0"/>
            </node>
            <node comment="divide by ten for smoother scrubbing" name="divide2" position="6.00,3.00" prototype="math.divide">
                <port name="value2" type="float" value="10.0"/>
            </node>
            <node name="drift" position="-4.00,17.00" prototype="core.network" renderedChild="translate1">
                <node name="translate1" position="-8.00,13.00" prototype="corevector.translate"/>
                <port childReference="translate1.translate" description="The amount of translation." label="" name="translate" range="list" type="point" value="0.00,0.00" widget="point"/>
                <port childReference="translate1.shape" description="The input shape." label="" name="shape" range="list" type="geometry" widget="none"/>
            </node>
            <node name="get_Y_vals" position="-1.00,-2.00" prototype="core.network" renderedChild="take_every1">
                <node name="make_strings1" position="-1.00,-3.00" prototype="string.make_strings">
                    <port name="separator" type="string" value=","/>
                </node>
                <node name="rest1" position="-1.00,-2.00" prototype="list.rest"/>
                <node name="take_every1" position="-1.00,-1.00" prototype="list.take_every">
                    <port name="n" type="int" value="2"/>
                </node>
                <port childReference="make_strings1.string" description="" label="" name="string" range="value" type="string" value="Alpha;Beta;Gamma" widget="string"/>
                <conn input="rest1.list" output="make_strings1"/>
                <conn input="take_every1.list" output="rest1"/>
            </node>
            <node name="group1" position="-4.00,20.00" prototype="corevector.group"/>
            <node comment="100 for linear gradient, higher for exponential" name="linearity" position="9.00,-9.00" prototype="math.integer">
                <port name="value" type="int" value="174"/>
            </node>
            <node name="lookup1" outputRange="list" position="-6.00,-5.00" prototype="data.lookup">
                <port name="key" type="string" value="points"/>
            </node>
            <node name="make_point1" position="1.00,14.00" prototype="corevector.make_point"/>
            <node name="max1" position="2.00,1.00" prototype="math.max"/>
            <node name="min1" position="-1.00,1.00" prototype="math.min"/>
            <node name="pow1" position="1.00,9.00" prototype="math.pow">
                <port name="value2" type="float" value="1.2"/>
            </node>
            <node name="random_numbers1" position="-1.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="128"/>
            </node>
            <node name="random_numbers2" position="3.00,11.00" prototype="math.random_numbers">
                <port name="amount" type="int" value="1"/>
                <port name="seed" type="int" value="176"/>
            </node>
            <node name="resample1" position="-6.00,-6.00" prototype="corevector.resample">
                <port name="method" type="string" value="amount"/>
                <port name="points" type="int" value="345"/>
                <port name="per_contour" type="boolean" value="true"/>
            </node>
            <node name="resoluiton" position="-2.00,-9.00" prototype="math.number">
                <port name="value" type="float" value="100.0"/>
            </node>
            <port childReference="resample1.shape" description="The input shape." label="" name="shape" range="value" type="geometry" widget="none"/>
            <port childReference="disorder.value" description="" label="" name="maximum disorder" range="value" type="float" value="59.0" widget="float"/>
            <port childReference="linearity.value" description="" label="" name="linearity" range="value" type="int" value="174" widget="int"/>
            <port childReference="resoluiton.value" description="" label="" name="resolution" range="value" type="float" value="100.0" widget="float"/>
            <conn input="lookup1.list" output="resample1"/>
            <conn input="colorize2.shape" output="connect1"/>
            <conn input="convert_range1.source_start" output="min1"/>
            <conn input="convert_range1.source_end" output="max1"/>
            <conn input="drift.translate" output="make_point1"/>
            <conn input="drift.shape" output="lookup1"/>
            <conn input="connect1.points" output="drift"/>
            <conn input="change_signA.value" output="random_numbers1"/>
            <conn input="make_point1.x" output="change_signA"/>
            <conn input="change_signB.value" output="random_numbers2"/>
            <conn input="pow1.value1" output="convert_range1"/>
            <conn input="random_numbers1.end" output="pow1"/>
            <conn input="random_numbers2.end" output="pow1"/>
            <conn input="pow1.value2" output="divide1"/>
            <conn input="get_Y_vals.string" output="lookup1"/>
            <conn input="min1.values" output="get_Y_vals"/>
            <conn input="max1.values" output="get_Y_vals"/>
            <conn input="convert_range1.value" output="get_Y_vals"/>
            <conn input="divide1.value1" output="linearity"/>
            <conn input="group1.shapes" output="colorize2"/>
            <conn input="convert_range1.target_end" output="divide2"/>
            <conn input="resample1.points" output="resoluiton"/>
            <conn input="divide2.value1" output="disorder"/>
            <conn input="make_point1.y" output="change_signB"/>
        </node>
        <conn input="characters1.string" output="string1"/>
        <conn input="textpath1.text" output="characters1"/>
        <conn input="scale1.shape" output="textpath1"/>
        <conn input="translate1.shape" output="stack1"/>
        <conn input="stack1.shapes" output="colorize1"/>
        <conn input="characters2.string" output="string2"/>
        <conn input="textpath2.text" output="characters2"/>
        <conn input="scale2.shape" output="textpath2"/>
        <conn input="translate2.shape" output="stack2"/>
        <conn input="stack2.shapes" output="colorize2"/>
        <conn input="translate3.shape" output="stack3"/>
        <conn input="stack3.shapes" output="colorize3"/>
        <conn input="scale3.shape" output="import_svg1"/>
        <conn input="y_wiggle.shape" output="scale1"/>
        <conn input="y_wiggle.maximum disorder" output="disorder"/>
        <conn input="y_wiggle.linearity" output="linearity"/>
        <conn input="colorize1.shape" output="y_wiggle"/>
        <conn input="y_wiggle.resolution" output="resolution"/>
        <conn input="y_wiggle1.shape" output="scale2"/>
        <conn input="y_wiggle1.maximum disorder" output="disorder1"/>
        <conn input="y_wiggle1.linearity" output="linearity1"/>
        <conn input="colorize2.shape" output="y_wiggle1"/>
        <conn input="y_wiggle1.resolution" output="resolution1"/>
        <conn input="y_wiggle2.shape" output="scale3"/>
        <conn input="y_wiggle2.maximum disorder" output="disorder2"/>
        <conn input="y_wiggle2.linearity" output="linearity2"/>
        <conn input="colorize3.shape" output="y_wiggle2"/>
        <conn input="y_wiggle2.resolution" output="resolution2"/>
        <conn input="scale3.scale" output="heart_size"/>
        <conn input="combine1.list7" output="translate1"/>
        <conn input="colorize4.shape" output="rect1"/>
        <conn input="combine1.list3" output="translate3"/>
        <conn input="combine1.list1" output="colorize4"/>
        <conn input="combine1.list5" output="translate2"/>
    </node>
</ndbx>
