Does insertstimulusframes need a reset interval?


Author
Message
eleonora_parr
eleonora_parr
Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)
Group: Forum Members
Posts: 40, Visits: 148
Dear Inquisiters, 
I am programming an experiment during which a sequence of frames are shown creating a brief video.
To control the timing of each frame I used "instertstimulusframes" attribute. This allows me to have the following sequence (with the random time):
First item: first frame
Second item: sound
Third item: second frame
Fourth item: third frame

To control which frame should be selected I used a list (list forward): this ensures that in each trial the same list number is selected, so that I manage to have the correct sequence for each trial (i.e. if first frame is "gln15.jpg", second frame will be "gln13.jpg", third frame will be "gln11.jpg" and so on)

The problem is that all of it works perfectly for the first 24 trials. After the 24th trials, the presentation sequence completely screws up: sometimes it happens that the sound is selected twice, and that the sequence of the frame is completely random (i.e. first item: "gln15.jpg", second item: sound, third item: sound, fourth item: "gln13.jpg"). 
Do you have any idea of why is this happening? (I also tried to increment the reset interval to 50)
I have 12 types of blocks/trials (I just copied 2 of them for the sake of simplicity, but the structure is always the same, with 4 or 5 frames  instead of three)
Hope that someone could help me, 
Thank you so much!! 
Eleonora 

Here is the code :


<list forward>
/ items = [noreplace(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)]
/ selectionrate = block
/ resetinterval = 1
</list>

<picture safe_minus_third_frame>
/ items = safe_minus_third_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_minus_third_frame>
/1 = "bon09.jpg"
/2 = "bon10.jpg"
/3 = "bon11.jpg"
/4 = "bon12.jpg"
/5 = "bon13.jpg"
/6 = "gln09.jpg"
/7= "gln10.jpg"
/8 = "gln11.jpg"
/9= "gln12.jpg"
/10 = "gln13.jpg"
/11= "knn09.jpg"
/12= "knn10.jpg"
/13 = "knn11.jpg"
/14= "knn12.jpg"
/15 = "knn13.jpg"
/16= "wgn09.jpg"
/17= "wgn10.jpg"
/18 = "wgn11.jpg"
/19= "wgn12.jpg"
/20 = "wgn13.jpg"
</item>

<picture safe_minus_second_frame>
/ items = safe_minus_second_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_minus_second_frame>
/1 = "bon11.jpg"
/2 = "bon12.jpg"
/3 = "bon13.jpg"
/4 = "bon14.jpg"
/5 = "bon15.jpg"
/6 = "gln11.jpg"
/7= "gln12.jpg"
/8 = "gln13.jpg"
/9= "gln14.jpg"
/10 = "gln15.jpg"
/11= "knn11.jpg"
/12= "knn12.jpg"
/13 = "knn13.jpg"
/14= "knn14.jpg"
/15 = "knn15.jpg"
/16= "wgn11.jpg"
/17= "wgn12.jpg"
/18 = "wgn13.jpg"
/19= "wgn14.jpg"
/20 = "wgn15.jpg"
</item>

<picture safe_first_frame>
/ items = safe_first_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_first_frame>
/1 = "bon13.jpg"
/2 = "bon14.jpg"
/3 = "bon15.jpg"
/4 = "bon16.jpg"
/5 = "bon17.jpg"
/6 = "gln13.jpg"
/7= "gln14.jpg"
/8 = "gln15.jpg"
/9= "gln16.jpg"
/10 = "gln17.jpg"
/11= "knn13.jpg"
/12= "knn14.jpg"
/13 = "knn15.jpg"
/14= "knn16.jpg"
/15 = "knn17.jpg"
/16= "wgn13.jpg"
/17= "wgn14.jpg"
/18 = "wgn15.jpg"
/19= "wgn16.jpg"
/20 = "wgn17.jpg"
</item>

<picture safe_plus_second_frame>
/ items = safe_plus_second_frame
/ erase = false
/ select = list.forward
/ size = (100%, 100%)
</picture>

