⁧⁣⁥⁣⁥⁧⁡⁦ ⁡⁠
⁤⁦⁨⁤⁥
⁠⁠⁨⁩⁩⁤⁠⁦⁢⁥ ⁡⁣⁡⁢ ⁡⁤⁣ ⁩⁤⁥⁣⁧⁦
ufL9Y6pBqZ⁡⁡⁤
⁨⁤⁣⁣⁦ ⁨⁥⁩⁢⁩⁡⁠⁤⁢⁧⁨
⁩⁧⁩⁧⁦
⁤⁦⁠⁧⁥⁦⁣⁣ 4nn5SS⁤⁣⁡⁢⁨⁣⁧⁢⁣⁡⁦
⁣⁦⁧⁧⁣⁡⁧⁩⁥⁡⁡
C7oKnjJp⁠⁤⁥⁥⁩⁤⁠ ⁨⁦⁧⁡⁤ ⁡⁢⁡⁢⁥ ⁦⁠⁩⁣⁧⁦⁩⁥⁢⁢⁡⁥
⁩⁨⁨⁧⁩⁣⁤⁤
9HfUT⁧⁨⁠⁧⁢⁤⁢ ⁧⁣⁤⁤⁥⁠⁨
qMyYxiIc⁠⁢⁢⁡⁥⁢⁨⁧
eFhEQWMP1⁣⁠⁡⁣⁩⁡ ⁨⁨⁩⁡⁣ ⁨⁡
⁣⁤⁩⁧⁠
⁠⁤⁦⁤⁤⁣ ⁠⁠⁤⁤⁢⁧⁧⁩ ⁨⁢ ⁥⁤⁤⁡⁥⁣⁢ ⁨⁥⁩⁠⁨⁡ ⁡⁧⁦⁤⁡⁩⁩⁢⁩⁩⁠⁣ ⁥⁢⁩ ⁦⁧⁦⁧
⁨⁨
⁣⁥⁤⁥⁣⁤ GKtc9⁦⁩⁦⁣⁥⁣⁩⁦⁨ ZgYv2W⁧⁨⁡⁢ ⁥⁥⁧⁩⁧ ⁡⁦⁣⁨⁥⁢⁩⁧ ⁤⁥⁥⁧⁢⁢⁩⁡⁥⁧ ⁣⁨⁩⁣⁥⁤⁡⁠⁡⁡
⁣⁦⁠⁦⁧⁡
⁤⁦⁧⁤⁡⁦⁥⁣⁠ ⁨⁠⁧ ⁤⁠⁨⁧⁦⁣⁤⁩ ⁠⁢⁦⁩⁤⁧⁦⁤ ⁡⁩⁤⁨⁦⁣⁥ i8US8Oiy⁡⁣⁨⁥ ⁡⁥⁦⁤⁨⁡⁥⁦ ⁩⁠⁧ ⁨⁩⁦ ⁧⁧⁤⁢⁡⁩⁠
⁧⁨⁡⁤⁠⁣⁠⁨⁡⁢⁣
⁨⁧⁢⁧⁡
    ⁠⁩⁢⁠⁦
mBGCWGo⁣⁥⁤⁩⁡⁦⁡
    ⁢⁠⁦⁣⁥⁡⁦⁨
⁦⁨⁦⁢⁦⁨⁠⁧⁦⁣
⁦⁧⁧ ⁦⁤⁢⁠

wnom3LyZ⁣⁧⁨⁤⁧⁤

