# To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 1K of event 'cpu-clock:ppp' # Event count (approx.): 151200000 # # Overhead Samples Command Shared Object Symbol # ........ ............ ....... .................... ............................................................................................................................................................................................................................................. # 28.51% 431 osh oils-for-unix [.] MarkSweepHeap::MaybeMarkAndPush(RawObject*) 10.38% 157 osh oils-for-unix [.] MarkSweepHeap::TraceChildren() 6.42% 97 osh oils-for-unix [.] MarkSweepHeap::Allocate(unsigned long, int*, int*) 5.29% 80 osh oils-for-unix [.] MarkSweepHeap::Sweep() 2.91% 44 osh oils-for-unix [.] match::OneToken(types_asdl::lex_mode_e, BigStr*, int) 2.51% 38 osh [kernel.kallsyms] [k] 0xffffffff8d0ae793 1.79% 27 osh [kernel.kallsyms] [k] 0xffffffff8dfeb4c9 1.39% 21 osh oils-for-unix [.] lexer::LineLexer::Read(types_asdl::lex_mode_e) 1.32% 20 osh oils-for-unix [.] lexer::Lexer::_Read(types_asdl::lex_mode_e) 1.32% 20 osh oils-for-unix [.] word_parse::WordParser::_ReadCompoundWord3(types_asdl::lex_mode_e, int, bool) 1.26% 19 osh [kernel.kallsyms] [k] 0xffffffff8df696c7 1.19% 18 osh oils-for-unix [.] cmd_parse::CommandParser::_GetWord() 1.12% 17 osh oils-for-unix [.] alloc::Arena::NewToken(int, int, int, syntax_asdl::SourceLine*) 0.99% 15 osh libc.so.6 [.] malloc 0.93% 14 osh oils-for-unix [.] cmd_parse::CommandParser::_MaybeExpandAliases(List*) 0.86% 13 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.86% 13 osh oils-for-unix [.] word_parse::WordParser::_ReadWord(types_asdl::lex_mode_e) 0.79% 12 osh oils-for-unix [.] word_::CommandId(syntax_asdl::word_t*) 0.66% 10 osh oils-for-unix [.] lexer::Lexer::Read(types_asdl::lex_mode_e) 0.60% 9 osh oils-for-unix [.] cmd_parse::CommandParser::ParseSimpleCommand() 0.60% 9 osh oils-for-unix [.] word_::LiteralId(syntax_asdl::word_part_t*) 0.60% 9 osh oils-for-unix [.] word_parse::WordParser::_GetToken() 0.53% 8 osh oils-for-unix [.] List::at(int) 0.53% 8 osh oils-for-unix [.] cmd_parse::CommandParser::_ScanSimpleCommand() 0.53% 8 osh oils-for-unix [.] word_parse::WordParser::_MaybeReadWordPart(bool, types_asdl::lex_mode_e, List*) 0.46% 7 osh [kernel.kallsyms] [k] 0xffffffff8d43e85b 0.46% 7 osh libc.so.6 [.] 0x00000000000a48b0 0.46% 7 osh oils-for-unix [.] consts::GetKind(unsigned short) 0.46% 7 osh oils-for-unix [.] process::ChildStateChange::ApplyFromParent(process::Process*) 0.46% 7 osh oils-for-unix [.] word_::TildeDetect2(syntax_asdl::CompoundWord*) 0.46% 7 osh oils-for-unix [.] word_::_EvalWordPart(syntax_asdl::word_part_t*) 0.46% 7 osh oils-for-unix [.] word_parse::WordParser::_ReadLikeDQ(syntax_asdl::Token*, bool, List*) 0.40% 6 osh libc.so.6 [.] __getdelim 0.40% 6 osh oils-for-unix [.] BigStr::slice(int, int) 0.40% 6 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCommand() 0.40% 6 osh oils-for-unix [.] mylib::CFile::readline() 0.40% 6 osh oils-for-unix [.] word_::CommandKind(syntax_asdl::word_t*) 0.40% 6 osh oils-for-unix [.] word_parse::WordParser::ReadWord(types_asdl::lex_mode_e) 0.33% 5 osh [kernel.kallsyms] [k] 0xffffffff8d1a0b41 0.33% 5 osh libc.so.6 [.] cfree 0.33% 5 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.26% 4 osh [kernel.kallsyms] [k] 0xffffffff8d3a2654 0.26% 4 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.26% 4 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.26% 4 osh oils-for-unix [.] word_::TildeDetectAssign(syntax_asdl::CompoundWord*) 0.20% 3 osh [kernel.kallsyms] [k] 0xffffffff8d3ad24a 0.20% 3 osh [kernel.kallsyms] [k] 0xffffffff8d4401a5 0.20% 3 osh oils-for-unix [.] BigStr::at(int) 0.20% 3 osh oils-for-unix [.] List* Alloc>() 0.20% 3 osh oils-for-unix [.] alloc::Arena::AddLine(BigStr*, int) 0.20% 3 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandTerm() 0.20% 3 osh oils-for-unix [.] cmd_parse::_SplitSimpleCommandPrefix(List*) 0.20% 3 osh oils-for-unix [.] lexer::TokenVal(syntax_asdl::Token*) 0.20% 3 osh oils-for-unix [.] word_::StaticEval(syntax_asdl::word_t*) 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d168cf9 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3805fe 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3a2ae7 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3a5640 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3a64e9 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3a6901 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3aa137 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3c1411 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d3d42d5 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d43ba69 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d440426 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8d81ed9d 0.13% 2 osh [kernel.kallsyms] [k] 0xffffffff8df4918a 0.13% 2 osh libc.so.6 [.] 0x00000000000a174d 0.13% 2 osh libc.so.6 [.] 0x00000000000a26a0 0.13% 2 osh libc.so.6 [.] 0x00000000000a48b4 0.13% 2 osh libc.so.6 [.] 0x0000000000199374 0.13% 2 osh libc.so.6 [.] 0x00000000001993c4 0.13% 2 osh libc.so.6 [.] 0x00000000001a0826 0.13% 2 osh oils-for-unix [.] BigStr::endswith(BigStr*) 0.13% 2 osh oils-for-unix [.] Dict::set(int, int) 0.13% 2 osh oils-for-unix [.] List::reserve(int) [clone .part.0] 0.13% 2 osh oils-for-unix [.] List::append(syntax_asdl::IfArm*) 0.13% 2 osh oils-for-unix [.] List* Alloc>() 0.13% 2 osh oils-for-unix [.] List* Alloc>() 0.13% 2 osh oils-for-unix [.] List::pop() [clone .isra.0] 0.13% 2 osh oils-for-unix [.] List* Alloc>() 0.13% 2 osh oils-for-unix [.] StripAny(BigStr*, StripWhere, int) 0.13% 2 osh oils-for-unix [.] __errno_location@plt 0.13% 2 osh oils-for-unix [.] braces::BraceDetectAll(List*) 0.13% 2 osh oils-for-unix [.] cmd_parse::CommandParser::ParsePipeline() 0.13% 2 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseCommandLine() 0.13% 2 osh oils-for-unix [.] cmd_parse::_MakeAssignPair(parse_lib::ParseContext*, syntax_asdl::ParsedAssignment*, alloc::Arena*) 0.13% 2 osh oils-for-unix [.] cmd_parse::_MakeSimpleCommand(List*, List*, syntax_asdl::ArgList*, syntax_asdl::LiteralBlock*) 0.13% 2 osh oils-for-unix [.] cmd_parse::_ParseHereDocBody(parse_lib::ParseContext*, syntax_asdl::Redir*, reader::_Reader*, alloc::Arena*) 0.13% 2 osh oils-for-unix [.] cmd_parse::_ReadHereLines(reader::_Reader*, syntax_asdl::Redir*, BigStr*) 0.13% 2 osh oils-for-unix [.] location::LeftTokenForWordPart(syntax_asdl::word_part_t*) 0.13% 2 osh oils-for-unix [.] reader::VirtualLineReader::GetLine() 0.13% 2 osh oils-for-unix [.] reader::_Reader::GetLine() 0.13% 2 osh oils-for-unix [.] syntax_asdl::CompoundWord* Alloc*>(List*&&) 0.13% 2 osh oils-for-unix [.] word_::DetectShAssignment(syntax_asdl::CompoundWord*) 0.13% 2 osh oils-for-unix [.] word_::TildeDetect(syntax_asdl::word_t*) 0.13% 2 osh oils-for-unix [.] word_::TildeDetectAll(List*) 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d003900 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d0ae61e 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d0ae7b0 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d0ae82e 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d10b838 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d142ff5 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d327618 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d34c1c8 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3805fa 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d382747 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a2656 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a2acc 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a2ace 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a52f7 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a531e 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a532e 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a5332 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a5336 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a53f8 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a5596 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3a65d7 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3aa058 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3aa434 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3aa484 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3aa541 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3acf82 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3ad04c 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3ad605 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3ad72b 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3b6ebc 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3b9a0f 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3b9a1a 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c1299 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c141a 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c144c 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c1458 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c1475 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c3ca3 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c3da5 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c3f9f 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c3ffc 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3c67c1 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d3152 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d42ad 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d42b0 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d42ca 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d44b3 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d49d9 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d4a31 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d5b1f 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d67bb 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d7ca2 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d7cbc 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3d85f5 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3df961 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3e1fdf 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3e1fef 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3fff2e 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d3fff41 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d400463 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d412237 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43386b 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d438eb0 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43a9b9 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43aa38 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43baf9 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43bb01 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d43c760 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d440187 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d4401c3 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d45d119 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d46f62a 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d4cd155 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d62ef06 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d722e01 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d722e14 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d76a1d0 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8d8306f5 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df479a1 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df49105 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df4916c 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df49170 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df49336 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df4afaa 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df52768 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df65790 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8df69c86 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8dfd4068 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8dfd6fdc 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8dfd846b 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8dfeba20 0.07% 1 osh [kernel.kallsyms] [k] 0xffffffff8e104104 0.07% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b53a 0.07% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000b791 0.07% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000bfe1 0.07% 1 osh ld-linux-x86-64.so.2 [.] 0x000000000000c12d 0.07% 1 osh ld-linux-x86-64.so.2 [.] 0x0000000000011429 0.07% 1 osh libc.so.6 [.] __errno_location 0.07% 1 osh libc.so.6 [.] read 0.07% 1 osh libc.so.6 [.] 0x0000000000037a38 0.07% 1 osh libc.so.6 [.] 0x00000000000a2745 0.07% 1 osh libc.so.6 [.] 0x00000000000a2804 0.07% 1 osh libc.so.6 [.] 0x00000000000a2806 0.07% 1 osh libc.so.6 [.] 0x00000000000a2a1d 0.07% 1 osh libc.so.6 [.] 0x00000000000a3a0d 0.07% 1 osh libc.so.6 [.] 0x00000000000a3a14 0.07% 1 osh libc.so.6 [.] 0x00000000000a3cdf 0.07% 1 osh libc.so.6 [.] 0x00000000000a3e13 0.07% 1 osh libc.so.6 [.] 0x00000000000a3e62 0.07% 1 osh libc.so.6 [.] 0x00000000000a4257 0.07% 1 osh libc.so.6 [.] 0x00000000000a429c 0.07% 1 osh libc.so.6 [.] 0x00000000000a42fc 0.07% 1 osh libc.so.6 [.] 0x00000000000a4384 0.07% 1 osh libc.so.6 [.] 0x00000000000a43e5 0.07% 1 osh libc.so.6 [.] 0x00000000000a44a1 0.07% 1 osh libc.so.6 [.] 0x00000000000a4671 0.07% 1 osh libc.so.6 [.] 0x00000000001992d2 0.07% 1 osh libc.so.6 [.] 0x00000000001993b2 0.07% 1 osh libc.so.6 [.] 0x00000000001993e7 0.07% 1 osh libc.so.6 [.] 0x0000000000199de2 0.07% 1 osh libc.so.6 [.] 0x00000000001a07f8 0.07% 1 osh libc.so.6 [.] 0x00000000001a0802 0.07% 1 osh libc.so.6 [.] 0x00000000001a0819 0.07% 1 osh libc.so.6 [.] 0x00000000001a0857 0.07% 1 osh libc.so.6 [.] 0x00000000001a0866 0.07% 1 osh libc.so.6 [.] 0x00000000001a0a64 0.07% 1 osh libc.so.6 [.] 0x00000000001a0f90 0.07% 1 osh libc.so.6 [.] 0x00000000001a0fa4 0.07% 1 osh libc.so.6 [.] 0x00000000001a0faa 0.07% 1 osh libreadline.so.8.1 [.] 0x0000000000021f9b 0.07% 1 osh oils-for-unix [.] BigStr::isdigit() 0.07% 1 osh oils-for-unix [.] BigStr::join(List*) 0.07% 1 osh oils-for-unix [.] BigStr::slice(int) 0.07% 1 osh oils-for-unix [.] List* Alloc>() 0.07% 1 osh oils-for-unix [.] List*>::append(Tuple2*) 0.07% 1 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.07% 1 osh oils-for-unix [.] List::append(syntax_asdl::CaseArm*) 0.07% 1 osh oils-for-unix [.] List::append(syntax_asdl::SourceLine*) 0.07% 1 osh oils-for-unix [.] List* NewList(std::initializer_list) 0.07% 1 osh oils-for-unix [.] __getdelim@plt 0.07% 1 osh oils-for-unix [.] alloc::ctx_SourceCode::~ctx_SourceCode() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseAndOr() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCase() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCaseArm() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseCompoundCommand() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseIf() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::ParseRedirect() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_Eat(int, BigStr*) 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseAndOr() 0.07% 1 osh oils-for-unix [.] cmd_parse::CommandParser::_ParseForEachLoop(syntax_asdl::Token*) 0.07% 1 osh oils-for-unix [.] consts::RedirDefaultFd(unsigned short) 0.07% 1 osh oils-for-unix [.] lexer::LineLexer::LookAheadOne(types_asdl::lex_mode_e) 0.07% 1 osh oils-for-unix [.] main_loop::ParseWholeFile(cmd_parse::CommandParser*) 0.07% 1 osh oils-for-unix [.] memcpy@plt 0.07% 1 osh oils-for-unix [.] parse_lib::ParseContext::MakeLexer(reader::_Reader*) 0.07% 1 osh oils-for-unix [.] reader::FileLineReader::_GetLine() 0.07% 1 osh oils-for-unix [.] syntax_asdl::DoubleQuoted* Alloc*&, syntax_asdl::Token*&>(syntax_asdl::Token*&, List*&, syntax_asdl::Token*&) 0.07% 1 osh oils-for-unix [.] syntax_asdl::SimpleVarSub* Alloc(syntax_asdl::Token*&) 0.07% 1 osh oils-for-unix [.] syntax_asdl::command__CommandList* Alloc*&>(List*&) 0.07% 1 osh oils-for-unix [.] syntax_asdl::loc__Word* Alloc(syntax_asdl::CompoundWord*&&) 0.07% 1 osh oils-for-unix [.] void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, ObjHeader* const&) 0.07% 1 osh oils-for-unix [.] void std::vector >::_M_realloc_insert(__gnu_cxx::__normal_iterator > >, unsigned long const&) 0.07% 1 osh oils-for-unix [.] word_::AsKeywordToken(syntax_asdl::word_t*) 0.07% 1 osh oils-for-unix [.] word_parse::WordParser::LookAheadFuncParens() 0.07% 1 osh oils-for-unix [.] word_parse::WordParser::_ParseVarExpr(types_asdl::lex_mode_e, bool) 0.07% 1 osh oils-for-unix [.] word_parse::WordParser::_ReadUnquotedLeftParts(syntax_asdl::BoolParamBox*) # # (Cannot load tips.txt file, please install perf!) #