€•iFŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ$/translations/zh_CN/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/zh_TW/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/it_IT/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ja_JP/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ko_KR/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/pt_BR/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/sp_SP/arch/powerpc/htm”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ>/var/lib/git/docbuild/linux/Documentation/arch/powerpc/htm.rst”h´KubhŒtarget”“”)”}”(hŒ.. _htm:”h]”h}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œhtm”uh1hÈh´Khhh²hh³hÇubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒHTM (Hardware Trace Macro)”h]”hŒHTM (Hardware Trace Macro)”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÔŒid1”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒAthira Rajeev, 2 Mar 2025”h]”hŒAthira Rajeev, 2 Mar 2025”…””}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´KhhØh²hubhŒtopic”“”)”}”(hŒ Contents ”h]”(hÜ)”}”(hŒContents”h]”hŒContents”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhþh³hÇh´K ubhŒ bullet_list”“”)”}”(hhh]”hŒ list_item”“”)”}”(hhh]”(hí)”}”(hhh]”hŒ reference”“”)”}”(hhh]”hŒHTM (Hardware Trace Macro)”…””}”(hjh²hh³Nh´Nubah}”(h]”hëah ]”h"]”h$]”h&]”Œrefid”Œhtm-hardware-trace-macro”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjubj)”}”(hhh]”(j)”}”(hhh]”hí)”}”(hhh]”j)”}”(hhh]”hŒBasic overview”…””}”(hj=h²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”Œrefid”Œbasic-overview”uh1jhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubj)”}”(hhh]”hí)”}”(hhh]”j)”}”(hhh]”hŒHTM debugfs example usage”…””}”(hj_h²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”Œrefid”Œhtm-debugfs-example-usage”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubj)”}”(hhh]”hí)”}”(hhh]”j)”}”(hhh]”hŒRead the HTM trace data”…””}”(hjh²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”Œrefid”Œread-the-htm-trace-data”uh1jhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubj)”}”(hhh]”hí)”}”(hhh]”j)”}”(hhh]”hŒ'Benefits of using HTM debugfs interface”…””}”(hj£h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”Œrefid”Œ'benefits-of-using-htm-debugfs-interface”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhhþh²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1hüh³hÇh´K hhØh²hubh×)”}”(hhh]”(hÜ)”}”(hŒBasic overview”h]”hŒBasic overview”…””}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÔjFuh1hÛhjÚh²hh³hÇh´Kubhí)”}”(hXÁH_HTM is used as an interface for executing Hardware Trace Macro (HTM) functions, including setup, configuration, control and dumping of the HTM data. For using HTM, it is required to setup HTM buffers and HTM operations can be controlled using the H_HTM hcall. The hcall can be invoked for any core/chip of the system from within a partition itself. To use this feature, a debugfs folder called "htmdump" is present under /sys/kernel/debug/powerpc.”h]”hXÅH_HTM is used as an interface for executing Hardware Trace Macro (HTM) functions, including setup, configuration, control and dumping of the HTM data. For using HTM, it is required to setup HTM buffers and HTM operations can be controlled using the H_HTM hcall. The hcall can be invoked for any core/chip of the system from within a partition itself. To use this feature, a debugfs folder called “htmdump†is present under /sys/kernel/debug/powerpc.”…””}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´KhjÚh²hubeh}”(h]”jLah ]”h"]”Œbasic overview”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)”}”(hhh]”(hÜ)”}”(hŒHTM debugfs example usage”h]”hŒHTM debugfs example usage”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÔjhuh1hÛhjh²hh³hÇh´KubhŒ literal_block”“”)”}”(hŒ«# ls /sys/kernel/debug/powerpc/htmdump/ coreindexonchip htmcaps htmconfigure htmflags htminfo htmsetup htmstart htmstatus htmtype nodalchipindex nodeindex trace”h]”hŒ«# ls /sys/kernel/debug/powerpc/htmdump/ coreindexonchip htmcaps htmconfigure htmflags htminfo htmsetup htmstart htmstatus htmtype nodalchipindex nodeindex trace”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œsh”Œhighlight_args”}”uh1jh³hÇh´Khjh²hubhí)”}”(hŒDetails on each file:”h]”hŒDetails on each file:”…””}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K"hjh²hubj)”}”(hhh]”(j)”}”(hŒ^nodeindex, nodalchipindex, coreindexonchip specifies which partition to configure the HTM for.”h]”hí)”}”(hj9h]”hŒ^nodeindex, nodalchipindex, coreindexonchip specifies which partition to configure the HTM for.”…””}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K$hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒGhtmtype: specifies the type of HTM. Supported target is hardwareTarget.”h]”hí)”}”(hjPh]”hŒGhtmtype: specifies the type of HTM. Supported target is hardwareTarget.”…””}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K%hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒtrace: is to read the HTM data.”h]”hí)”}”(hjgh]”hŒtrace: is to read the HTM data.”…””}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K&hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒ‡htmconfigure: Configure/Deconfigure the HTM. Writing 1 to the file will configure the trace, writing 0 to the file will do deconfigure.”h]”hí)”}”(hj~h]”hŒ‡htmconfigure: Configure/Deconfigure the HTM. Writing 1 to the file will configure the trace, writing 0 to the file will do deconfigure.”…””}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K'hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒxhtmstart: start/Stop the HTM. Writing 1 to the file will start the tracing, writing 0 to the file will stop the tracing.”h]”hí)”}”(hj•h]”hŒxhtmstart: start/Stop the HTM. Writing 1 to the file will start the tracing, writing 0 to the file will stop the tracing.”…””}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K(hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒbhtmstatus: get the status of HTM. This is needed to understand the HTM state after each operation.”h]”hí)”}”(hj¬h]”hŒbhtmstatus: get the status of HTM. This is needed to understand the HTM state after each operation.”…””}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K)hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒFhtmsetup: set the HTM buffer size. Size of HTM buffer is in power of 2”h]”hí)”}”(hjÃh]”hŒFhtmsetup: set the HTM buffer size. Size of HTM buffer is in power of 2”…””}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K*hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒ¡htminfo: provides the system processor configuration details. This is needed to understand the appropriate values for nodeindex, nodalchipindex, coreindexonchip.”h]”hí)”}”(hjÚh]”hŒ¡htminfo: provides the system processor configuration details. This is needed to understand the appropriate values for nodeindex, nodalchipindex, coreindexonchip.”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K+hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒthtmcaps : provides the HTM capabilities like minimum/maximum buffer size, what kind of tracing the HTM supports etc.”h]”hí)”}”(hjñh]”hŒthtmcaps : provides the HTM capabilities like minimum/maximum buffer size, what kind of tracing the HTM supports etc.”…””}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K,hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubj)”}”(hŒehtmflags : allows to pass flags to hcall. Currently supports controlling the wrapping of HTM buffer. ”h]”hí)”}”(hŒdhtmflags : allows to pass flags to hcall. Currently supports controlling the wrapping of HTM buffer.”h]”hŒdhtmflags : allows to pass flags to hcall. Currently supports controlling the wrapping of HTM buffer.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K-hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jh³hÇh´K$hjh²hubhí)”}”(hŒ2To see the system processor configuration details:”h]”hŒ2To see the system processor configuration details:”…””}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K/hjh²hubj)”}”(hŒ># cat /sys/kernel/debug/powerpc/htmdump/htminfo > htminfo_file”h]”hŒ># cat /sys/kernel/debug/powerpc/htmdump/htminfo > htminfo_file”…””}”hj4sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj!‰j"Œsh”j$}”uh1jh³hÇh´K1hjh²hubhí)”}”(hŒ,The result can be interpreted using hexdump.”h]”hŒ,The result can be interpreted using hexdump.”…””}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K5hjh²hubhí)”}”(hŒuTo collect HTM traces for a partition represented by nodeindex as zero, nodalchipindex as 1 and coreindexonchip as 12”h]”hŒuTo collect HTM traces for a partition represented by nodeindex as zero, nodalchipindex as 1 and coreindexonchip as 12”…””}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K7hjh²hubj)”}”(hŒ# cd /sys/kernel/debug/powerpc/htmdump/ # echo 2 > htmtype # echo 33 > htmsetup ( sets 8GB memory for HTM buffer, number is size in power of 2 )”h]”hŒ# cd /sys/kernel/debug/powerpc/htmdump/ # echo 2 > htmtype # echo 33 > htmsetup ( sets 8GB memory for HTM buffer, number is size in power of 2 )”…””}”hj`sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj!‰j"Œsh”j$}”uh1jh³hÇh´K:hjh²hubhí)”}”(hŒ htmtype # echo 0 > nodeindex # echo 1 > nodalchipindex # echo 12 > coreindexonchip # echo 1 > htmflags # to set noWrap for HTM buffers # echo 1 > htmconfigure # Configure the HTM # echo 1 > htmstart # Start the HTM # echo 0 > htmstart # Stop the HTM # echo 0 > htmconfigure # Deconfigure the HTM # cat htmstatus # Dump the status of HTM entries as data”h]”hX§# cd /sys/kernel/debug/powerpc/htmdump/ # echo 2 > htmtype # echo 0 > nodeindex # echo 1 > nodalchipindex # echo 12 > coreindexonchip # echo 1 > htmflags # to set noWrap for HTM buffers # echo 1 > htmconfigure # Configure the HTM # echo 1 > htmstart # Start the HTM # echo 0 > htmstart # Stop the HTM # echo 0 > htmconfigure # Deconfigure the HTM # cat htmstatus # Dump the status of HTM entries as data”…””}”hj~sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj!‰j"Œsh”j$}”uh1jh³hÇh´KBhjh²hubhí)”}”(hŒ\Above will set the htmtype and core details, followed by executing respective HTM operation.”h]”hŒ\Above will set the htmtype and core details, followed by executing respective HTM operation.”…””}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´KPhjh²hubeh}”(h]”jnah ]”h"]”Œhtm debugfs example usage”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)”}”(hhh]”(hÜ)”}”(hŒRead the HTM trace data”h]”hŒRead the HTM trace data”…””}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÔjŠuh1hÛhj£h²hh³hÇh´KSubhí)”}”(hŒ”After starting the trace collection, run the workload of interest. Stop the trace collection after required period of time, and read the trace file.”h]”hŒ”After starting the trace collection, run the workload of interest. Stop the trace collection after required period of time, and read the trace file.”…””}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´KUhj£h²hubj)”}”(hŒ:# cat /sys/kernel/debug/powerpc/htmdump/trace > trace_file”h]”hŒ:# cat /sys/kernel/debug/powerpc/htmdump/trace > trace_file”…””}”hjÂsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj!‰j"Œsh”j$}”uh1jh³hÇh´KYhj£h²hubhí)”}”(hŒªThis trace file will contain the relevant instruction traces collected during the workload execution. And can be used as input file for trace decoders to understand data.”h]”hŒªThis trace file will contain the relevant instruction traces collected during the workload execution. And can be used as input file for trace decoders to understand data.”…””}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´K]hj£h²hubeh}”(h]”jah ]”h"]”Œread the htm trace data”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KSubh×)”}”(hhh]”(hÜ)”}”(hŒ'Benefits of using HTM debugfs interface”h]”hŒ'Benefits of using HTM debugfs interface”…””}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÔj¬uh1hÛhjçh²hh³hÇh´Kbubhí)”}”(hX7It is now possible to collect traces for a particular core/chip from within any partition of the system and decode it. Through this enablement, a small partition can be dedicated to collect the trace data and analyze to provide important information for Performance analysis, Software tuning, or Hardware debug.”h]”hX7It is now possible to collect traces for a particular core/chip from within any partition of the system and decode it. Through this enablement, a small partition can be dedicated to collect the trace data and analyze to provide important information for Performance analysis, Software tuning, or Hardware debug.”…””}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hìh³hÇh´Kdhjçh²hubeh}”(h]”j²ah ]”h"]”Œ'benefits of using htm debugfs interface”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kbubeh}”(h]”(j-hÕeh ]”h"]”(Œhtm (hardware trace macro)”Œhtm”eh$]”h&]”uh1hÖhhh²hh³hÇh´KŒexpect_referenced_by_name”}”jhÊsŒexpect_referenced_by_id”}”hÕhÊsubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j<Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”hÕ]”hÊasŒnameids”}”(jhÕjj-j×jÓjýjLj jnjäjj j²uŒ nametypes”}”(jˆj‰j׉jý‰j ‰jä‰j ‰uh}”(hÕhØj-hØjÓhþjLjÚjnjjj£j²jçhëjjFj=jhj_jŠjj¬j£uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jJKs…”R”Œparse_messages”]”Œtransform_messages”]”hŒsystem_message”“”)”}”(hhh]”hí)”}”(hhh]”hŒ)Hyperlink target "htm" is not referenced.”…””}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”uh1hìhj£ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j¡ubaŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.