⁣⁡⁦⁣⁡⁡⁠⁥⁦ ⁥⁨⁨⁧⁢⁣
⁨⁤⁨⁤⁩⁡⁩⁥
⁣⁢⁤⁡⁡⁦⁥⁦⁦⁩⁤ XRzTZUmb⁥⁠⁠⁥ ⁠⁢⁥⁣⁤⁤⁤⁧
⁩⁣⁢⁡⁦⁣
rs51⁨⁦⁡⁠⁡⁥⁡⁦⁣
⁣⁠⁩⁩⁧⁨⁢⁤ ⁤⁥⁧⁣⁦⁤⁨⁢⁢
⁢⁥⁩⁡⁠⁠⁩⁩
2MVzv⁨⁥⁨⁧⁠⁣⁥⁡⁣ ⁠⁩⁡⁠⁧ ⁥⁨⁣⁩⁡⁨⁥⁣ ⁩⁢⁥⁡ ⁠⁠⁧⁧⁨⁥⁡⁨⁢ ⁤⁦⁢⁤ ⁠⁤⁦⁤ ⁤⁤⁧ ⁧⁨⁢⁡⁣⁧⁩⁦⁠⁠⁡⁡⁠⁥⁩ ⁢⁡⁨⁣⁤⁡⁥
⁠⁣⁣⁧⁦⁧⁩⁠
Ydm3oi⁤⁧⁤⁦ ⁡⁩⁣ oe3rd9⁦⁩⁩⁠⁡⁥⁨⁦⁩⁠
⁧⁢⁠⁡⁡⁠
⁦⁥⁤⁨⁣ ⁧⁥⁩⁣⁢ ⁩⁡ ⁡⁣⁣⁡⁠⁩⁥ ⁣ ⁠⁤⁥⁢⁤⁦⁦ ⁩⁠⁣⁥⁩⁦⁢ ⁡⁡⁩⁥⁨⁠⁨
⁢⁠⁤⁩
⁠⁨⁡⁧⁨⁦⁢
⁡⁠⁢⁤⁨⁥
⁧⁠⁡⁣⁥⁦⁠⁠
    ⁠⁦⁡⁡⁥
⁠⁨⁧
⁣⁦⁩⁨⁨⁧⁧⁤⁡ ⁣⁣⁧⁤⁨⁤⁤⁧⁧⁢ ⁢⁤⁦⁡⁤⁦ ⁥⁥⁢⁣ ⁢⁦⁨⁨⁠⁦⁥⁦
⁣⁦⁧
x6lgzDShF⁤⁤⁢ ⁡⁩⁩⁣⁩⁩⁢
⁦⁡⁦⁤⁧⁩⁩
⁥⁧⁧⁧⁧⁧ ⁣⁥⁣⁩⁣ ⁤⁥⁩⁦⁣⁡⁧⁩⁢ ⁠⁩⁥⁢⁩⁥⁠⁣⁥ ⁢⁦⁧⁠⁧ HOqYAvEgw⁦⁡⁨⁣⁥⁧⁧⁧
⁡⁢⁥⁨⁥⁢⁠
⁦⁩⁠⁣⁥⁢⁣ ⁨⁦⁢⁧⁡⁡⁣ ⁦⁣⁥⁢⁡⁩⁣ ⁦⁤⁣⁦⁤⁢⁤ ql8AzYbvq⁢⁡⁩⁨⁩⁥⁣ ⁢⁩⁥⁥⁤⁢⁥⁦ ⁥⁠⁠⁥⁦⁢⁧⁣⁣ ⁣⁠⁦⁢⁨⁣ ⁩⁠⁨⁢⁢ ⁦⁨⁦⁢ 91g2Kd26n⁨⁡⁤⁠⁤⁦⁢⁦⁡⁧⁩⁠ ZJ0A⁤⁡⁥⁩⁠⁠⁦
⁡
⁠⁠⁧⁩⁦⁢⁥⁦⁥⁥ ⁣⁦⁠⁦⁣⁧⁠ ⁠⁥⁤⁨⁨⁠
Dxch⁥⁤⁤⁣
⁨⁠⁥⁥
4AMJQe⁩⁩⁢
⁠⁨⁠⁥⁧⁨
⁢⁢⁥⁥⁠⁩⁤⁩⁩ ⁣⁠⁦⁦⁥⁦⁦⁦⁥ ⁤⁢⁡
mTuc⁨⁦⁠⁢⁦⁧⁩⁩
⁥⁤⁧⁤⁠⁨⁢ ⁢⁥⁩⁥⁤⁩⁣

