Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: tools/binary_size/libsupersize/testdata/Archive_Elf.golden

Issue 2880003002: supersize: A few fixes for Android+clang builds (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 elf_arch=arm 1 elf_arch=arm
2 elf_build_id=WhatAnAmazingBuildId 2 elf_build_id=WhatAnAmazingBuildId
3 elf_file_name=elf 3 elf_file_name=elf
4 elf_mtime={redacted} 4 elf_mtime={redacted}
5 git_revision=abc123 5 git_revision=abc123
6 gn_args=var1=true var2="foo" 6 gn_args=var1=true var2="foo"
7 map_file_name=../test.map 7 map_file_name=../test.map
8 tool_prefix=tools/binary_size/libsupersize/testdata/mock_toolchain/ 8 tool_prefix=tools/binary_size/libsupersize/testdata/mock_toolchain/
9 Section r: has 100.0% of 5927652 bytes accounted for from 9 symbols. 0 bytes are unaccounted for. 9 Section r: has 100.0% of 5927652 bytes accounted for from 10 symbols. 0 bytes ar e unaccounted for.
10 * Padding accounts for 11 bytes (0.0%) 10 * Padding accounts for 11 bytes (0.0%)
11 * 4 placeholders (symbols that start with **) account for 5927509 bytes (100.0%) 11 * 5 placeholders (symbols that start with **) account for 5927509 bytes (100.0%)
12 * 0 symbols have shared ownership 12 * 0 symbols have shared ownership
13 Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for. 13 Section b: has 40.3% of 524520 bytes accounted for from 6 symbols. 775936 bytes are unaccounted for.
14 * Padding accounts for 196 bytes (0.0%) 14 * Padding accounts for 196 bytes (0.0%)
15 * 0 symbols have shared ownership 15 * 0 symbols have shared ownership
16 Section d: has 100.0% of 1957016 bytes accounted for from 15 symbols. 0 bytes ar e unaccounted for. 16 Section d: has 100.0% of 1957016 bytes accounted for from 15 symbols. 0 bytes ar e unaccounted for.
17 * Padding accounts for 16 bytes (0.0%) 17 * Padding accounts for 16 bytes (0.0%)
18 * 2 placeholders (symbols that start with **) account for 1166732 bytes (59.6%) 18 * 2 placeholders (symbols that start with **) account for 1166732 bytes (59.6%)
19 * 0 symbols have shared ownership 19 * 0 symbols have shared ownership
20 Section t: has 100.0% of 35900712 bytes accounted for from 18 symbols. 0 bytes a re unaccounted for. 20 Section t: has 100.0% of 35900712 bytes accounted for from 18 symbols. 0 bytes a re unaccounted for.
21 * Padding accounts for 48 bytes (0.0%) 21 * Padding accounts for 48 bytes (0.0%)
22 * 3 placeholders (symbols that start with **) account for 35830760 bytes (99.8%) 22 * 3 placeholders (symbols that start with **) account for 35830760 bytes (99.8%)
23 * Contains 5 aliases, mapped to 2 unique addresses (60 bytes) 23 * Contains 5 aliases, mapped to 2 unique addresses (60 bytes)
24 * 1 symbols have shared ownership (12 bytes) 24 * 1 symbols have shared ownership (12 bytes)
25 .text@28d900(size_without_padding=16,padding=0,name=_GLOBAL__sub_I_page_allocato r.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,f lags={startup}) 25 .text@28d900(size_without_padding=16,padding=0,full_name=_GLOBAL__sub_I_page_all ocator.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator .cc,flags={startup})
26 .text@28d910(size_without_padding=56,padding=0,name=_GLOBAL__sub_I_bbr_sender.cc ,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags ={startup}) 26 .text@28d910(size_without_padding=56,padding=0,full_name=_GLOBAL__sub_I_bbr_send er.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc, flags={startup})
27 .text@28d948(size_without_padding=28,padding=0,name=_GLOBAL__sub_I_pacing_sender .cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,fl ags={startup}) 27 .text@28d948(size_without_padding=28,padding=0,full_name=_GLOBAL__sub_I_pacing_s ender.cc,object_path=base/base/page_allocator.o,source_path=base/page_allocator. cc,flags={startup})
28 .text@28d964(size_without_padding=38,padding=0,name=extFromUUseMapping,object_pa th=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) 28 .text@28d964(size_without_padding=38,padding=0,full_name=extFromUUseMapping(sign ed char, unsigned int, int),object_path=base/base/page_allocator.o,source_path=b ase/page_allocator.cc,flags={})
29 .text@28d98a(size_without_padding=32,padding=0,name=extFromUUseMapping,object_pa th=base/base/page_allocator.o,source_path=base/page_allocator.cc,flags={}) 29 .text@28d98a(size_without_padding=32,padding=0,full_name=extFromUUseMapping(aj, int),object_path=base/base/page_allocator.o,source_path=base/page_allocator.cc,f lags={})
30 .text@28f000(size_without_padding=0,padding=5718,name=** symbol gap 0,object_pat h=,source_path=,flags={}) 30 .text@28f000(size_without_padding=0,padding=5718,full_name=** symbol gap 0,objec t_path=,source_path=,flags={})
31 .text@28f000(size_without_padding=448,padding=0,name=ucnv_extMatchFromU,object_p ath=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flag s={gen}) 31 .text@28f000(size_without_padding=448,padding=0,full_name=ucnv_extMatchFromU(int const*, int, unsigned short const*, int, unsigned short const*, int, unsigned i nt*, signed char, signed char),object_path=third_party/icu/icuuc/ucnv_ext.o,sour ce_path=third_party/icu/ucnv_ext.c,flags={gen})
32 .text@28f1c8(size_without_padding=20,padding=8,name=_GLOBAL__sub_I_SkDeviceProfi le.cpp,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ ucnv_ext.c,flags={startup,gen}) 32 .text@28f1c8(size_without_padding=20,padding=8,full_name=_GLOBAL__sub_I_SkDevice Profile.cpp,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party /icu/ucnv_ext.c,flags={startup,gen})
33 .text@28f1e0(size_without_padding=69120,padding=4,name=foo_bar,object_path=third _party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={unlike ly,gen}) 33 .text@28f1e0(size_without_padding=69120,padding=4,full_name=foo_bar,object_path= third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={u nlikely,gen})
34 .text@2a0000(size_without_padding=16,padding=32,name=blink::ContiguousContainerB ase::shrinkToFit,object_path=,source_path=,flags={2 aliases}) 34 .text@2a0000(size_without_padding=16,padding=32,full_name=blink::ContiguousConta inerBase::shrinkToFit(),object_path=,source_path=,flags={2 aliases})
35 .text@2a0000(size_without_padding=16,padding=32,name=BazAlias,object_path=third_ party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,flags={gen,2 a liases}) 35 .text@2a0000(size_without_padding=16,padding=32,full_name=BazAlias(bool),object_ path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucnv_ext.c,fla gs={gen,2 aliases})
36 .text@2a0010(size_without_padding=12,padding=0,name=blink::ContiguousContainerBa se::shrinkToFit [clone .part.1234] [clone .isra.2],object_path=third_party/{shar ed}/2,source_path=third_party/{shared}/2,flags={3 aliases}) 36 .text@2a0010(size_without_padding=12,padding=0,full_name=blink::ContiguousContai nerBase::shrinkToFit() [clone .part.1234] [clone .isra.2],object_path=third_part y/{shared}/2,source_path=third_party/{shared}/2,flags={3 aliases})
37 .text@2a0010(size_without_padding=12,padding=0,name=FooAlias,object_path=third_p arty/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.c c,flags={3 aliases}) 37 .text@2a0010(size_without_padding=12,padding=0,full_name=FooAlias(),object_path= third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_ float.cc,flags={3 aliases})
38 .text@2a0010(size_without_padding=12,padding=0,name=BarAlias,object_path=third_p arty/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float.c c,flags={3 aliases}) 38 .text@2a0010(size_without_padding=12,padding=0,full_name=BarAlias(),object_path= third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_ float.cc,flags={3 aliases})
39 .text@2a0020(size_without_padding=24,padding=4,name=blink::ContiguousContainerBa se::ContiguousContainerBase,object_path=third_party/WebKit.a/ContiguousContainer .o,source_path=third_party/container.c,flags={}) 39 .text@2a0020(size_without_padding=24,padding=4,full_name=blink::ContiguousContai nerBase::ContiguousContainerBase(blink::ContiguousContainerBase&&),object_path=t hird_party/WebKit.a/ContiguousContainer.o,source_path=third_party/container.c,fl ags={})
40 .text@2a1000(size_without_padding=0,padding=4040,name=** symbol gap 1,object_pat h=,source_path=,flags={}) 40 .text@2a1000(size_without_padding=0,padding=4040,full_name=** symbol gap 1,objec t_path=,source_path=,flags={})
41 .text@2a1000(size_without_padding=94,padding=0,name=blink::PaintChunker::release PaintChunks [clone .part.1],object_path=third_party/WebKit.a/ContiguousContainer .o,source_path=third_party/container.c,flags={anon}) 41 .text@2a1000(size_without_padding=94,padding=0,full_name=blink::PaintChunker::re leasePaintChunks() [clone .part.1],object_path=third_party/WebKit.a/ContiguousCo ntainer.o,source_path=third_party/container.c,flags={anon})
42 .text@24ca628(size_without_padding=0,padding=35821002,name=** symbol gap 2 (end of section),object_path=,source_path=,flags={}) 42 .text@24ca628(size_without_padding=0,padding=35821002,full_name=** symbol gap 2 (end of section),object_path=,source_path=,flags={})
43 .rodata@266e600(size_without_padding=1965409,padding=0,name=** merge strings,obj ect_path=,source_path=,flags={}) 43 .rodata@266e600(size_without_padding=1961984,padding=0,full_name=** merge string s,object_path=,source_path=,flags={})
44 .rodata@284e364(size_without_padding=0,padding=3,name=** symbol gap 2,object_pat h=,source_path=,flags={}) 44 .rodata@284d600(size_without_padding=3425,padding=0,full_name=** merge constants ,object_path=,source_path=,flags={})
45 .rodata@284e364(size_without_padding=8,padding=0,name=,object_path=base/base/pag e_allocator.o,source_path=base/page_allocator.cc,flags={}) 45 .rodata@284e364(size_without_padding=0,padding=3,full_name=** symbol gap 2,objec t_path=,source_path=,flags={})
46 .rodata@284e370(size_without_padding=40,padding=4,name=Name,object_path=base/bas e/page_allocator.o,source_path=base/page_allocator.cc,flags={}) 46 .rodata@284e364(size_without_padding=8,padding=0,full_name=,object_path=base/bas e/page_allocator.o,source_path=base/page_allocator.cc,flags={})
47 .rodata@284e398(size_without_padding=32,padding=0,name=chrome::mojom::FilePatche r::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=thir d_party/container.c,flags={}) 47 .rodata@284e370(size_without_padding=40,padding=4,full_name=Name,object_path=bas e/base/page_allocator.o,source_path=base/page_allocator.cc,flags={})
48 .rodata@284e518(size_without_padding=675633,padding=352,name=** merge strings,ob ject_path=,source_path=,flags={}) 48 .rodata@284e398(size_without_padding=32,padding=0,full_name=chrome::mojom::FileP atcher::Name_,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path =third_party/container.c,flags={})
49 .rodata@28f3450(size_without_padding=48,padding=7,name=kAnimationFrameTimeHistog ramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=third_p arty/paint.cc,flags={anon}) 49 .rodata@284e518(size_without_padding=675633,padding=352,full_name=** merge strin gs,object_path=,source_path=,flags={})
50 .rodata@28f3480(size_without_padding=4,padding=0,name=blink::CSSValueKeywordsHas h::findValueImpl::value_word_list,object_path=third_party/WebKit.a/PaintChunker. o,source_path=third_party/paint.cc,flags={anon}) 50 .rodata@28f3450(size_without_padding=48,padding=7,full_name=kAnimationFrameTimeH istogramClassPath,object_path=third_party/WebKit.a/PaintChunker.o,source_path=th ird_party/paint.cc,flags={anon})
51 .rodata@2c158e4(size_without_padding=0,padding=3286112,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={}) 51 .rodata@28f3480(size_without_padding=4,padding=0,full_name=blink::CSSValueKeywor dsHash::findValueImpl(char const*, unsigned int)::value_word_list,object_path=th ird_party/WebKit.a/PaintChunker.o,source_path=third_party/paint.cc,flags={anon})
52 .data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,name=ChromeMainDele gate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_par ty/icu/ucnv_ext.c,flags={gen}) 52 .rodata@2c158e4(size_without_padding=0,padding=3286112,full_name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
53 .data.rel.ro.local@2c17728(size_without_padding=24,padding=0,name=chrome::mojom: :FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source _path=third_party/icu/ucnv_ext.c,flags={gen}) 53 .data.rel.ro.local@2c176f0(size_without_padding=56,padding=0,full_name=ChromeMai nDelegate [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=thir d_party/icu/ucnv_ext.c,flags={gen})
54 .data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,name=chrome::mo jom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/Contiguou sContainer.o,source_path=third_party/container.c,flags={}) 54 .data.rel.ro.local@2c17728(size_without_padding=24,padding=0,full_name=chrome::m ojom::FieldTrialRecorder [vtable],object_path=third_party/icu/icuuc/ucnv_ext.o,s ource_path=third_party/icu/ucnv_ext.c,flags={gen})
55 .data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,name=.Lswitch.tabl e.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libcontrol ler_api_impl.a_controller_api_impl.o,source_path=,flags={}) 55 .data.rel.ro.local@2c17740(size_without_padding=789904,padding=0,full_name=chrom e::mojom::FieldTrialRecorderProxy [vtable],object_path=third_party/WebKit.a/Cont iguousContainer.o,source_path=third_party/container.c,flags={})
56 .data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,name=kSystemClassPre fixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libport_a ndroid_jni.a_jni_utils.o,source_path=,flags={anon}) 56 .data.rel.ro.local@2cd84e0(size_without_padding=16,padding=16,full_name=.Lswitch .table.45,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libco ntroller_api_impl.a_controller_api_impl.o,source_path=,flags={})
57 .data.rel.ro@2cd8500(size_without_padding=56,padding=0,name=ChromeMainDelegateAn droid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path=third _party/paint.cc,flags={}) 57 .data.rel.ro.local@2cd84f0(size_without_padding=8,padding=0,full_name=kSystemCla ssPrefixes,object_path=third_party/gvr-android-sdk/libgvr_shim_static_arm.a/libp ort_android_jni.a_jni_utils.o,source_path=,flags={anon})
58 .data.rel.ro@2cd8538(size_without_padding=24,padding=0,name=mojo::MessageReceive r [vtable],object_path=base/base/page_allocator.o,source_path=base/page_allocato r.cc,flags={}) 58 .data.rel.ro@2cd8500(size_without_padding=56,padding=0,full_name=ChromeMainDeleg ateAndroid [vtable],object_path=third_party/WebKit.a/PaintChunker.o,source_path= third_party/paint.cc,flags={})
59 .data.rel.ro@2cd8550(size_without_padding=12,padding=0,name=kMethodsAnimationFra meTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/page_all ocator.cc,flags={}) 59 .data.rel.ro@2cd8538(size_without_padding=24,padding=0,full_name=mojo::MessageRe ceiver [vtable],object_path=base/base/page_allocator.o,source_path=base/page_all ocator.cc,flags={})
60 .data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={}) 60 .data.rel.ro@2cd8550(size_without_padding=12,padding=0,full_name=kMethodsAnimati onFrameTimeHistogram,object_path=base/base/page_allocator.o,source_path=base/pag e_allocator.cc,flags={})
61 .data@2de7000(size_without_padding=4,padding=0,name=google::protobuf::internal:: pLinuxKernelCmpxchg,object_path=base/base/page_allocator.o,source_path=base/page _allocator.cc,flags={}) 61 .data.rel.ro@2ddc608(size_without_padding=0,padding=1065132,full_name=** symbol gap 3 (end of section),object_path=,source_path=,flags={})
62 .data@2de7004(size_without_padding=4,padding=0,name=google::protobuf::internal:: pLinuxKernelMemoryBarrier,object_path=third_party/WebKit.a/ContiguousContainer.o ,source_path=third_party/container.c,flags={}) 62 .data@2de7000(size_without_padding=4,padding=0,full_name=google::protobuf::inter nal::pLinuxKernelCmpxchg,object_path=base/base/page_allocator.o,source_path=base /page_allocator.cc,flags={})
63 .data@2de7008(size_without_padding=152,padding=0,name=base::android::kBaseRegist eredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=t hird_party/container.c,flags={rel}) 63 .data@2de7004(size_without_padding=4,padding=0,full_name=google::protobuf::inter nal::pLinuxKernelMemoryBarrier,object_path=third_party/WebKit.a/ContiguousContai ner.o,source_path=third_party/container.c,flags={})
64 .data@2de70a0(size_without_padding=4,padding=0,name=base::android::g_renderer_hi stogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path= third_party/container.c,flags={anon}) 64 .data@2de7008(size_without_padding=152,padding=0,full_name=base::android::kBaseR egisteredMethods,object_path=third_party/WebKit.a/ContiguousContainer.o,source_p ath=third_party/container.c,flags={rel})
65 .data@2de70a4(size_without_padding=4,padding=0,name=base::android::g_library_ver sion_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_path=t hird_party/container.c,flags={anon,rel.loc}) 65 .data@2de70a0(size_without_padding=4,padding=0,full_name=base::android::g_render er_histogram_code,object_path=third_party/WebKit.a/ContiguousContainer.o,source_ path=third_party/container.c,flags={anon})
66 .data@2dffd88(size_without_padding=0,padding=101600,name=** symbol gap 3 (end of section),object_path=,source_path=,flags={}) 66 .data@2de70a4(size_without_padding=4,padding=0,full_name=base::android::g_librar y_version_number,object_path=third_party/WebKit.a/ContiguousContainer.o,source_p ath=third_party/container.c,flags={anon,rel.loc})
67 .bss@0(size_without_padding=262144,padding=0,name=ff_cos_131072,object_path=thir d_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_floa t.cc,flags={}) 67 .data@2dffd88(size_without_padding=0,padding=101600,full_name=** symbol gap 3 (e nd of section),object_path=,source_path=,flags={})
68 .bss@0(size_without_padding=131072,padding=0,name=ff_cos_131072_fixed,object_pat h=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_party/ff t_fixed.cc,flags={}) 68 .bss@0(size_without_padding=262144,padding=0,full_name=ff_cos_131072,object_path =third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft _float.cc,flags={})
69 .bss@0(size_without_padding=131072,padding=0,name=ff_cos_65536,object_path=third _party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_float .cc,flags={}) 69 .bss@0(size_without_padding=131072,padding=0,full_name=ff_cos_131072_fixed,objec t_path=third_party/ffmpeg/libffmpeg_internal.a/fft_fixed.o,source_path=third_par ty/fft_fixed.cc,flags={})
70 .bss@2dffda0(size_without_padding=28,padding=0,name=g_chrome_content_browser_cli ent,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ucn v_ext.c,flags={gen}) 70 .bss@0(size_without_padding=131072,padding=0,full_name=ff_cos_65536,object_path= third_party/ffmpeg/libffmpeg_internal.a/fft_float.o,source_path=third_party/fft_ float.cc,flags={})
71 .bss@2dffe80(size_without_padding=4,padding=196,name=SaveHistogram::atomic_histo gram_pointer,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_part y/icu/ucnv_ext.c,flags={gen}) 71 .bss@2dffda0(size_without_padding=28,padding=0,full_name=g_chrome_content_browse r_client,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/ic u/ucnv_ext.c,flags={gen})
72 .bss@2dffe84(size_without_padding=4,padding=0,name=g_AnimationFrameTimeHistogram _clazz,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party/icu/ ucnv_ext.c,flags={anon,gen}) 72 .bss@2dffe80(size_without_padding=4,padding=196,full_name=SaveHistogram(_JNIEnv* , base::android::JavaParamRef<_jobject*> const&, base::android::JavaParamRef<_js tring*> const&, base::android::JavaParamRef<_jlongArray*> const&, int)::atomic_h istogram_pointer,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_ party/icu/ucnv_ext.c,flags={gen})
73 .bss@2dffe84(size_without_padding=4,padding=0,full_name=g_AnimationFrameTimeHist ogram_clazz,object_path=third_party/icu/icuuc/ucnv_ext.o,source_path=third_party /icu/ucnv_ext.c,flags={anon,gen})
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698