“…For each range, the algorithm identi es the set of elements that are children of e between the relevant viewport widths (steps 15-16), and nds which of these children are in rows (steps 17-18) through a call to the C I R procedure. In this procedure (steps [23][24][25][26][27][28][29][30], if an alignment constraint for two child elements e 1 and e 2 has the alignment a ributes "L" or "R" (i.e., e 1 is to the le of or to the right of e 2 ), and does not also have the a ributes "A" or "B" (i.e., e 1 is above or below e 2 , and therefore despite being oriented to the le of e 2 is not horizontally aligned with it in a row), the two elements are added to a set of elements, denoted IR, that are deemed to constitute a row (step 28). If a certain viewport range contains more than two elements considered to be in a row (identi ed by C I R ), and one of the elements in this set is not in the corresponding set for the previous adjacent viewport range, a wrapping failure is reported (steps 20-21).…”