<item safe_plus_second_frame>
/1 = "bon15.jpg"
/2 = "bon16.jpg"
/3 = "bon17.jpg"
/4 = "bon18.jpg"
/5 = "bon19.jpg"
/6 = "gln15.jpg"
/7= "gln16.jpg"
/8 = "gln17.jpg"
/9= "gln18.jpg"
/10 = "gln19.jpg"
/11= "knn15.jpg"
/12= "knn16.jpg"
/13 = "knn17.jpg"
/14= "knn18.jpg"
/15 = "knn19.jpg"
/16= "wgn15.jpg"
/17= "wgn16.jpg"
/18 = "wgn17.jpg"
/19= "wgn18.jpg"
/20 = "wgn19.jpg"
</item>

<picture safe_plus_third_frame>
/ items = safe_plus_third_frame
/ erase = false
/ select = list.forward
/ size = (100%, 100%)
</picture>

<item safe_plus_third_frame>
/1 = "bon17.jpg"
/2 = "bon18.jpg"
/3 = "bon19.jpg"
/4 = "bon20.jpg"
/5 = "bon21.jpg"
/6 = "gln17.jpg"
/7= "gln18.jpg"
/8 = "gln19.jpg"
/9= "gln20.jpg"
/10 = "gln21.jpg"
/11= "knn17.jpg"
/12= "knn18.jpg"
/13 = "knn19.jpg"
/14= "knn20.jpg"
/15 = "knn21.jpg"
/16= "wgn17.jpg"
/17= "wgn18.jpg"
/18 = "wgn19.jpg"
/19= "wgn20.jpg"
/20 = "wgn21.jpg"
</item>

<item safe_w>
/1 = "bonwithouthand.jpg"
/2 = "bonwithouthand.jpg"
/3 = "bonwithouthand.jpg"
/4 = "bonwithouthand.jpg"
/5 = "bonwithouthand.jpg"
/6 = "glnwithouthand.jpg"
/7 = "glnwithouthand.jpg"
/8 = "glnwithouthand.jpg"
/9 = "glnwithouthand.jpg"
/10 = "glnwithouthand.jpg"
/11= "knnwithouthand.jpg"
/12= "knnwithouthand.jpg"
/13 = "knnwithouthand.jpg"
/14= "knnwithouthand.jpg"
/15 = "knnwithouthand.jpg"
/16= "wgnwithouthand.jpg"
/17= "wgnwithouthand.jpg"
/18 = "wgnwithouthand.jpg"
/19= "wgnwithouthand.jpg"
/20 = "wgnwithouthand.jpg"
</item>

<picture safe_w>
/ items = safe_w
/ select = list.forward
/ size = (100%, 100%)
</picture>

<sound take>
/ items = ("illtakeit.wav")
</sound>

<sound leave>
/ items = ("illleaveit.wav")
</sound

<values>
/Actiontype=0
/congruency = 0
/object = 0
/length = 0
/ x=0
/ y=0
/fixate_duration = 0
/time_sound = 0
/time_second_frame = 0
/time_third_frame = 0
/time_fourth_frame = 0
/time_fifth_frame = 0
</values>

<trial fixate>
/ pretrialpause = 1000
/ ontrialbegin = [values.fixate_duration = round(rand(500,1000))]
/ stimulusframes = [1 = cross]
/ trialduration = values.fixate_duration
</trial>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.time_sound=(round(rand(60,180))); values.time_second_frame = values.time_sound+72; values.time_third_frame = values.time_second_frame+5;
values.Actiontype="Withdrawal"; values.congruency = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound);
                trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
                trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_third_frame
/ branch = [trial.safe_3_backward_inc_respond;]
</trial>
<trial safe_3_backward_inc_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
/ ontrialend = [values.x=trial.safe_3_backward_inc_respond.responsex;values.y=trial.safe_3_backward_inc_respond.responsey;]
/ branch = [trial.space;]
</trial>