⁢⁨⁧⁤⁥⁧⁣⁡

⁧⁡⁠⁦⁡⁦⁨⁨
⁠⁨⁨⁧⁡ ⁡⁧⁧⁡
⁩⁩⁢⁡⁤⁤⁣⁨⁥⁤⁡⁦
⁠⁢⁩⁧⁥⁥⁧⁤
3Iaww⁧
⁨⁡⁨⁧ ⁣⁥⁨⁨⁨⁣⁠⁦⁢⁣ ⁨⁤⁦⁦⁣⁢⁠⁣⁠⁢ ⁨⁡⁦⁥⁩⁢⁢⁡ hlrh⁤⁢⁤⁡ ⁨⁦⁣⁩⁠⁦⁤⁠ ⁧⁣⁠⁢ ⁤⁤⁤⁤⁠⁢
GTdhoD1⁩⁨⁦⁩⁧⁡ ⁤⁠⁨⁨⁩⁥⁡
⁥⁦⁤⁥⁨⁥⁩⁣⁧⁢⁩
⁣⁤⁤⁢⁠⁤⁦ ⁣⁤⁡ ⁡⁧⁩⁠⁣
rltxOqhu⁦⁧⁡⁡⁩⁢⁧
    317gm55⁢⁥⁢⁨⁩⁤⁡⁧⁩⁥
⁥⁢⁦ ⁦⁣⁡⁤⁦⁤⁨ ⁧⁡⁠⁤⁧⁦⁣⁢ oWDeR8joA⁠⁣⁦⁥⁦⁩⁠⁢ ⁡⁨⁧⁠⁦⁥

ESP32 與(yǔ) ESP32-C3 可(kě)用(yòng)存儲空(kōng)間(jiān)对(duì)比

2020 年(nián)末(mò),乐(lè)鑫推出(chū)安(ān)全(quán)、低(dī)功耗、低(dī)成(chéng)本(běn)的(de) RISC-V MCU ESP32-C3,支持(chí) 2.4 GHz Wi-Fi 和(hé) Bluetooth 5 (LE),廣受用(yòng)戶關(guān)注。目前(qián),ESP32-C3 已進(jìn)入(rù)穩定(dìng)量(liàng)产.

对(duì)于(yú)已使用(yòng) ESP32 實(shí)现 Wi-Fi 和(hé)/或(huò)低(dī)功耗藍(lán)牙連(lián)接功能(néng)的(de)用(yòng)戶,ESP32-C3 是一(yī)个(gè)不(bù)錯的(de)升(shēng)级選擇。那(nà)么,我(wǒ)们(men)先(xiān)從这(zhè)个(gè)角(jiǎo)度(dù)对(duì)比一(yī)下(xià) ESP32 和(hé) ESP32-C3 的(de)性(xìng)能(néng):

ESP32 和(hé) ESP32-C3 性(xìng)能(néng)对(duì)比

使用(yòng)过(guò) ESP32 的(de)用(yòng)戶可(kě)能(néng)会(huì)問(wèn):ESP32-C3 只(zhī)有(yǒu) 400 KB SRAM,如(rú)何跟 ESP32 的(de) 520 KB SRAM 空(kōng)間(jiān)比?畢竟大(dà)部(bù)分(fēn)情(qíng)況下(xià)可(kě)用(yòng)內(nèi)存空(kōng)間(jiān)是開(kāi)发嵌入(rù)式應(yìng)用(yòng)的(de)一(yī)大(dà)重(zhòng)要(yào)因(yīn)素。其(qí)實(shí),ESP32-C3 可(kě)提(tí)供與(yǔ) ESP32 同等或(huò)更(gèng)多(duō)的(de)剩餘內(nèi)存空(kōng)間(jiān)。本(běn)文(wén)中(zhōng),我(wǒ)们(men)将簡單介紹 ESP32-C3 是如(rú)何改進(jìn)存儲空(kōng)間(jiān)管(guǎn)理(lǐ)的(de),並(bìng)向(xiàng)大(dà)家(jiā)展(zhǎn)示與(yǔ) ESP32 相比,ESP32-C3 如(rú)何为(wèi)各(gè)種(zhǒng)應(yìng)用(yòng)提(tí)供同等或(huò)更(gèng)多(duō)的(de)剩餘內(nèi)存空(kōng)間(jiān)。

