Searched defs:y_buf (Results 1 - 13 of 13) sorted by relevance

/external/chromium_org/third_party/libvpx/source/libvpx/third_party/libyuv/source/
H A Drow_mips.cc683 "lw $t0, 0(%[y_buf]) \n" \
741 void I422ToARGBRow_MIPS_DSPR2(const uint8* y_buf, argument
770 "addiu %[y_buf], 4 \n"
790 :[y_buf] "+r" (y_buf),
803 void I422ToABGRRow_MIPS_DSPR2(const uint8* y_buf, argument
832 "addiu %[y_buf], 4 \n"
852 :[y_buf] "+r" (y_buf),
865 void I422ToBGRARow_MIPS_DSPR2(const uint8* y_buf, argument
[all...]
H A Drow_posix.cc2144 "movq " MEMACCESS([y_buf]) ",%%xmm3 \n" \
2145 "lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n" \
2169 "movq " MEMACCESS([y_buf]) ",%%xmm3 \n" \
2170 "lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n" \
2184 void OMITFP I444ToARGBRow_SSSE3(const uint8* y_buf, argument
2207 : [y_buf]"+r"(y_buf), // %[y_buf]
2223 I422ToRGB24Row_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgb24, int width) argument
2281 I422ToRAWRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_raw, int width) argument
2339 I422ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2378 I411ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2417 NV12ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2451 NV21ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2485 I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2524 I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2563 I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2602 NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2636 NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2670 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
2710 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
2749 I422ToRGBARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
2789 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
2829 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
2868 I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
2911 YToARGBRow_SSE2(const uint8* y_buf, uint8* dst_argb, int width) argument
[all...]
H A Drow_win.cc77 void I422ToARGBRow_SSSE3(const uint8* y_buf, argument
100 xmm3 = _mm_loadl_epi64((__m128i*)y_buf);
122 y_buf += 8;
130 void I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
153 xmm3 = _mm_loadl_epi64((__m128i*)y_buf);
175 y_buf += 8;
2229 void I422ToARGBRow_AVX2(const uint8* y_buf, argument
2398 void I444ToARGBRow_SSSE3(const uint8* y_buf, argument
2441 void I422ToRGB24Row_SSSE3(const uint8* y_buf, argument
2488 void I422ToRAWRow_SSSE3(const uint8* y_buf, argument
2535 I422ToRGB565Row_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb565_buf, int width) argument
2608 I422ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2652 I411ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2697 NV12ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2735 NV21ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2773 I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2816 I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2860 I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2905 NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2943 NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2979 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
3020 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
3061 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
3102 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
3143 I422ToRGBARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
3184 I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
3228 YToARGBRow_SSE2(const uint8* y_buf, uint8* rgb_buf, int width) argument
[all...]
/external/chromium_org/third_party/libyuv/source/
H A Drow_mips.cc683 "lw $t0, 0(%[y_buf]) \n" \
741 void I422ToARGBRow_MIPS_DSPR2(const uint8* y_buf, argument
770 "addiu %[y_buf], 4 \n"
790 :[y_buf] "+r" (y_buf),
803 void I422ToABGRRow_MIPS_DSPR2(const uint8* y_buf, argument
832 "addiu %[y_buf], 4 \n"
852 :[y_buf] "+r" (y_buf),
865 void I422ToBGRARow_MIPS_DSPR2(const uint8* y_buf, argument
[all...]
H A Drow_posix.cc2144 "movq " MEMACCESS([y_buf]) ",%%xmm3 \n" \
2145 "lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n" \
2169 "movq " MEMACCESS([y_buf]) ",%%xmm3 \n" \
2170 "lea " MEMLEA(0x8, [y_buf]) ",%[y_buf] \n" \
2184 void OMITFP I444ToARGBRow_SSSE3(const uint8* y_buf, argument
2207 : [y_buf]"+r"(y_buf), // %[y_buf]
2223 I422ToRGB24Row_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgb24, int width) argument
2281 I422ToRAWRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_raw, int width) argument
2339 I422ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2378 I411ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2417 NV12ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2451 NV21ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2485 I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2524 I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2563 I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2602 NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2636 NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2670 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
2710 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
2749 I422ToRGBARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
2789 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
2829 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
2868 I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
2911 YToARGBRow_SSE2(const uint8* y_buf, uint8* dst_argb, int width) argument
[all...]
H A Drow_win.cc76 void I422ToARGBRow_SSSE3(const uint8* y_buf, argument
100 xmm3 = _mm_loadl_epi64((__m128i*)y_buf);
122 y_buf += 8;
130 void I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
154 xmm3 = _mm_loadl_epi64((__m128i*)y_buf);
176 y_buf += 8;
2230 void I422ToARGBRow_AVX2(const uint8* y_buf, argument
2399 void I444ToARGBRow_SSSE3(const uint8* y_buf, argument
2442 void I422ToRGB24Row_SSSE3(const uint8* y_buf, argument
2489 void I422ToRAWRow_SSSE3(const uint8* y_buf, argument
2536 I422ToRGB565Row_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb565_buf, int width) argument
2609 I422ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2653 I411ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2698 NV12ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2736 NV21ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2774 I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2817 I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2861 I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_argb, int width) argument
2906 NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2944 NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* dst_argb, int width) argument
2980 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
3021 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_bgra, int width) argument
3062 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
3103 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_abgr, int width) argument
3144 I422ToRGBARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
3185 I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* dst_rgba, int width) argument
3229 YToARGBRow_SSE2(const uint8* y_buf, uint8* rgb_buf, int width) argument
[all...]
/external/chromium_org/media/base/simd/
H A Dconvert_rgb_to_yuv_sse2.cc85 #define CONVERT_Y(rgb_buf, y_buf) \
93 *y_buf++ = RGBToY(r, g, b);
134 uint8* y_buf,
142 CONVERT_Y(rgb_buf, y_buf);
143 CONVERT_Y(rgb_buf, y_buf);
149 uint8* y_buf,
157 CONVERT_Y(rgb_buf, y_buf);
133 ConvertRGBToYUV_V1H2(const uint8* rgb_buf, uint8* y_buf, uint8* u_buf, uint8* v_buf) argument
148 ConvertRGBToYUV_V1H1(const uint8* rgb_buf, uint8* y_buf, uint8* u_buf, uint8* v_buf) argument
H A Dconvert_yuv_to_rgb_c.cc101 void ConvertYUVToRGB32Row_C(const uint8* y_buf, argument
110 uint8 y0 = y_buf[x];
113 uint8 y1 = y_buf[x + 1];
120 void ConvertYUVAToARGBRow_C(const uint8* y_buf, argument
130 uint8 y0 = y_buf[x];
134 uint8 y1 = y_buf[x + 1];
146 void ScaleYUVToRGB32Row_C(const uint8* y_buf, argument
155 int y = y_buf[x >> 16];
161 y = y_buf[x >> 16];
169 void LinearScaleYUVToRGB32Row_C(const uint8* y_buf, argument
184 LinearScaleYUVToRGB32RowWithRange_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int dest_width, int x, int source_dx, const int16 convert_table[1024][4]) argument
[all...]
/external/libyuv/files/source/
H A Drow_neon.cc78 void I422ToARGBRow_NEON(const uint8* y_buf, argument
97 : "+r"(y_buf), // %0
111 void I422ToBGRARow_NEON(const uint8* y_buf, argument
131 : "+r"(y_buf), // %0
145 void I422ToABGRRow_NEON(const uint8* y_buf, argument
165 : "+r"(y_buf), // %0
179 void I422ToRGBARow_NEON(const uint8* y_buf, argument
198 : "+r"(y_buf), // %0
212 void I422ToRGB24Row_NEON(const uint8* y_buf, argument
230 : "+r"(y_buf), //
244 I422ToRAWRow_NEON(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
277 NV12ToARGBRow_NEON(const uint8* y_buf, const uint8* uv_buf, uint8* rgb_buf, int width) argument
308 NV21ToARGBRow_NEON(const uint8* y_buf, const uint8* uv_buf, uint8* rgb_buf, int width) argument
[all...]
H A Drow_common.cc470 void I444ToARGBRow_C(const uint8* y_buf, argument
476 YuvPixel(y_buf[0], u_buf[0], v_buf[0], rgb_buf, 24, 16, 8, 0);
477 y_buf += 1;
485 void I422ToARGBRow_C(const uint8* y_buf, argument
491 YuvPixel(y_buf[0], u_buf[0], v_buf[0], rgb_buf + 0, 24, 16, 8, 0);
492 YuvPixel(y_buf[1], u_buf[0], v_buf[0], rgb_buf + 4, 24, 16, 8, 0);
493 y_buf += 2;
499 YuvPixel(y_buf[0], u_buf[0], v_buf[0], rgb_buf + 0, 24, 16, 8, 0);
503 void I422ToRGB24Row_C(const uint8* y_buf, argument
509 YuvPixel2(y_buf[
524 I422ToRAWRow_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
545 I411ToARGBRow_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
571 NV12ToARGBRow_C(const uint8* y_buf, const uint8* uv_buf, uint8* rgb_buf, int width) argument
587 NV21ToARGBRow_C(const uint8* y_buf, const uint8* vu_buf, uint8* rgb_buf, int width) argument
603 I422ToBGRARow_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
621 I422ToABGRRow_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
639 I422ToRGBARow_C(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgb_buf, int width) argument
657 YToARGBRow_C(const uint8* y_buf, uint8* rgb_buf, int width) argument
[all...]
H A Drow_posix.cc1358 "movq (%[y_buf]),%%xmm3 \n" \
1359 "lea 0x8(%[y_buf]),%[y_buf] \n" \
1383 "movq (%[y_buf]),%%xmm3 \n" \
1384 "lea 0x8(%[y_buf]),%[y_buf] \n" \
1398 void OMITFP I444ToARGBRow_SSSE3(const uint8* y_buf, argument
1421 : [y_buf]"+r"(y_buf), // %[y_buf]
1434 I422ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* argb_buf, int width) argument
1470 I411ToARGBRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* argb_buf, int width) argument
1506 NV12ToARGBRow_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* argb_buf, int width) argument
1539 NV21ToARGBRow_SSSE3(const uint8* y_buf, const uint8* vu_buf, uint8* argb_buf, int width) argument
1572 I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* argb_buf, int width) argument
1608 I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* argb_buf, int width) argument
1644 I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* argb_buf, int width) argument
1680 NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* uv_buf, uint8* argb_buf, int width) argument
1713 NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* vu_buf, uint8* argb_buf, int width) argument
1746 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* bgra_buf, int width) argument
1783 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* abgr_buf, int width) argument
1819 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* bgra_buf, int width) argument
1856 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* abgr_buf, int width) argument
1894 YToARGBRow_SSE2(const uint8* y_buf, uint8* rgb_buf, int width) argument
[all...]
H A Drow_win.cc1617 void I444ToARGBRow_SSSE3(const uint8* y_buf, argument
1660 void I422ToARGBRow_SSSE3(const uint8* y_buf, argument
1704 void I411ToARGBRow_SSSE3(const uint8* y_buf, argument
1747 void NV12ToARGBRow_SSSE3(const uint8* y_buf, argument
1785 void NV21ToARGBRow_SSSE3(const uint8* y_buf, argument
1823 void I444ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
1866 void I422ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
1910 void I411ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
1954 void NV12ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
1992 void NV21ToARGBRow_Unaligned_SSSE3(const uint8* y_buf, argument
2028 I422ToBGRARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* bgra_buf, int width) argument
2069 I422ToBGRARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* bgra_buf, int width) argument
2110 I422ToABGRRow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* abgr_buf, int width) argument
2151 I422ToABGRRow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* abgr_buf, int width) argument
2192 I422ToRGBARow_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgba_buf, int width) argument
2233 I422ToRGBARow_Unaligned_SSSE3(const uint8* y_buf, const uint8* u_buf, const uint8* v_buf, uint8* rgba_buf, int width) argument
2277 YToARGBRow_SSE2(const uint8* y_buf, uint8* rgb_buf, int width) argument
[all...]
/external/chromium_org/media/base/
H A Dyuv_convert.cc213 void ScaleYUVToRGB32(const uint8* y_buf, argument
254 y_buf += source_width - 1;
262 y_buf += (source_height - 1) * y_pitch;
329 y_ptr = y_buf + source_y * y_pitch;
371 y_ptr = y_buf + source_y * y_pitch;
403 void ScaleYUVToRGB32WithRect(const uint8* y_buf, argument
499 const uint8* y0_ptr = y_buf + y_pitch * source_row + source_y_left;

Completed in 370 milliseconds