Finnish Syllabification

The Syllabification rule proposed in the Finnish Prosody example:


 # Put a syllable boundary after a maximal expansion of the
 # C* V+ C* pattern that is followed by a C V sequence.

 define Syllabify C* V+ C* @-> ... "." || _ C V ;

is an approximation that works correctly for most short words. But the facts of Finnish are more complex. The nucleus of a syllable may not contain any number of vowels. It may consist of a
Any combination of these three basic types is possible in a word,  e.g. sa.taa 'it rains', sa.toi 'it rained', saata 'accompany!', saatoin 'I accompanied', auta 'help!', auttaa 'to help'.

The definition of a long vowel is simple: any two adjacent identical vowels in the Finnish orthograpy make a long vowel. However, only certain non-identical vowel pairs constitute a diphthtong. The rules are:
Your task is to modify the Finnish Prosody script to produce a defintion of Syllabification for Finnish that takes into account the above constraints on the nucleus of the syllable. Here is a set of inputs that it should syllabify correctly:

define FinnWords [{kala}|{riippuu}| {tietoinen}|{sataa}|{satoi}|{saata}|{saatoin}|{auta}|
                  {laiva}|{leipä}|{häijy}|{koulu}||{köyhä}|{lea}|{viestien}|{tuote}|
                  {virtuositeetti}|{laukaus}|{lakkautan}| {voimistelijoiden}|{heittäen}|
                  {heittäisin}|{laulaen}];