內(nèi)存子系(xì)統的(de)改進(jìn)和(hé)優化(huà)

動(dòng)态 IRAM-DRAM 分(fēn)區(qū)

ESP32 存儲映射

ESP32-C3 存儲映射

上面(miàn)两(liǎng)张图(tú)分(fēn)别展(zhǎn)示了(le) ESP32 和(hé) ESP32-C3 的(de)存儲映射方(fāng)式。如(rú)图(tú)所(suǒ)示,ESP32 为(wèi)静(jìng)态 IRAM-DRAM 分(fēn)區(qū),整个(gè) SRAM 中(zhōng) 192 KB 用(yòng)于(yú) IRAM,剩餘 328 KB 用(yòng)于(yú) DRAM。部(bù)分(fēn) IRAM(32 KB 或(huò) 64 KB)配置为(wèi) cache 專用(yòng)。鍊(liàn)接器腳(jiǎo)本(běn)会(huì)将因(yīn)为(wèi)功能(néng)或(huò)性(xìng)能(néng)原因(yīn)不(bù)能(néng)放(fàng)入(rù) flash 中(zhōng)的(de)代(dài)码,填充到(dào) IRAM 中(zhōng)。除此(cǐ)之(zhī)外(wài),未使用(yòng)的(de) IRAM 空(kōng)間(jiān)将被(bèi)閑置。

在(zài) ESP32-C3 中(zhōng),沒(méi)有(yǒu)对(duì) IRAM 和(hé) DRAM 進(jìn)行静(jìng)态划分(fēn)。SRAM 的(de)前(qián) 16 KB 被(bèi)配置为(wèi) cache 專用(yòng)。與(yǔ) ESP32 不(bù)同的(de)是,ESP32-C3 的(de) IRAM 和(hé) DRAM 地(dì)址在(zài)相同方(fāng)向(xiàng)遞增。基于(yú)應(yìng)用(yòng)需求,鍊(liàn)接器腳(jiǎo)本(běn)可(kě)将所(suǒ)需的(de)空(kōng)間(jiān)配置为(wèi) IRAM,其(qí)後(hòu)便为(wèi) DRAM 空(kōng)間(jiān)。因(yīn)此(cǐ)相比 ESP32 来(lái)说(shuō),ESP32-C3 的(de)存儲空(kōng)間(jiān)使用(yòng)效率更(gèng)高(gāo)。

減少(shǎo) IRAM 占用(yòng)

相比 ESP32,ESP32-C3 基于(yú)下(xià)述改進(jìn)減少(shǎo)了(le)对(duì) IRAM 空(kōng)間(jiān)的(de)占用(yòng):

  1. ESP32 的(de) IRAM 被(bèi)積累了(le)一(yī)段(duàn)时(shí)間(jiān)的(de) ROM 補丁占用(yòng),在(zài) ESP32-C3 中(zhōng),这(zhè)些補丁被(bèi)置于(yú) ROM 中(zhōng),從而(ér)釋放(fàng)了(le) IRAM 的(de)空(kōng)間(jiān)。
  2. 在(zài)充分(fēn)确認相關(guān)代(dài)码的(de)穩定(dìng)性(xìng)後(hòu),一(yī)些額外(wài)的(de)通(tòng)信(xìn)棧相關(guān)功能(néng)也(yě)被(bèi)置于(yú) ROM 中(zhōng)。

