Get the source from here.
http://mo-de.net/opensource/php/build_list_from_files_for_avysinth/

Any modifications or improvements please send to me Lex Peters, the author.

Q and A

- What you need to use this script?
You will need the ability to execute php scripts. The environment I use is a L.A.M.P. stack (Linux, Apache, MySQL and PHP). You don’t need the MySQL part.

- Who should use this?
If you have a digital camera that you take lots of videos with sometimes you might want to stitch them together to create one long video. I use a Nikon and a Canon camera with the same memory and they generate different file formats, Motion JPG avi and Quicktime (mov). This script will create the syntax needed by Avysinth to concatenate, put together the videos.

- How to use this script?
Once you have an environment setup, like a LAMP or WAMP stack then place the script where apache serves up pages and execute the script with two parameters.

Example:

On a local area network the Linux web server looks for a mounted shared drive from the Windows computer at thepath=/home/smbshare1/images/2008_May_2/101CANON
It will read the files within this directory/folder and search for any .avi, .AVI, .mov, .MOV etc. files. Don’t get confused with the slashes, Unices use forward slashes and Windows use backwards slashes.

Because the path is on a Windows computer and Avysinth needs the absolute path to the files you need to add this information to the second parameter.
displaypath=C:\images\2008_May_2\101CANON\

This is what a call might look like.

http://192.168.2.299/pathto/script/build_list_from_files.php?displaypath=C:\images\200...May_2/101CANON

If you plan to combine different types of video formats, that is QuickTime mov and avi, files then add this variable “variableMovieToMatchFPS “ and give it a value in Avysinth to the video you want the other format to convert to. I convert the QuickTime frames per second to the avi movies.
Code:
variableMovieToMatchFPS=avisource ("C:\images\2008_May_2\101CANON\MVI_0160.AVI", false )
If you only have QuickTime movies then run the code and do a find and replace.
“.ConvertToYV12().ConvertFPS(variableMovieToMatchF PS)” to something else or nothing.

