.Y`LcFCC[q:PxCP57Kf6ֻ%"pyj[haǈotaϘ&>cEL58u|em!T z4$ Ze%hI]5:Jv;;"I,_*$lظ_*6`Q?i;4B
?NAHayv%J©7 Wd=^ɝقMP!ri,xIwC{p:ؽ>NRIo(JYCK$4Ǆl.58}h$D+x٣4Ǆl.58}h+m}	f-
'*u%OX_y|` wv!
`7Ebx<0S/I<#ۆQv3! VSKt[j
͟_ǁBb7A4NH<5\33tMЄ"?tYYC%r@&DSlYpL>@{"f|蚾x4s{f*xPŬp?bC+e4dOxH~HkN {ѥ6"{k[\e)dSш~@9ioaZP6o^.~W22Z)NTo%QP*;7Lu)ΈҍPMf
ʥMyEp2|'%C>o=($gݯD,HVRҽ)8$5b1Ch%X3}<]q)orWV?piՔv3@ {N8ŃQ]rrM}TZ\hWV@XGʕ'[s[^ܾLr\9쁲i8k1Zr3G@0{e%=%z0+:mqol}-JkE/ܸ;'m/KMd%$@"%+4@0|$bi=ʪJI7]e L脺:ZlURw̩==0" a ~~_xdR(kR ],o4Z8
s_M!.vWN"FA2UGbPSVǇ7v{7(~Bm䮾ZzaO[@V#GGp'3_$Nq.%
O+a7հoF+VdZb08OȶS3V"YJf@"1sbT2hz,i1z(޽-ML[Kmbb\esk]Ezٵ%#r;* OIr5{sx\1v}3L܇!B(+JғReH+00HXo`>l>:0<BriOrN"ՆɝG"dIx_\RZ*+1`>ݼefGp45%/>}hջz	cq@kD]x? %|kv3{I[DʅUϮ Γ_(DΔLm_!o: CxUd$.+/js!"j,/{
SJ	lHpZas:~]ndTl'11jWKA34ʖL[k'=viJ5Ȧ8I;?vmۈz#VD]pngA'S*T@WV\oe 1My9,p0,;M%a)[ FN$V2$RͲ?rD.bp"/3E벬4^B,JnD@@<cSN >rW@SB+y5ͬR(s_R8SeW{H&0#&>L(&Db]=hP/f_%Jǉ~D'M(..n|A6.|~8{Ѷߜ##(Ef"r@]t ȷf3U?b_o@D {-L
o&0O(7c+J]id%قlQ缶>hO5U^LoŌ4 y9=$Swin)7y;!Hi4+1:,ގῇ`"	Tc	q=jCYJf_CP
ͯOpeQXFaX >W-3Nᾣ1#Ɏzt3ۦMÂiO;.71{cI9'{\R? $ndC6y?X%U	իljڈHPVϷ{)r)ɇ*\a52P8Lmv"/0.f@_@~x)ov^csJ/bɊkm1zes3m#Lx%.G@MqYn$G^wb^kW:/Kx6T IEƴ?ZjÜ.5(I1:t\=-P|LAvcmPtrNQ;RfN5Cak~yP[hz:UxΝDݒ[q[4wL#*ۣk"V9`X+<w͓3Nᾣ1#ɎzQkrcڼΥ|ƪʳ94qjABb~'F?&`4@ǸD%F~ܞssG!I&f-UR8)m\孚z3g7yvmVRdT7C]S~=%J큆7RwvhC)f^*Sr
/CW/
JJx5*e}:k
B?[^r[?)Jvߣw^;Q8A#j q_}x޽wDc<L+f^*Sr
/C3AJ$[PKˈ/ݣHM|38"~D&Zu5r)K1ʌ0ެ8A#j q_mwp%W  N>/M(טZn
l+mܷ4z*Cz*fi3W=Vx(h5"]S:Euei[%qFѵ(K*5v
2ʷŉY$nHz_+C`fhFs>@nL̉jKϹ+JRq\B	!<n9@Y^Xѳn}H/c~qS6"=pmw*e4I07r@)C1@[>|@¤%EDlRo'Ѩ
E&mɨ9wIf9}㣭S?<s|eTD9BQe£v$hh^Jn:	ġ82;2-I*YTqWmP4ǻBcx9Jl䒱jЈ!cZ$JE-BEB&> +뚢V&~uz_R3Nᾣ1#Ɏz(局\ RL+Jf{wK\Dh ]_:'P|LAvcTr`oZkvu&zJOn$G^wb^o(be(oeCLa0u7QUU1Y6(n$G^wb^yMH;߭Z#6-ܪ@a1/c횯//0pĜs= S+yKW4ðyl]",Lt̀8OZAiM8A#j q_!ڗ"#[}@\:̂[QK A9IFiDH4ʽgSzp;b[=,x.3Nᾣ1#Ɏz5
Ӯ>J~ӷ|piUw1c]g*QI!N%(|P,_<b          => array('LIMIT',       3),
    );

    /**
     * Expressions that are being selected by this statement.
     *
     * @var Expression[]
     */
    public $expr = array();

    /**
     * Tables used as sources for this statement.
     *
     * @var Expression[]
     */
    public $from = array();

    /**
     * Partitions used as source for this statement.
     *
     * @var ArrayObj
     */
    public $partition;

    /**
     * Conditions used for filtering each row of the result set.
     *
     * @var Condition[]
     */
    public $where;

    /**
     * Conditions used for grouping the result set.
     *
     * @var OrderKeyword[]
     */
    public $group;

    /**
     * Conditions used for filtering the result set.
     *
     * @var Condition[]
     */
    public $having;

    /**
     * Specifies the order of the rows in the result set.
     *
     * @var OrderKeyword[]
     */
    public $order;

    /**
     * Conditions used for limiting the size of the result set.
     *
     * @var Limit
     */
    public $limit;

    /**
     * Procedure that should process the data in the result set.
     *
     * @var FunctionCall
     */
    public $procedure;

    /**
     * Destination of this result set.
     *
     * @var IntoKeyword
     */
    public $into;

    /**
     * Joins.
     *
     * @var JoinKeyword[]
     */
    public $join;

    /**
     * Unions.
     *
     * @var SelectStatement[]
     */
    public $union = array();

    /**
     * The end options of this query.
     *
     * @var OptionsArray
     *
     * @see static::$END_OPTIONS
     */
    public $end_options;

    /**
     * Gets the clauses of this statement.
     *
     * @return array
     */
    public function getClauses()
    {
        // This is a cheap fix for `SELECT` statements that contain `UNION`.
        // The `ORDER BY` and `LIMIT` clauses should be at the end of the
        // statement.
        if (!empty($this->union)) {
            $clauses = static::$CLAUSES;
            unset($clauses['ORDER BY']);
            unset($clauses['LIMIT']);
            $clauses['ORDER BY'] = array('ORDER BY', 3);
            $clauses['LIMIT'] = array('LIMIT', 3);

            return $clauses;
        }

        return static::$CLAUSES;
    }
}