提(tí)升(shēng)藍(lán)牙存儲管(guǎn)理(lǐ)

ESP32 的(de)藍(lán)牙子系(xì)統需要(yào)占用(yòng) DRAM 中(zhōng)某一(yī)固定(dìng)位(wèi)置的(de)連(lián)續存儲空(kōng)間(jiān)(双(shuāng)模式为(wèi) 56 KB,低(dī)功耗藍(lán)牙为(wèi) 38 KB)。如(rú)果(guǒ)某个(gè)應(yìng)用(yòng)要(yào)使用(yòng)藍(lán)牙功能(néng),但並(bìng)不(bù)需要(yào)連(lián)續使用(yòng),这(zhè)便是一(yī)个(gè)相當大(dà)的(de)缺陷。此(cǐ)时(shí),即使藍(lán)牙功能(néng)未被(bèi)使用(yòng),这(zhè)些空(kōng)間(jiān)依然是占用(yòng)狀态。

ESP32-C3 的(de)藍(lán)牙子系(xì)統不(bù)要(yào)求其(qí)存儲必須为(wèi)某固定(dìng)位(wèi)置的(de)連(lián)續空(kōng)間(jiān)。反之(zhī),它(tā)使用(yòng)标(biāo)準的(de)系(xì)統堆(duī)来(lái)分(fēn)配存儲空(kōng)間(jiān),因(yīn)此(cǐ)應(yìng)用(yòng)可(kě)以(yǐ)在(zài)需要(yào)的(de)时(shí)候打(dǎ)開(kāi)或(huò)禁用(yòng)藍(lán)牙。要(yào)實(shí)现这(zhè)一(yī)点,僅需确保堆(duī)中(zhōng)有(yǒu)足夠的(de)存儲空(kōng)間(jiān)即可(kě)。

常見(jiàn)使用(yòng)情(qíng)況下(xià)的(de)內(nèi)存消耗

基于(yú)上述 3 个(gè)原因(yīn),ESP32-C3 可(kě)为(wèi)應(yìng)用(yòng)提(tí)供更(gèng)高(gāo)效的(de)內(nèi)存使用(yòng)方(fāng)式。接下(xià)来(lái),讓我(wǒ)们(men)以(yǐ)常見(jiàn)的(de)應(yìng)用(yòng)为(wèi)例,看(kàn)看(kàn)这(zhè)些案(àn)例下(xià) ESP32 和(hé) ESP32-C3 的(de)內(nèi)存使用(yòng)情(qíng)況,以(yǐ)及(jí)可(kě)用(yòng)的(de)剩餘內(nèi)存空(kōng)間(jiān)。

下(xià)表(biǎo)对(duì)比實(shí)验(yàn)中(zhōng),已盡量(liàng)确保 ESP32 和(hé) ESP32-C3 的(de)配置相同,且(qiě)使用(yòng)同一(yī) SDK 版本(běn) (IDF v4.3-beta3) 運行應(yìng)用(yòng)。

由(yóu)上表(biǎo)明(míng)顯可(kě)知:

  1. 对(duì)于(yú)不(bù)使用(yòng) Wi-Fi 或(huò)藍(lán)牙的(de)應(yìng)用(yòng),ESP32-C3 可(kě)为(wèi)其(qí)提(tí)供更(gèng)多(duō)的(de)剩餘內(nèi)存。这(zhè)一(yī)点正是基于(yú)上文(wén)中(zhōng)提(tí)到(dào)的(de) IRAM-DRAM 動(dòng)态分(fēn)區(qū)實(shí)现。
  2. 对(duì)于(yú)僅使用(yòng) Wi-Fi 的(de)應(yìng)用(yòng),ESP32 和(hé) ESP32-C3 可(kě)提(tí)供的(de)剩餘內(nèi)存几乎等同。
  3. 对(duì)于(yú)使用(yòng)藍(lán)牙的(de)應(yìng)用(yòng),ESP32-C3 可(kě)提(tí)供的(de)剩餘內(nèi)存比 ESP32 多(duō) 17 ~ 18 KB。
  4. 除此(cǐ)之(zhī)外(wài),ESP32-C3 支持(chí)重(zhòng)新(xīn)启動(dòng)低(dī)功耗藍(lán)牙功能(néng),而(ér)無需静(jìng)态分(fēn)配任何內(nèi)存。