Here is an example output. Image how long it would take to do this manually?
Code:
a = QtInput("C:\images\2008_May_2\101CANON\DSCN3227.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
b = QtInput("C:\images\2008_May_2\101CANON\DSCN3228.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
c = QtInput("C:\images\2008_May_2\101CANON\DSCN3229.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
d = QtInput("C:\images\2008_May_2\101CANON\DSCN3230.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
e = QtInput("C:\images\2008_May_2\101CANON\DSCN3231.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
f = QtInput("C:\images\2008_May_2\101CANON\DSCN3232.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
g = QtInput("C:\images\2008_May_2\101CANON\DSCN3233.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
h = QtInput("C:\images\2008_May_2\101CANON\DSCN3234.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
i = QtInput("C:\images\2008_May_2\101CANON\DSCN3235.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
j = QtInput("C:\images\2008_May_2\101CANON\DSCN3236.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
k = QtInput("C:\images\2008_May_2\101CANON\DSCN3237.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
l = QtInput("C:\images\2008_May_2\101CANON\DSCN3238.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
m = QtInput("C:\images\2008_May_2\101CANON\DSCN3239.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
n = QtInput("C:\images\2008_May_2\101CANON\DSCN3240.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
o = QtInput("C:\images\2008_May_2\101CANON\DSCN3241.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
p = QtInput("C:\images\2008_May_2\101CANON\DSCN3242.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
q = QtInput("C:\images\2008_May_2\101CANON\DSCN3243.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
r = QtInput("C:\images\2008_May_2\101CANON\DSCN3244.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
s = QtInput("C:\images\2008_May_2\101CANON\DSCN3245.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
t = QtInput("C:\images\2008_May_2\101CANON\DSCN3246.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
u = QtInput("C:\images\2008_May_2\101CANON\DSCN3247.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
v = QtInput("C:\images\2008_May_2\101CANON\DSCN3248.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
w = QtInput("C:\images\2008_May_2\101CANON\DSCN3249.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
x = QtInput("C:\images\2008_May_2\101CANON\DSCN3250.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
y = QtInput("C:\images\2008_May_2\101CANON\DSCN3251.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
z = QtInput("C:\images\2008_May_2\101CANON\DSCN3252.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
aa = QtInput("C:\images\2008_May_2\101CANON\DSCN3253.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
bb = QtInput("C:\images\2008_May_2\101CANON\DSCN3254.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
cc = QtInput("C:\images\2008_May_2\101CANON\DSCN3255.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
dd = QtInput("C:\images\2008_May_2\101CANON\DSCN3256.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ee = QtInput("C:\images\2008_May_2\101CANON\DSCN3257.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ff = QtInput("C:\images\2008_May_2\101CANON\DSCN3258.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
gg = QtInput("C:\images\2008_May_2\101CANON\DSCN3259.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
hh = QtInput("C:\images\2008_May_2\101CANON\DSCN3260.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ii = QtInput("C:\images\2008_May_2\101CANON\DSCN3261.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
jj = QtInput("C:\images\2008_May_2\101CANON\DSCN3262.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
kk = QtInput("C:\images\2008_May_2\101CANON\DSCN3263.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ll = QtInput("C:\images\2008_May_2\101CANON\DSCN3264.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
mm = QtInput("C:\images\2008_May_2\101CANON\DSCN3265.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
nn = QtInput("C:\images\2008_May_2\101CANON\DSCN3266.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
oo = QtInput("C:\images\2008_May_2\101CANON\DSCN3267.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
pp = QtInput("C:\images\2008_May_2\101CANON\DSCN3268.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
qq = QtInput("C:\images\2008_May_2\101CANON\DSCN3269.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
rr = QtInput("C:\images\2008_May_2\101CANON\DSCN3270.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ss = QtInput("C:\images\2008_May_2\101CANON\DSCN3271.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
tt = QtInput("C:\images\2008_May_2\101CANON\DSCN3272.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
uu = QtInput("C:\images\2008_May_2\101CANON\DSCN3273.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
vv = QtInput("C:\images\2008_May_2\101CANON\DSCN3274.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ww = QtInput("C:\images\2008_May_2\101CANON\DSCN3287.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
xx = QtInput("C:\images\2008_May_2\101CANON\DSCN3316.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
yy = QtInput("C:\images\2008_May_2\101CANON\DSCN3317.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
zz = QtInput("C:\images\2008_May_2\101CANON\DSCN3318.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
aaa = QtInput("C:\images\2008_May_2\101CANON\DSCN3319.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
bbb = QtInput("C:\images\2008_May_2\101CANON\DSCN3320.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ccc = QtInput("C:\images\2008_May_2\101CANON\DSCN3321.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ddd = QtInput("C:\images\2008_May_2\101CANON\DSCN3322.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
eee = QtInput("C:\images\2008_May_2\101CANON\DSCN3323.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
fff = QtInput("C:\images\2008_May_2\101CANON\DSCN3324.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ggg = QtInput("C:\images\2008_May_2\101CANON\DSCN3325.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
hhh = QtInput("C:\images\2008_May_2\101CANON\DSCN3326.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
iii = QtInput("C:\images\2008_May_2\101CANON\DSCN3327.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
jjj = QtInput("C:\images\2008_May_2\101CANON\DSCN3328.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
kkk = QtInput("C:\images\2008_May_2\101CANON\DSCN3329.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
lll = QtInput("C:\images\2008_May_2\101CANON\DSCN3330.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
mmm = QtInput("C:\images\2008_May_2\101CANON\DSCN3331.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
nnn = QtInput("C:\images\2008_May_2\101CANON\DSCN3332.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ooo = QtInput("C:\images\2008_May_2\101CANON\DSCN3333.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
ppp = QtInput("C:\images\2008_May_2\101CANON\DSCN3334.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
qqq = QtInput("C:\images\2008_May_2\101CANON\DSCN3335.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
rrr = QtInput("C:\images\2008_May_2\101CANON\DSCN3336.MOV ", color = 2, quality = 100, audio = false, mode = 0, raw = "yuyv", info = 0, dither = 0).ConvertToYV12().ConvertFPS(variableMovieToMatchFPS)
sss = avisource ("C:\images\2008_May_2\101CANON\MVI_0160.AVI", false )
ttt = avisource ("C:\images\2008_May_2\101CANON\MVI_0161.AVI", false )
uuu = avisource ("C:\images\2008_May_2\101CANON\MVI_0162.AVI", false )
vvv = avisource ("C:\images\2008_May_2\101CANON\MVI_0163.AVI", false )
www = avisource ("C:\images\2008_May_2\101CANON\MVI_0164.AVI", false )
xxx = avisource ("C:\images\2008_May_2\101CANON\MVI_0165.AVI", false )
yyy = avisource ("C:\images\2008_May_2\101CANON\MVI_0166.AVI", false )
zzz = avisource ("C:\images\2008_May_2\101CANON\MVI_0167.AVI", false )
aaaa = avisource ("C:\images\2008_May_2\101CANON\MVI_0168.AVI", false )
bbbb = avisource ("C:\images\2008_May_2\101CANON\MVI_0169.AVI", false )
cccc = avisource ("C:\images\2008_May_2\101CANON\MVI_0170.AVI", false )
dddd = avisource ("C:\images\2008_May_2\101CANON\MVI_0171.AVI", false )
eeee = avisource ("C:\images\2008_May_2\101CANON\MVI_0172.AVI", false )
ffff = avisource ("C:\images\2008_May_2\101CANON\MVI_0173.AVI", false )
gggg = avisource ("C:\images\2008_May_2\101CANON\MVI_0174.AVI", false )
hhhh = avisource ("C:\images\2008_May_2\101CANON\MVI_0175.AVI", false )
iiii = avisource ("C:\images\2008_May_2\101CANON\MVI_0176.AVI", false )
jjjj = avisource ("C:\images\2008_May_2\101CANON\MVI_0177.AVI", false )
kkkk = avisource ("C:\images\2008_May_2\101CANON\MVI_0178.AVI", false )
llll = avisource ("C:\images\2008_May_2\101CANON\MVI_0179.AVI", false )
mmmm = avisource ("C:\images\2008_May_2\101CANON\MVI_0180.AVI", false )
nnnn = avisource ("C:\images\2008_May_2\101CANON\MVI_0181.AVI", false )
oooo = avisource ("C:\images\2008_May_2\101CANON\MVI_0182.AVI", false )
pppp = avisource ("C:\images\2008_May_2\101CANON\MVI_0183.AVI", false )
qqqq = avisource ("C:\images\2008_May_2\101CANON\MVI_0184.AVI", false )
rrrr = avisource ("C:\images\2008_May_2\101CANON\MVI_0185.AVI", false )
ssss = avisource ("C:\images\2008_May_2\101CANON\MVI_0186.AVI", false )
tttt = avisource ("C:\images\2008_May_2\101CANON\MVI_0187.AVI", false )
uuuu = avisource ("C:\images\2008_May_2\101CANON\MVI_0188.AVI", false )
vvvv = avisource ("C:\images\2008_May_2\101CANON\MVI_0189.AVI", false )
wwww = avisource ("C:\images\2008_May_2\101CANON\MVI_0190.AVI", false )
xxxx = avisource ("C:\images\2008_May_2\101CANON\MVI_0191.AVI", false )
yyyy = avisource ("C:\images\2008_May_2\101CANON\MVI_0192.AVI", false )
zzzz = avisource ("C:\images\2008_May_2\101CANON\MVI_0193.AVI", false )
aaaaa = avisource ("C:\images\2008_May_2\101CANON\MVI_0194.AVI", false )
bbbbb = avisource ("C:\images\2008_May_2\101CANON\MVI_0195.AVI", false )
ccccc = avisource ("C:\images\2008_May_2\101CANON\MVI_0196.AVI", false )
ddddd = avisource ("C:\images\2008_May_2\101CANON\MVI_0197.AVI", false )

combined = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + aa + bb + cc + dd + ee + ff + gg + hh + ii + jj + kk + ll + mm + nn + oo + pp + qq + rr + ss + tt + uu + vv + ww + xx + yy + zz + aaa + bbb + ccc + ddd + eee + fff + ggg + hhh + iii + jjj + kkk + lll + mmm + nnn + ooo + ppp + qqq + rrr + sss + ttt + uuu + vvv + www + xxx + yyy + zzz + aaaa + bbbb + cccc + dddd + eeee + ffff + gggg + hhhh + iiii + jjjj + kkkk + llll + mmmm + nnnn + oooo + pppp + qqqq + rrrr + ssss + tttt + uuuu + vvvv + wwww + xxxx + yyyy + zzzz + aaaaa + bbbbb + ccccc + ddddd