€•ˆEŒ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/i2c/i2c-protocol”Œ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/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/it_IT/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ja_JP/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ko_KR/i2c/i2c-protocol”Œ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/i2c/i2c-protocol”Œ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/i2c/i2c-protocol”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒThe I2C Protocol”h]”hŒThe I2C Protocol”…””}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³Œ>/var/lib/git/docbuild/linux/Documentation/i2c/i2c-protocol.rst”h´KubhŒ paragraph”“”)”}”(hŒ_This document is an overview of the basic I2C transactions and the kernel APIs to perform them.”h]”hŒ_This document is an overview of the basic I2C transactions and the kernel APIs to perform them.”…””}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khh·h²hubh¶)”}”(hhh]”(h»)”}”(hŒKey to symbols”h]”hŒKey to symbols”…””}”(hhÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhÛh²hh³hÊh´K ubhŒtable”“”)”}”(hhh]”hŒtgroup”“”)”}”(hhh]”(hŒcolspec”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1höhhóubh÷)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K=uh1höhhóubhŒtbody”“”)”}”(hhh]”(hŒrow”“”)”}”(hhh]”(hŒentry”“”)”}”(hhh]”hÌ)”}”(hŒS”h]”hŒS”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”hÌ)”}”(hŒStart condition”h]”hŒStart condition”…””}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒP”h]”hŒP”…””}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubj)”}”(hhh]”hÌ)”}”(hŒStop condition”h]”hŒStop condition”…””}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒ Rd/Wr (1 bit)”h]”hŒ Rd/Wr (1 bit)”…””}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒubj)”}”(hhh]”hÌ)”}”(hŒ)Read/Write bit. Rd equals 1, Wr equals 0.”h]”hŒ)Read/Write bit. Rd equals 1, Wr equals 0.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒ A, NA (1 bit)”h]”hŒ A, NA (1 bit)”…””}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubj)”}”(hhh]”hÌ)”}”(hŒ0Acknowledge (ACK) and Not Acknowledge (NACK) bit”h]”hŒ0Acknowledge (ACK) and Not Acknowledge (NACK) bit”…””}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒAddr (7 bits)”h]”hŒAddr (7 bits)”…””}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubj)”}”(hhh]”hÌ)”}”(hŒNI2C 7 bit address. Note that this can be expanded to get a 10 bit I2C address.”h]”hŒNI2C 7 bit address. Note that this can be expanded to get a 10 bit I2C address.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒData (8 bits)”h]”hŒData (8 bits)”…””}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubj)”}”(hhh]”hÌ)”}”(hŒA plain data byte.”h]”hŒA plain data byte.”…””}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hhh]”(j)”}”(hhh]”hÌ)”}”(hŒ[..]”h]”hŒ[..]”…””}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubj)”}”(hhh]”hÌ)”}”(hŒEData sent by I2C device, as opposed to data sent by the host adapter.”h]”hŒEData sent by I2C device, as opposed to data sent by the host adapter.”…””}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hhóubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1hñhhîubah}”(h]”h ]”h"]”h$]”h&]”uh1hìhhÛh²hh³hÊh´Nubeh}”(h]”Œkey-to-symbols”ah ]”h"]”Œkey to symbols”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)”}”(hhh]”(h»)”}”(hŒSimple send transaction”h]”hŒSimple send transaction”…””}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj±h²hh³hÊh´KubhÌ)”}”(hŒ"Implemented by i2c_master_send()::”h]”hŒ!Implemented by i2c_master_send():”…””}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´Khj±h²hubhŒ literal_block”“”)”}”(hŒ2S Addr Wr [A] Data [A] Data [A] ... [A] Data [A] P”h]”hŒ2S Addr Wr [A] Data [A] Data [A] ... [A] Data [A] P”…””}”hjÒsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jÐh³hÊh´Khj±h²hubeh}”(h]”Œsimple-send-transaction”ah ]”h"]”Œsimple send transaction”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)”}”(hhh]”(h»)”}”(hŒSimple receive transaction”h]”hŒSimple receive transaction”…””}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjêh²hh³hÊh´K"ubhÌ)”}”(hŒ"Implemented by i2c_master_recv()::”h]”hŒ!Implemented by i2c_master_recv():”…””}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K$hjêh²hubjÑ)”}”(hŒ1S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P”h]”hŒ1S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P”…””}”hj sbah}”(h]”h ]”h"]”h$]”h&]”jàjáuh1jÐh³hÊh´K&hjêh²hubeh}”(h]”Œsimple-receive-transaction”ah ]”h"]”Œsimple receive transaction”ah$]”h&]”uh1hµhh·h²hh³hÊh´K"ubh¶)”}”(hhh]”(h»)”}”(hŒCombined transactions”h]”hŒCombined transactions”…””}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K*ubhÌ)”}”(hŒImplemented by i2c_transfer().”h]”hŒImplemented by i2c_transfer().”…””}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K,hjh²hubhÌ)”}”(hŒ½They are just like the above transactions, but instead of a stop condition P a start condition S is sent and the transaction continues. An example of a byte read, followed by a byte write::”h]”hŒ¼They are just like the above transactions, but instead of a stop condition P a start condition S is sent and the transaction continues. An example of a byte read, followed by a byte write:”…””}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K.hjh²hubjÑ)”}”(hŒ0S Addr Rd [A] [Data] NA S Addr Wr [A] Data [A] P”h]”hŒ0S Addr Rd [A] [Data] NA S Addr Wr [A] Data [A] P”…””}”hjLsbah}”(h]”h ]”h"]”h$]”h&]”jàjáuh1jÐh³hÊh´K2hjh²hubeh}”(h]”Œcombined-transactions”ah ]”h"]”Œcombined transactions”ah$]”h&]”uh1hµhh·h²hh³hÊh´K*ubh¶)”}”(hhh]”(h»)”}”(hŒModified transactions”h]”hŒModified transactions”…””}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjbh²hh³hÊh´K6ubhÌ)”}”(hŒÎThe following modifications to the I2C protocol can also be generated by setting these flags for I2C messages. With the exception of I2C_M_NOSTART, they are usually only needed to work around device issues:”h]”hŒÎThe following modifications to the I2C protocol can also be generated by setting these flags for I2C messages. With the exception of I2C_M_NOSTART, they are usually only needed to work around device issues:”…””}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K8hjbh²hubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒÛI2C_M_IGNORE_NAK: Normally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout. ”h]”(hŒterm”“”)”}”(hŒI2C_M_IGNORE_NAK:”h]”hŒI2C_M_IGNORE_NAK:”…””}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´K@hjˆubhŒ definition”“”)”}”(hhh]”hÌ)”}”(hŒÈNormally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout.”h]”hŒÈNormally message is interrupted immediately if there is [NA] from the client. Setting this flag treats any [NA] as [A], and all of message is sent. These messages may still fail to SCL lo->hi timeout.”…””}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K=hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j†h³hÊh´K@hjƒubj‡)”}”(hŒ@I2C_M_NO_RD_ACK: In a read message, master A/NA bit is skipped. ”h]”(j)”}”(hŒI2C_M_NO_RD_ACK:”h]”hŒI2C_M_NO_RD_ACK:”…””}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´KChj»ubj)”}”(hhh]”hÌ)”}”(hŒ.In a read message, master A/NA bit is skipped.”h]”hŒ.In a read message, master A/NA bit is skipped.”…””}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KChjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j†h³hÊh´KChjƒh²hubj‡)”}”(hXI2C_M_NOSTART: In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like:: S Addr Rd [A] [Data] NA Data [A] P If you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don't try this. This is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices. ”h]”(j)”}”(hŒI2C_M_NOSTART:”h]”hŒI2C_M_NOSTART:”…””}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´KThjêubj)”}”(hhh]”(hÌ)”}”(hŒ¨In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like::”h]”hŒ«In a combined transaction, no ‘S Addr Wr/Rd [A]’ is generated at some point. For example, setting I2C_M_NOSTART on the second partial message generates something like:”…””}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KFhjüubjÑ)”}”(hŒ"S Addr Rd [A] [Data] NA Data [A] P”h]”hŒ"S Addr Rd [A] [Data] NA Data [A] P”…””}”hj sbah}”(h]”h ]”h"]”h$]”h&]”jàjáuh1jÐh³hÊh´KJhjüubhÌ)”}”(hŒÔIf you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don't try this.”h]”hŒÖIf you set the I2C_M_NOSTART variable for the first partial message, we do not generate Addr, but we do generate the start condition S. This will probably confuse all other clients on your bus, so don’t try this.”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KLhjüubhÌ)”}”(hŒÚThis is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices.”h]”hŒÚThis is often used to gather transmits from multiple data buffers in system memory into something that appears as a single transfer to the I2C device but may also be used between direction changes by some rare devices.”…””}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KQhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j†h³hÊh´KThjƒh²hubj‡)”}”(hŒãI2C_M_REV_DIR_ADDR: This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example:: S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P ”h]”(j)”}”(hŒI2C_M_REV_DIR_ADDR:”h]”hŒI2C_M_REV_DIR_ADDR:”…””}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´K[hjCubj)”}”(hhh]”(hÌ)”}”(hŒ˜This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example::”h]”hŒ—This toggles the Rd/Wr flag. That is, if you want to do a write, but need to emit an Rd instead of a Wr, or vice versa, you set this flag. For example:”…””}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´KWhjUubjÑ)”}”(hŒ2S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P”h]”hŒ2S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P”…””}”hjfsbah}”(h]”h ]”h"]”h$]”h&]”jàjáuh1jÐh³hÊh´K[hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jœhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j†h³hÊh´K[hjƒh²hubj‡)”}”(hŒÅI2C_M_STOP: Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don't want to get interrupted between the messages of one transfer.”h]”(j)”}”(hŒ I2C_M_STOP:”h]”hŒ I2C_M_STOP:”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jŒh³hÊh´K_hj€ubj)”}”(hhh]”hÌ)”}”(hŒ¹Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don't want to get interrupted between the messages of one transfer.”h]”hŒ»Force a stop condition (P) after the message. Some I2C related protocols like SCCB require that. Normally, you really don’t want to get interrupted between the messages of one transfer.”…””}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³hÊh´K^hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jœhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j†h³hÊh´K_hjƒh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjbh²hh³hÊh´Nubeh}”(h]”Œmodified-transactions”ah ]”h"]”Œmodified transactions”ah$]”h&]”uh1hµhh·h²hh³hÊh´K6ubeh}”(h]”Œthe-i2c-protocol”ah ]”h"]”Œthe i2c protocol”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(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”jŒ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”}”Œnameids”}”(jÂj¿j®j«jçjäjjj_j\jºj·uŒ nametypes”}”(j‰j®‰jç‰j‰j_‰jº‰uh}”(j¿h·j«hÛjäj±jjêj\jj·jbuŒ 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”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.