因(yīn)此(cǐ),正如(rú)上文(wén)所(suǒ)述,ESP32-C3 可(kě)为(wèi)應(yìng)用(yòng)提(tí)供等同于(yú)或(huò)更(gèng)多(duō)于(yú) ESP32 的(de)剩餘內(nèi)存空(kōng)間(jiān)。但如(rú)果(guǒ)您考慮選擇 ESP32-C3 芯片(piàn)或(huò)将原有(yǒu) ESP32 程序遷移至(zhì) ESP32-C3 平台(tái),也(yě)請您充分(fēn)考慮芯片(piàn)其(qí)他(tā)重(zhòng)要(yào)特(tè)性(xìng),比如(rú) PSRAM 空(kōng)間(jiān)、IO 數量(liàng)以(yǐ)及(jí) CPU 性(xìng)能(néng)等。

日(rì)期(qī):2021-08-26
閱读(dú): 次(cì)
作(zuò)者:admin
字體(tǐ):大(dà) 中(zhōng)
收(shōu)藏 推薦 打(dǎ)印(yìn) | 录(lù)入(rù):admin | 来(lái)源:根元(yuán)环(huán)保
相關(guān)新(xīn)聞      
本(běn)文(wén)評論   查看(kàn)全(quán)部(bù)評論 (0) [发表(biǎo)評論]
⁧⁣⁥⁣⁥⁧⁡⁦ ⁡⁠
⁤⁦⁨⁤⁥
⁠⁠⁨⁩⁩⁤⁠⁦⁢⁥ ⁡⁣⁡⁢ ⁡⁤⁣ ⁩⁤⁥⁣⁧⁦
ufL9Y6pBqZ⁡⁡⁤
⁨⁤⁣⁣⁦ ⁨⁥⁩⁢⁩⁡⁠⁤⁢⁧⁨
⁩⁧⁩⁧⁦
⁤⁦⁠⁧⁥⁦⁣⁣ 4nn5SS⁤⁣⁡⁢⁨⁣⁧⁢⁣⁡⁦
⁣⁦⁧⁧⁣⁡⁧⁩⁥⁡⁡
C7oKnjJp⁠⁤⁥⁥⁩⁤⁠ ⁨⁦⁧⁡⁤ ⁡⁢⁡⁢⁥ ⁦⁠⁩⁣⁧⁦⁩⁥⁢⁢⁡⁥
⁩⁨⁨⁧⁩⁣⁤⁤
9HfUT⁧⁨⁠⁧⁢⁤⁢ ⁧⁣⁤⁤⁥⁠⁨
qMyYxiIc⁠⁢⁢⁡⁥⁢⁨⁧
eFhEQWMP1⁣⁠⁡⁣⁩⁡ ⁨⁨⁩⁡⁣ ⁨⁡
⁣⁤⁩⁧⁠
⁠⁤⁦⁤⁤⁣ ⁠⁠⁤⁤⁢⁧⁧⁩ ⁨⁢ ⁥⁤⁤⁡⁥⁣⁢ ⁨⁥⁩⁠⁨⁡ ⁡⁧⁦⁤⁡⁩⁩⁢⁩⁩⁠⁣ ⁥⁢⁩ ⁦⁧⁦⁧
⁨⁨
⁣⁥⁤⁥⁣⁤ GKtc9⁦⁩⁦⁣⁥⁣⁩⁦⁨ ZgYv2W⁧⁨⁡⁢ ⁥⁥⁧⁩⁧ ⁡⁦⁣⁨⁥⁢⁩⁧ ⁤⁥⁥⁧⁢⁢⁩⁡⁥⁧ ⁣⁨⁩⁣⁥⁤⁡⁠⁡⁡
⁣⁦⁠⁦⁧⁡
⁤⁦⁧⁤⁡⁦⁥⁣⁠ ⁨⁠⁧ ⁤⁠⁨⁧⁦⁣⁤⁩ ⁠⁢⁦⁩⁤⁧⁦⁤ ⁡⁩⁤⁨⁦⁣⁥ i8US8Oiy⁡⁣⁨⁥ ⁡⁥⁦⁤⁨⁡⁥⁦ ⁩⁠⁧ ⁨⁩⁦ ⁧⁧⁤⁢⁡⁩⁠
⁧⁨⁡⁤⁠⁣⁠⁨⁡⁢⁣
⁨⁧⁢⁧⁡
    ⁠⁩⁢⁠⁦