<trial safe_3_backward_con>
/ ontrialbegin = [values.time_sound=(round(rand(60,180))); values.time_second_frame = values.time_sound+72; values.time_third_frame = values.time_second_frame+5;
values.Actiontype="Withdrawal"; values.congruency = "Congruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_con.insertstimulusframe(sound.leave, values.time_sound);
                trial.safe_3_backward_con.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
                trial.safe_3_backward_con.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_third_frame
/ branch = [trial.safe_3_backward_con_respond;]
</trial>
<trial safe_3_backward_con_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
/ ontrialend = [values.x=trial.safe_3_backward_con_respond.responsex;values.y=trial.safe_3_backward_con_respond.responsey;]
/ branch = [trial.space;]
</trial>


<block 3_safe_backward_con>
/ trials = [1= sequence(fixate,safe_3_backward_con)]
</block>
<block 3_safe_backward_inc>
/ trials = [1= sequence(fixate,safe_3_backward_inc)]
</block>

<list congruent>
/ items = (block.5_pain_forward_con, block.5_pain_backward_con, block.4_pain_forward_con, block.4_pain_backward_con, block.3_pain_forward_con, block.3_pain_backward_con, block.5_safe_forward_con,
block.5_safe_backward_con, block.4_safe_forward_con, block.4_safe_backward_con, block.3_safe_forward_con, block.3_safe_backward_con)
</list>

<list incongruent>
/ items = (block.5_pain_forward_inc, block.5_pain_backward_inc, block.4_pain_forward_inc, block.4_pain_backward_inc, block.3_pain_forward_inc, block.3_pain_backward_inc, block.5_safe_forward_inc,
block.5_safe_backward_inc, block.4_safe_forward_inc, block.4_safe_backward_inc, block.3_safe_forward_inc, block.3_safe_backward_inc)
</list>

<list blockselector>
/ items = (list.incongruent.nextvalue, list.congruent.nextvalue)
/ selectionmode = random
/ replace = false
</list>

<expt>
/ blocks = [1=Consent1;2=space;3-50=list.blockselector;51=debrief]
</expt>
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
eleonora_parr - 1/15/2021
Dear Inquisiters, 
I am programming an experiment during which a sequence of frames are shown creating a brief video.
To control the timing of each frame I used "instertstimulusframes" attribute. This allows me to have the following sequence (with the random time):
First item: first frame
Second item: sound
Third item: second frame
Fourth item: third frame

To control which frame should be selected I used a list (list forward): this ensures that in each trial the same list number is selected, so that I manage to have the correct sequence for each trial (i.e. if first frame is "gln15.jpg", second frame will be "gln13.jpg", third frame will be "gln11.jpg" and so on)

The problem is that all of it works perfectly for the first 24 trials. After the 24th trials, the presentation sequence completely screws up: sometimes it happens that the sound is selected twice, and that the sequence of the frame is completely random (i.e. first item: "gln15.jpg", second item: sound, third item: sound, fourth item: "gln13.jpg"). 
Do you have any idea of why is this happening? (I also tried to increment the reset interval to 50)
I have 12 types of blocks/trials (I just copied 2 of them for the sake of simplicity, but the structure is always the same, with 4 or 5 frames  instead of three)
Hope that someone could help me, 
Thank you so much!! 
Eleonora 

Here is the code :


<list forward>
/ items = [noreplace(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)]
/ selectionrate = block
/ resetinterval = 1
</list>

<picture safe_minus_third_frame>
/ items = safe_minus_third_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_minus_third_frame>
/1 = "bon09.jpg"
/2 = "bon10.jpg"
/3 = "bon11.jpg"
/4 = "bon12.jpg"
/5 = "bon13.jpg"
/6 = "gln09.jpg"
/7= "gln10.jpg"
/8 = "gln11.jpg"
/9= "gln12.jpg"
/10 = "gln13.jpg"
/11= "knn09.jpg"
/12= "knn10.jpg"
/13 = "knn11.jpg"
/14= "knn12.jpg"
/15 = "knn13.jpg"
/16= "wgn09.jpg"
/17= "wgn10.jpg"
/18 = "wgn11.jpg"
/19= "wgn12.jpg"
/20 = "wgn13.jpg"
</item>

<picture safe_minus_second_frame>
/ items = safe_minus_second_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_minus_second_frame>
/1 = "bon11.jpg"
/2 = "bon12.jpg"
/3 = "bon13.jpg"
/4 = "bon14.jpg"
/5 = "bon15.jpg"
/6 = "gln11.jpg"
/7= "gln12.jpg"
/8 = "gln13.jpg"
/9= "gln14.jpg"
/10 = "gln15.jpg"
/11= "knn11.jpg"
/12= "knn12.jpg"
/13 = "knn13.jpg"
/14= "knn14.jpg"
/15 = "knn15.jpg"
/16= "wgn11.jpg"
/17= "wgn12.jpg"
/18 = "wgn13.jpg"
/19= "wgn14.jpg"
/20 = "wgn15.jpg"
</item>

<picture safe_first_frame>
/ items = safe_first_frame
/ erase = false
/ size = (100%, 100%)
/ select = list.forward
</picture>

<item safe_first_frame>
/1 = "bon13.jpg"
/2 = "bon14.jpg"
/3 = "bon15.jpg"
/4 = "bon16.jpg"
/5 = "bon17.jpg"
/6 = "gln13.jpg"
/7= "gln14.jpg"
/8 = "gln15.jpg"
/9= "gln16.jpg"
/10 = "gln17.jpg"
/11= "knn13.jpg"
/12= "knn14.jpg"
/13 = "knn15.jpg"
/14= "knn16.jpg"
/15 = "knn17.jpg"
/16= "wgn13.jpg"
/17= "wgn14.jpg"
/18 = "wgn15.jpg"
/19= "wgn16.jpg"
/20 = "wgn17.jpg"
</item>

<picture safe_plus_second_frame>
/ items = safe_plus_second_frame
/ erase = false
/ select = list.forward
/ size = (100%, 100%)
</picture>

<item safe_plus_second_frame>
/1 = "bon15.jpg"
/2 = "bon16.jpg"
/3 = "bon17.jpg"
/4 = "bon18.jpg"
/5 = "bon19.jpg"
/6 = "gln15.jpg"
/7= "gln16.jpg"
/8 = "gln17.jpg"
/9= "gln18.jpg"
/10 = "gln19.jpg"
/11= "knn15.jpg"
/12= "knn16.jpg"
/13 = "knn17.jpg"
/14= "knn18.jpg"
/15 = "knn19.jpg"
/16= "wgn15.jpg"
/17= "wgn16.jpg"
/18 = "wgn17.jpg"
/19= "wgn18.jpg"
/20 = "wgn19.jpg"
</item>

<picture safe_plus_third_frame>
/ items = safe_plus_third_frame
/ erase = false
/ select = list.forward
/ size = (100%, 100%)
</picture>

<item safe_plus_third_frame>
/1 = "bon17.jpg"
/2 = "bon18.jpg"
/3 = "bon19.jpg"
/4 = "bon20.jpg"
/5 = "bon21.jpg"
/6 = "gln17.jpg"
/7= "gln18.jpg"
/8 = "gln19.jpg"
/9= "gln20.jpg"
/10 = "gln21.jpg"
/11= "knn17.jpg"
/12= "knn18.jpg"
/13 = "knn19.jpg"
/14= "knn20.jpg"
/15 = "knn21.jpg"
/16= "wgn17.jpg"
/17= "wgn18.jpg"
/18 = "wgn19.jpg"
/19= "wgn20.jpg"
/20 = "wgn21.jpg"
</item>

<item safe_w>
/1 = "bonwithouthand.jpg"
/2 = "bonwithouthand.jpg"
/3 = "bonwithouthand.jpg"
/4 = "bonwithouthand.jpg"
/5 = "bonwithouthand.jpg"
/6 = "glnwithouthand.jpg"
/7 = "glnwithouthand.jpg"
/8 = "glnwithouthand.jpg"
/9 = "glnwithouthand.jpg"
/10 = "glnwithouthand.jpg"
/11= "knnwithouthand.jpg"
/12= "knnwithouthand.jpg"
/13 = "knnwithouthand.jpg"
/14= "knnwithouthand.jpg"
/15 = "knnwithouthand.jpg"
/16= "wgnwithouthand.jpg"
/17= "wgnwithouthand.jpg"
/18 = "wgnwithouthand.jpg"
/19= "wgnwithouthand.jpg"
/20 = "wgnwithouthand.jpg"
</item>

<picture safe_w>
/ items = safe_w
/ select = list.forward
/ size = (100%, 100%)
</picture>

<sound take>
/ items = ("illtakeit.wav")
</sound>

<sound leave>
/ items = ("illleaveit.wav")
</sound

<values>
/Actiontype=0
/congruency = 0
/object = 0
/length = 0
/ x=0
/ y=0
/fixate_duration = 0
/time_sound = 0
/time_second_frame = 0
/time_third_frame = 0
/time_fourth_frame = 0
/time_fifth_frame = 0
</values>

<trial fixate>
/ pretrialpause = 1000
/ ontrialbegin = [values.fixate_duration = round(rand(500,1000))]
/ stimulusframes = [1 = cross]
/ trialduration = values.fixate_duration
</trial>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.time_sound=(round(rand(60,180))); values.time_second_frame = values.time_sound+72; values.time_third_frame = values.time_second_frame+5;
values.Actiontype="Withdrawal"; values.congruency = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound);
                trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
                trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_third_frame