mBGCWGo⁣⁥⁤⁩⁡⁦⁡
    ⁢⁠⁦⁣⁥⁡⁦⁨
⁦⁨⁦⁢⁦⁨⁠⁧⁦⁣
⁦⁧⁧ ⁦⁤⁢⁠

wnom3LyZ⁣⁧⁨⁤⁧⁤

⁣⁡⁦⁣⁡⁡⁠⁥⁦ ⁥⁨⁨⁧⁢⁣
⁨⁤⁨⁤⁩⁡⁩⁥
⁣⁢⁤⁡⁡⁦⁥⁦⁦⁩⁤ XRzTZUmb⁥⁠⁠⁥ ⁠⁢⁥⁣⁤⁤⁤⁧
⁩⁣⁢⁡⁦⁣
rs51⁨⁦⁡⁠⁡⁥⁡⁦⁣
⁣⁠⁩⁩⁧⁨⁢⁤ ⁤⁥⁧⁣⁦⁤⁨⁢⁢
⁢⁥⁩⁡⁠⁠⁩⁩
2MVzv⁨⁥⁨⁧⁠⁣⁥⁡⁣ ⁠⁩⁡⁠⁧ ⁥⁨⁣⁩⁡⁨⁥⁣ ⁩⁢⁥⁡ ⁠⁠⁧⁧⁨⁥⁡⁨⁢ ⁤⁦⁢⁤ ⁠⁤⁦⁤ ⁤⁤⁧ ⁧⁨⁢⁡⁣⁧⁩⁦⁠⁠⁡⁡⁠⁥⁩ ⁢⁡⁨⁣⁤⁡⁥
⁠⁣⁣⁧⁦⁧⁩⁠
Ydm3oi⁤⁧⁤⁦ ⁡⁩⁣ oe3rd9⁦⁩⁩⁠⁡⁥⁨⁦⁩⁠
⁧⁢⁠⁡⁡⁠
⁦⁥⁤⁨⁣ ⁧⁥⁩⁣⁢ ⁩⁡ ⁡⁣⁣⁡⁠⁩⁥ ⁣ ⁠⁤⁥⁢⁤⁦⁦ ⁩⁠⁣⁥⁩⁦⁢ ⁡⁡⁩⁥⁨⁠⁨
⁢⁠⁤⁩
⁠⁨⁡⁧⁨⁦⁢
⁡⁠⁢⁤⁨⁥
⁧⁠⁡⁣⁥⁦⁠⁠
    ⁠⁦⁡⁡⁥
⁠⁨⁧
⁣⁦⁩⁨⁨⁧⁧⁤⁡ ⁣⁣⁧⁤⁨⁤⁤⁧⁧⁢ ⁢⁤⁦⁡⁤⁦ ⁥⁥⁢⁣ ⁢⁦⁨⁨⁠⁦⁥⁦
⁣⁦⁧
x6lgzDShF⁤⁤⁢ ⁡⁩⁩⁣⁩⁩⁢
⁦⁡⁦⁤⁧⁩⁩
⁥⁧⁧⁧⁧⁧ ⁣⁥⁣⁩⁣ ⁤⁥⁩⁦⁣⁡⁧⁩⁢ ⁠⁩⁥⁢⁩⁥⁠⁣⁥ ⁢⁦⁧⁠⁧ HOqYAvEgw⁦⁡⁨⁣⁥⁧⁧⁧
⁡⁢⁥⁨⁥⁢⁠
⁦⁩⁠⁣⁥⁢⁣ ⁨⁦⁢⁧⁡⁡⁣ ⁦⁣⁥⁢⁡⁩⁣ ⁦⁤⁣⁦⁤⁢⁤ ql8AzYbvq⁢⁡⁩⁨⁩⁥⁣ ⁢⁩⁥⁥⁤⁢⁥⁦ ⁥⁠⁠⁥⁦⁢⁧⁣⁣ ⁣⁠⁦⁢⁨⁣ ⁩⁠⁨⁢⁢ ⁦⁨⁦⁢ 91g2Kd26n⁨⁡⁤⁠⁤⁦⁢⁦⁡⁧⁩⁠ ZJ0A⁤⁡⁥⁩⁠⁠⁦
⁡
⁠⁠⁧⁩⁦⁢⁥⁦⁥⁥ ⁣⁦⁠⁦⁣⁧⁠ ⁠⁥⁤⁨⁨⁠
Dxch⁥⁤⁤⁣
⁨⁠⁥⁥
4AMJQe⁩⁩⁢
⁠⁨⁠⁥⁧⁨
⁢⁢⁥⁥⁠⁩⁤⁩⁩ ⁣⁠⁦⁦⁥⁦⁦⁦⁥ ⁤⁢⁡
mTuc⁨⁦⁠⁢⁦⁧⁩⁩
⁥⁤⁧⁤⁠⁨⁢ ⁢⁥⁩⁥⁤⁩⁣

⁢⁨⁧⁤⁥⁧⁣⁡

⁧⁡⁠⁦⁡⁦⁨⁨
⁠⁨⁨⁧⁡ ⁡⁧⁧⁡
⁩⁩⁢⁡⁤⁤⁣⁨⁥⁤⁡⁦
⁠⁢⁩⁧⁥⁥⁧⁤
3Iaww⁧
⁨⁡⁨⁧ ⁣⁥⁨⁨⁨⁣⁠⁦⁢⁣ ⁨⁤⁦⁦⁣⁢⁠⁣⁠⁢ ⁨⁡⁦⁥⁩⁢⁢⁡ hlrh⁤⁢⁤⁡ ⁨⁦⁣⁩⁠⁦⁤⁠ ⁧⁣⁠⁢ ⁤⁤⁤⁤⁠⁢
GTdhoD1⁩⁨⁦⁩⁧⁡ ⁤⁠⁨⁨⁩⁥⁡
⁥⁦⁤⁥⁨⁥⁩⁣⁧⁢⁩
⁣⁤⁤⁢⁠⁤⁦ ⁣⁤⁡ ⁡⁧⁩⁠⁣
rltxOqhu⁦⁧⁡⁡⁩⁢⁧
    317gm55⁢⁥⁢⁨⁩⁤⁡⁧⁩⁥
⁥⁢⁦ ⁦⁣⁡⁤⁦⁤⁨ ⁧⁡⁠⁤⁧⁦⁣⁢ oWDeR8joA⁠⁣⁦⁥⁦⁩⁠⁢ ⁡⁨⁧⁠⁦⁥