/ branch = [trial.safe_3_backward_inc_respond;]
</trial>
<trial safe_3_backward_inc_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
/ ontrialend = [values.x=trial.safe_3_backward_inc_respond.responsex;values.y=trial.safe_3_backward_inc_respond.responsey;]
/ branch = [trial.space;]
</trial>

<trial safe_3_backward_con>
/ ontrialbegin = [values.time_sound=(round(rand(60,180))); values.time_second_frame = values.time_sound+72; values.time_third_frame = values.time_second_frame+5;
values.Actiontype="Withdrawal"; values.congruency = "Congruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_con.insertstimulusframe(sound.leave, values.time_sound);
                trial.safe_3_backward_con.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
                trial.safe_3_backward_con.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_third_frame
/ branch = [trial.safe_3_backward_con_respond;]
</trial>
<trial safe_3_backward_con_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
/ ontrialend = [values.x=trial.safe_3_backward_con_respond.responsex;values.y=trial.safe_3_backward_con_respond.responsey;]
/ branch = [trial.space;]
</trial>


<block 3_safe_backward_con>
/ trials = [1= sequence(fixate,safe_3_backward_con)]
</block>
<block 3_safe_backward_inc>
/ trials = [1= sequence(fixate,safe_3_backward_inc)]
</block>

<list congruent>
/ items = (block.5_pain_forward_con, block.5_pain_backward_con, block.4_pain_forward_con, block.4_pain_backward_con, block.3_pain_forward_con, block.3_pain_backward_con, block.5_safe_forward_con,
block.5_safe_backward_con, block.4_safe_forward_con, block.4_safe_backward_con, block.3_safe_forward_con, block.3_safe_backward_con)
</list>

<list incongruent>
/ items = (block.5_pain_forward_inc, block.5_pain_backward_inc, block.4_pain_forward_inc, block.4_pain_backward_inc, block.3_pain_forward_inc, block.3_pain_backward_inc, block.5_safe_forward_inc,
block.5_safe_backward_inc, block.4_safe_forward_inc, block.4_safe_backward_inc, block.3_safe_forward_inc, block.3_safe_backward_inc)
</list>

<list blockselector>
/ items = (list.incongruent.nextvalue, list.congruent.nextvalue)
/ selectionmode = random
/ replace = false
</list>

<expt>
/ blocks = [1=Consent1;2=space;3-50=list.blockselector;51=debrief]
</expt>

Stimuli you insert into a trial's stimulus presentation sequence *persist* (and are supposed to persist) in that presentation sequence. Observe:

<block myblock>
/ trials = [1-2 = mytrial]
</block>

<trial mytrial>
/ ontrialbegin = [
    trial.mytrial.insertstimulustime(text.a, list.a_onsets.nextvalue);
]
/ stimulustimes = [0=clearscreen; 1000=b]
/ validresponse = (57)
</trial>

<list a_onsets>
/ items = (0, 2000)
/ selectionmode = sequence
</list>

<text a>
/ items = ("A")
</text>

<text b>
/ items = ("B")
</text>

In the first instance of mytrial, the stimulus "A" is inserted at 0, so you'll see A -> B.
In the second instance of the trial, the stimulus "A" is inserted at 2000, but since it had already been added at 0 in the previous instance, you'll see A -> B -> A, not B -> A.
This is the intended behavior.

If you don't want that, reset the trial's stimulus presentation sequence to its original state at the start of each trial, before inserting the stimuli pertaining to that instance of the trial. I.e.

<block myblock>
/ trials = [1-2 = mytrial]
</block>

<trial mytrial>
/ ontrialbegin = [
    trial.mytrial.resetstimulusframes();
    trial.mytrial.insertstimulustime(text.a, list.a_onsets.nextvalue);
]
/ stimulustimes = [0=clearscreen; 1000=b]
/ validresponse = (57)
</trial>

<list a_onsets>
/ items = (0, 2000)
/ selectionmode = sequence
</list>

<text a>
/ items = ("A")
</text>

<text b>
/ items = ("B")
</text>
Edited 3 Years Ago by Dave
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search