From 967977fca4ffb8a4ce72d9e6d91f222a171c2664 Mon Sep 17 00:00:00 2001 From: it09 Date: Wed, 17 Dec 2025 19:45:01 +0000 Subject: [PATCH 01/12] added recommendations for each staking solutions --- ecosystem/staking/overview.mdx | 237 ++++++++++++++++++++------------- snippets/staking-cartesian.jpg | Bin 0 -> 92333 bytes 2 files changed, 147 insertions(+), 90 deletions(-) create mode 100644 snippets/staking-cartesian.jpg diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 560e24471..a30f32d44 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -5,72 +5,98 @@ sidebarTitle: "Overview" import { Aside } from '/snippets/aside.jsx'; -Staking in TON enables earning rewards by locking Toncoin to support network security and validation. This guide covers the main staking options available and how to choose the right approach. - -## Staking options - -This page focuses on practical staking methods. TON offers several staking approaches, each with different requirements, benefits, and use cases: - -### Classic staking - -Classic staking involves running a validator node directly using MyTonCtrl. This method provides full control over validation and requires technical expertise to set up and maintain. +Staking in TON enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different usecases and operational models. This guide covers the available staking contracts and guidance on how to choose the right approach. + +Staking helps secure the network through Proof-of-Stake (PoS) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. + +## Overview of Stakign solutions +The following smart contracts are commonly used in the TON ecosystem: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OptionIntentionFeatures
Classic stakingOperators running validator nodesFull control; high technical and operational requirements
[Liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract)Staking providers servicing retail usersLiquidity and DeFi integration via wrapped staking tokens
[Single-nominator](https://github.com/ton-blockchain/single-nominator)Large holders staking only their own fundsSecure, mature contract-based self-staking; simple ownership model
[Nominator pool](https://github.com/ton-blockchain/nominator-pool)Small group of nominators delegating to one validatorHas significan limitations; generally not recommended
- -**Documentation**: See [MyTonCtrl validator documentation](/ecosystem/node/setup-mytonctrl) for detailed setup and management instructions. + Technical minimum stake required to participate in valiation is 300,000 TON. However, validators compete for 400 slots in each validation round. As a result, in practice the actual minimum stake is typically higher: \~700,000 TON. -### Liquid staking - -Liquid staking protocols tokenize staked positions, enabling stakers to receive liquid tokens that represent staked TON. These tokens can be used in DeFi while the underlying TON earns rewards. + Current validator stakes can be viewed on [tonscan.org/validators](https://tonscan.org/validators). Scroll to the bottom of the list to see the validator with the lowest stake included in the current round. + -**Benefits:** +### Classic staking -- Liquidity: Access staked funds without unstaking delays -- Composability: Use tokens in DeFi protocols and dApps -- Decentralization: Flexible staker-validator connections without central pools -- Accessibility: Low minimum deposits for broader participation -- Voting power: Some protocols allow governance influence -- Safety: Reduced slashing risks via diversification -- Diversification: Easy fund spreading across validators +Classic staking involves running a validator node directly using [MyTonCtrl](/ecosystem/node/setup-mytonctrl) tool. This method provides full control over validation without using intermediate contracts, but it requires technical expertise to set up and maintain validator. -[**Tonstakers**](https://tonstakers.com): +#### Key characteristics +- Requires running and maintaining your own validator node. +- Requires a large minimum stake (technical minimum is ~300,000 TON, actual threshold depends on network conditions). +- Offers direct participation in consensus and reward generation. +- Provides the highest level of autonomy and control over the staking process. -- Minimum stake: 1 TON -- Liquid token: tsTON -- Withdrawal: Instant if funds available; otherwise up to 18 hours -- Voting for network proposals -- Automated compounding -- Decentralized validation +#### Recommended use +- Validators who want full control and have the infrastructure and technical expertise to run a node. +- Users comfortable with operational responsibility and network maintenance. -[**Bemo**](https://bemo.finance): +### Liquid staking -- Minimum stake: 1 TON -- Liquid token: bmTON -- Withdrawal: 36-72 hours cooldown -- Centralized validation +The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract) enables staking services to issue liquid staking tokens (LSTs) representing underlying staking position. LSTs can be used in DeFi while the underlying TON earns rewards. -[**Hipo**](https://hipo.fi): +#### Key characteristics +- Users deposit TON and receive wrapped tokens (e.g. tsTON) that can be used in DeFi. +- Liquidity remains accessible even when underlying funds are staked. +- Flexible staker-validator connections without central pools +- Low minimum deposits for broader participation +- Some protocols allow governance influence +- Safety: Reduced slashing risks via diversification +- Diversification: Easy fund spreading across validators -- Minimum stake: Varies -- Liquid token: hTON -- Withdrawal: Average 30 hours; instant (1 minute) if funds available -- Centralized validation +#### Recommended use +- Staking providers serving retail users. +- Projects building liquid staking products or yeild-bearing tokens. +- Operators who do not have significant personal funds but want to run a staking business. -**Protocol comparison:** +**Staking Providers** +The list below contains third-party staking providers who use liquidity pool for staking: | Protocol | Min deposit | Liquidity | Voting | Withdrawal | Decentralized validation | | -------------------------------------------- | ----------- | ----------- | ------ | ---------------------------- | ------------------------ | -| Tonstakers | 1 TON | Yes (tsTON) | Yes | Up to 18h (instant possible) | Yes | -| Bemo | 1 TON | Yes (bmTON) | No | 36-72h cooldown | No | -| Hipo | Varies | Yes (hTON) | No | Avg 30h (instant possible) | No | +| [Tonstakers](https://tonstakers.com) | 1 TON | Yes (tsTON) | Yes | Up to 18h (instant possible) | Yes | +| [Bemo](https://bemo.finance) | 1 TON | Yes (bmTON) | No | 36-72h cooldown | No | +| [Hipo](https://hipo.fi) | Varies | Yes (hTON) | No | Avg 30h (instant possible) | No | | [TON Whales](https://tonwhales.com/staking) | 50 TON | **No** | No | Up to 18h | No | | [TON Nominators](https://tonvalidators.org/) | 10,000 TON | **No** | Yes | Up to 18h | No | +Tonstakers also offers automated compounding and decentralized validation. + +### Single nominator + +[Single nominator](https://github.com/ton-blockchain/single-nominator) contract is the standard solution designed for large holders who want to stake their own funds while delegating validator operations to a trusted operator. + + + +**Key features:** +- Supports a single nominator only. +- Separates cold wallet (owner) from hot wallet (validator) to prevent theft if validator node is compromised +- Reduced complexity compared to multi-nominator pools, making it secure and easy to audit +- Owner can recover stakes even in extreme scenarios like Elector contract upgrades +- Any modification would require a professional audit, which is contrly and time-consuming; therefore, the contract remains intentionally unchanged. + +#### Recommended use +- Large holders with the own funds. +- Validator wishing to separate fund custody from node operation. + +**How it works:** + +1. Owner (cold wallet) holds staking funds securely offline +1. Owner deposits funds into single nominator pool contract +1. Validator (hot wallet on node) instructs contract to participate in validation cycles +1. Contract sends stake to Elector for validation +1. After cycle completion, validator instructs contract to recover stake +1. Owner can withdraw funds at any time (only owner can withdraw) + +**Security benefits:** + +- Validator's hot wallet cannot steal funds — only owner can withdraw +- If validator is compromised, owner can change validator address immediately +- Owner can send raw messages to recover stakes in emergency situations +- Owner can upgrade contract code in extreme emergencies + +**Setup for validators:** + +- [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) + +**Instruction for nominator:** + +- Send an **empty message** to the single nominator pool contract with TON to deposit +- Send a message of 1 TON to the single nominator pool contract with text comment `"w"` (withdraw) to withdraw +- That's it + +**Reward and penalty tracking:** + +- Separate API tools are typically not needed for single nominator tracking, since validator and nominator are usually the same person (as originally designed) +- If validator and staking are handled by different parties, calculate exact income, all penalties (which should be charged to validator since penalties are due to their hardware/honesty issues), and fees +- For such cases, API is not yet available from TON Center, similar to [nominator pools API](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) + ### Nominator pools -Nominator pools are smart contracts that allow nominators to delegate their Toncoin to a validator for staking. The pool ensures validator funds are used exclusively for validation and guarantees proper reward distribution. +[Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safery concerns. + +#### Limitations +- Only the owner can withdraw funds from the pool. +- Supports up to ~40 nominators, which is not suitable for large pools. +- Not designed for small deposits or retail participation. +- If an incorrect message is sent to the pool, the funds get locked. + +#### Notes +- The contract is not deprecated, but in practice it is rarely appropriate today. +- For large holders, single-nominator is strongly preffered. +- Not recommended for new staking services. **How it works:** @@ -185,54 +276,20 @@ Nominator pools are smart contracts that allow nominators to delegate their Tonc - [TON Whales staking](https://tonwhales.com/staking) - [TON Whales nominator pool contracts](https://github.com/tonwhales/ton-nominators) -### Single nominator pools - -Single nominator pools are security-focused smart contracts designed for validators with sufficient self-stake who want to validate independently without other participants. This is a simplified, more secure version of the nominator pool that supports only one nominator. +### Recommendations on staking solutions +**Large holders stacking only their own funds** +- Use a single nominator for direct self-staking, or +- Stake via a reputable thirt-party staking provider - +**Operators intending to run staking services for others** +- Use liquid staking contracts, which appropriate when accepting deposits from retail users or when building DeFi-compatible staking token. -**Key features:** +**Small holers** +- Use a third-party staking service rather than running contracts directly. -- **Security-first design**: Separates cold wallet (owner) from hot wallet (validator) to prevent theft if validator node is compromised -- **Simplified architecture**: Reduced complexity compared to multi-nominator pools, making it secure and easy to audit -- **Emergency safeguards**: Owner can recover stakes even in extreme scenarios like Elector contract upgrades +The following recommendations may also be mapped in the Cartesian plan below, with the horizontal axis representing legal restrictions and setup difficulties, and the vertical axis representing the operational model. +![Recommendations](/snippets/staking-cartesian.jpg) -**How it works:** - -1. Owner (cold wallet) holds staking funds securely offline -1. Owner deposits funds into single nominator pool contract -1. Validator (hot wallet on node) instructs contract to participate in validation cycles -1. Contract sends stake to Elector for validation -1. After cycle completion, validator instructs contract to recover stake -1. Owner can withdraw funds at any time (only owner can withdraw) - -**Security benefits:** - -- Validator's hot wallet cannot steal funds — only owner can withdraw -- If validator is compromised, owner can change validator address immediately -- Owner can send raw messages to recover stakes in emergency situations -- Owner can upgrade contract code in extreme emergencies - -**Setup for validators:** - -- [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) - -**Instruction for nominator:** - -- Send an **empty message** to the single nominator pool contract with TON to deposit -- Send a message of 1 TON to the single nominator pool contract with text comment `"w"` (withdraw) to withdraw -- That's it - -**Reward and penalty tracking:** - -- Separate API tools are typically not needed for single nominator tracking, since validator and nominator are usually the same person (as originally designed) -- If validator and staking are handled by different parties, calculate exact income, all penalties (which should be charged to validator since penalties are due to their hardware/honesty issues), and fees -- For such cases, API is not yet available from TON Center, similar to [nominator pools API](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) ### Combining staking with DeFi diff --git a/snippets/staking-cartesian.jpg b/snippets/staking-cartesian.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2301ce1996d4e5cb7b60cb3a6b5fa8747b33ccf6 GIT binary patch literal 92333 zcmdSC2Rzo_`#*j+$jBZQA-jYkqs;7;jLcgI*`$RKN@OL;2qoE@ZmTj490B0muHXU|^jeOUVsfJSooW9VXv|UJ-j#? zX>ruzAPdjE2P$}of?p&YCU(sXRYv@-B=Qo&3){8^Wi{H+HWc|S@of!>9%85-Z1`IZ z%4$?zs2=cIL_;W62t@k|_H+UM2}tG>{1bb`_88xz)Y@bG;7;c~_Sn5u=h`h*9-_yiZV##1TMc1;{s(Xx& zQL2JgKm!QDqn}35fi>d4hoCY(MqO5epaSjue&66!+OpWwS>PM2(FcOQJAfCQ%bo(O zDgsG1cp3WTR!Fs~LcOqC;zSoLvBXw{r{^y^cetE+5oteiG$TX%+pVvWDeE%0MJY;Q zBkgyN)(@-{ne~0OZyB;Nt%?lpxLY!N_x+Fu+oj37N@HtWHOE@SU$uyTX>c2(=5_-= zzBIr$T{G23_=Z%Y9CSbA;)G~;1>bYRT&Wb;(V!ODa2o!6@cE-wVXqrvsrFVQ9}ck& z@TXhR6+P8NOP4a}(&w5mvr#gzv=M1kUA)m(yXtCQ?_fF{nH97u`Z|mDz^7F@{6xBx z*^Sx3>xFMf1ze0WL}S+KF7+Q>TZv?cFFRtDkjsvEDPY+luhGl7*9*)DvF?Z&fpvcs z%Z4ZZs>jwX4u?${d?C)2+Y|6Gd7v>#953itk~oo)@V7+3O%BWL6{yytE+wW^tzg4@ zklMdeC))%V#DdQ76@qhtFOWkU9$>--dZXC50TS@iz+i}h#;8w6@#26Iqc!)DEldSb zlvRRp6QvMEamX~>TdfLN{EV9SD~G#-qC&pa;1zv*beS{%DIS@!51DfCg~aD|^}M7> z!Jq&ZRORt-_R+_;8b~DJ98w*xAjy#prxE8BoJaVX21k*c7=Bv8!A74}aAc9ERr?AA zd0GJ-gvOM)ZAJIrz6XIHVz^WQ8yPM#z&C<@51#=nY~&!{8DaW|CA9Cj zY?b)RIFklDN?V0KAF*=Ch1Zvv#-8q|nS03B*pH|`oR{$2=#bj171vlG!J~RvB!|-- zWnDtgF>MC0hvkhjwsGWuS$jc{) zHu$jAW;2LK{MV&k+f7{?CS~~Ag4IF`L$I<4X$S#pid9f(F8-@c@h0&9)TX$C*m6JtpwtM~e#EL{g<$qu<`aZ^0Nav18nZKj z_SCMNe}Pm?Kkq`fDrSt*Q9i$GAO0&tLXdkIyfg?H(6%5z41PY)TO3rQc|$Po8iIb+ zh$rIr3ljs17O89B@Ek*yroAXpF3AbYI*w87ND&I8CBS#|)e3|GzwMQUFce#P-L4_t|M z&<37HXzTWnl6~;{Ys<|S5c+;BV*OSxLQ#u&FC~nvv2;*hvC-2xh%pBEK78Jn-oKJA zJBPLv5Piq04dAu{*J8b=OHs8DVgMT4shL=3e=oRA0W5+YS|3;h2utGTM~p=P*X%&+ z|HWEG-ij;lI7{d`?cChAPLx*jVo`l{jfkjz@jchR&k`&f z0RMZ=>4KB4T!M5(Yj0i8Z@BK-dTIT6K+WykdNC`ev&Zc>ArGD;%qw-Sxvrd>eP2I| z<0`o>S|j5;=Nf)>!((lc=P!1pfw&4eGl?{;;HkUHaVb)Flp2Ih~$KW#H`ZrQLZ8X?&bPJ3B#gH>$Lk-$U%4H zpi(4YT9(w6*neuB?uC=%^d{uOuRYEp{7VE}BYwmT_Vvz{cYbrMAH)XQ7wFI{dv@y%qEWi)O~@-c z&4>|)=9r~TNY(;vLHn0w)}EzEoBqhG-t`P0XQgYb?}Q49^o5+RI}c&+xq=o?Soi)% zDrUsT*?dN3c*KFtS@-UZRcBXhqIdp}M4tKgdwz)|zP$-KHCU3kROD{ERzFB*(`Smd zR**)?F8xC`e%Hr#?ajSWQT`7Ja!c>euDHJWCNb%vA1VuobW^fT>`G zsMozz3-e8O$UQt?iLqs<4_g^o(<(kfx1H`NF-q#s+qh7T?hZF_c95VnzY$2>psS zOTeZ>IcfKR`+@Y)ekH1agNNQrzjxg_J&-0Wus?Cts{CQCGoo56dFB1WE{D3-hbq@K z8y41zWcrR8y0vPi>5+~98=6rXJkD&)3zpXpX&Ay{wi5MT=d7AWiZ zU)wshghh+j)z;}keEzc=Xq#kqzUwH_f5$HJ{I??3IoFrB=$_{;v%cZ|ywM!Ew0>_; zNMsW-Ds--{eVDG!mEW{980dBEXtZ~Q^t@1R7u@sO*6=D(phqFK-w)%e{irul)(IyD z1qm9!9Y#F3^9C9&jnE0KyFMmXqrgtkuB2F4xC?g^6Fm^71lHG=7-#l?Ty4JRO-SYR#Vl9<2tn#8QThd!dZGsl>(uo$k&$JM9j;ufML39!hxTp3*+MzDA0X(1 z34sXIDWvuL{MqHD)9-h_HReoYuzYtDVm~A-qSU(@SD!F0N`&8iJ>gblF<7PAWnG6^ z5!TLinStr`>)-yLm{_Ls8(i}Ov}_TFCi*r;n%DI8WGC*vZCrGrqEnyoY+C<{f55WJ zMWt&k{&MYf8BocOtdn~=!jnS_?* zM+g82V^WS)n;@K8An1U-j@U79m*96|5DSB8QU1bY+b#zww@iNW9S~M$5YqgjOBmT8 z8upx7?OH2&VfS_a(&7qh`8n5=Mwfk0-%Sv5b=@tAY`31NkC@qnM6Z#BMbJgn2)c&f zx&hESd<>ieaD=(C*GO|tjRJm5Um=}{L^i^#z_D|TvM1o^9ujQ;ElJ|w$RhwCSwIfX zHmXM=8-a}S&GBZqAi0!y?l#kDyw(C!?{b3dS6H5l=1XyCxtC8A6Dy)Hja>%W`&J~6*RJP9lPHta%pz_2i&Ib2yT>bEbU2b`x@XSwysX`OFK;@klzF$iZ{!|20#}_C=(cvnb8C^~jj1 z4Wnj}9vO-++)f)8{fCaS_V*xQIt1>Cz=F`=3mOYT;5r=sd}uHSZh`FpbKoWq2FyXA zM${NE2VoBJo$eTQ;4BK{hC@jhOb3nkAV>g|^twF#0&)V>h#}ENoZr&8zOZ+stXx#* zjpqn64g*zzY25#5bNybD{2L6apWKdk1pcsXBOk{gbeY~)&{iEeF^wr}+f9TUi*`1* zNv^%#0Fp!ED+tIBVF9woqF{|bdpZdD`B$J|;0o(((Woa^yM}E5HC) ze@2sdOg6rLy7(-7opmTur{7bm?m0Xx@?T$^L$QNJ(PaJeNAG{0T0eMZ%8Bl=e)(5d zQITioI@d0J?aQ0>T`e;5VHNJ4G8Ti|nkb9`4*^3V-vZJC1q~nmO+K5eVFDGsXW2R90Me_9<`^y(E%YV_6A^t02UAe0H{X^0V$N~b4R;zfD$bP zu;94=|5ylM-9w8VN)Q?VV&}J^0ZL$hA)QP$2pTs<#|Dt95AFjZ6}dY1s~9$fZ2=+{ zThR>=;6Oz;5CM*@2B0-tXLRkEkRUn;sch*`zy+mTCE>9aR0D$-Dgpy~AcHWV;R+&n z*Ta7wp}&of9mkmGsL0*_(mdZ4(EG2O2WkM>vH)-!!qfhP#e~^l$Vl$L7bVz&Mh-gm zW8y7v6vP-dh}PK%lw*g^1^~*I&V~nyO5ib?E#T#088wX(bNh^m4jP+5g>kk>;PEF6 zHdBHK|6qU@&>fBSz%d>8bP%S3bxZ}^a)cZB2;B#OkUxYd{w(3a{zvcoe~uRvjKK|b zM8SRn_vR7B7Q_=UIPb3m{<3O_V<`Ou(E$)|_1OyfpFl?T5zPLbA^*QIp}{gh&|(PX zp_(9{?thi$Kx4z)c5~~gw*n}b;4}!UfaO3nfUpWCnvGmh&;UZ#2z~Ki5&)=(KHOXT z#k<~m0uaUdDK@lTWHk_}KXSBm^ybaUQ?KFGf zv3X2-2T<4;d&nIu4Q6v7O)6k0{bYXrLx6ZslacGaA4PQj0ev&VF0hf+0#}0>q4iD3 zxlb-dl}eLBuFt4k{`JV{ui*XRq)2NINM6hW`Mh7C;gwE)IM|$|+v7N(I?GgM% zdkUADztT#;6FZRMA53BgCg}sw9iEDE`86_7#D`24LC34C@594Jd>>F&0Vc-fII|N6 zMMiDi9wj2NO+|6wqoQ0m;K+e!FA@s{UffoL6k0|Dzwe)&zJIG!N89#j2?GEyVXMIhzGkQ%NXHuVKtTNerBob{y2TCBv-aX*LH6#!0!du^ z5cz0(_wC0bCOLMRiVqyl_X8YgC z%9E0ky1Tna(I1mq3v=a0Ueh0!m1V3F7gv6QqTKHwi=vF7Klb=4qO-WT%9AIO==vyn z`eRyXa&d9-^KUEQJstth^z?&pRzX+cLlPmz1C?M1**l)@O`wS;-wf3w@+j z8Erb}uMrTF_(Fk;UE>BDzTb~S1!@{X63IQBoAIc7gLYK=7;WhJdqpm-tg*5_3E zgMz}Jl%9d~gsi(4s<=r)W5p$zkVQ2Bml#0;&$zwo{AuT=}AaoXCdT%FZaIU7^g zIfyd@R=mbB+mA-FSKHe#%Uk)f&7H#DXjm_e#xsGu#7u{j#1|?={_7-g#qm0Vg5JRohUbREi zJ*Vy@rea?BwV0|Iq39&-bgi~3n4dLXYkUr~JQ=j9p$ZleXBgWOOH!3%o-U{A-j0KFY}6)%YcJy&d+v?KfQ8Bx0_ELXig+~pU2CgUV6CoXufL#a zC}R~nUC*6ONYV1%PkyjR^DY7t7RFjX#9H2ku>xnZDr1Fj6S6{AA^LuK!?UmGR^Ymn z{@m63tjmIp77BWVCA@VeQb{M)%v-_&YriSDIK*{X2HJ>03CTqVkM&<&w|mu7y_zd= z;_#p6Q8D9-TbWa6h%2h^&G7uAHxKTovZUa59mSJ!UGDZ5`s-HiaGZ~{$-S*f zD&Hy`Q8&O|H#GuvONh1tO=eb75gTpeVuhCCt(@(KabB*25oNLk8rjL}%lJkKiyW2| ziRQOo!HCwrPzY1JhUJAn%g*K&q0)ZfSbDOHlahl19M0|U3-R(}T1*I-9+SC$s-cwp zo>-CCax<){ch!dS6xb^8?f09#cf%R>=f{OFyD(ISYqZ&S!hiSn%YJq;F0i)6K~E;Q z|CU4PLJzwh*up*2PM>~rCVE$m{!+pu9QsWAm&fAl`;K`sZxd#pI%csOg}sYDKIMKf zW}i7?%)0o%MHgvE8tM{L$8kpZ46>2WFB4q6ngfK=&|EkWBsW-fDY8)Da~( z5xg6Q+Vg0U=FXm=2~Tx934+)yXgeol_oe1+YijAn?O$|d5g69!K{j|wel4^wp2`*e zOG)#8^KG}v&K95)6nNHY!|5A^gFrj&P)+s$13*58&YS-?Heqm6<>07L24mICxq|=r z8T(l(BXs%;eJe-rPg$g;rlhalf)iINWmE?CPzZV-;hMLica$;u!o<-OeTm+0j0qa( z9+*9ds>5`H)8dT0gwyS)BRuDl{!?elu-%)PTFe|XE6fK+Y?*OsH^VNyL7+_ z8R%d;w2eY}^q`d`wMI^6d_^8yHDY9d^6gWKejXjLcUV=m@=N3{^fu$ZJ~-i}evfl% z_k{`O+^j*JBf_ zsx^OUY1+)@7E4vS`}TpgHz6Nxvgw6;JQ~w1Xk4=;YS#L`&SH8i@p+Jo|0d){?+6P8 zU3Bx*<3-1^zNP)@scW7qhlGBm?r-EKNxg{hX}H|st9nYQLNwN`MD6?abS>+Y2Bso< z*9>UdA%+3pP+hulbEYEZJKQOjIN`BJoP2<#huIbEn~-lVg6oG!GTgt_uXHvGqb zHn#pG0$Ut38BbePS2P=$t9eOzCmFCL8ODf-x4I_<#GUr>sEmh+575^Ys>bs)DBcoh zPs3$_iMP^|lPNNVLcJ+%PjKkX+a;;i_?%!0c+Fc;QBfOlgCS60fX5agm87uDQ+Yz6 zjV$Uc@8TvW)Z)b1nzf!@P?QZ!Bb5U#zJ?oaAonb*j(FU)ISO{D8Fw}dzy7o~ZT0IR3)xy>-4jK}>Lv}u__IDvukwyPQJc5h5M9SQbyY)%mY_oL zfyu)+qJ5i?p?8~*wmXHm_bsnIOb`r?3KoCJ7m_muedbcSFl!~}9Z^-|7O!qIqnNf) z;XiT=hIMfRH=CCjmhJ>gee56RAP|IwVvKE$h zFT6|t6kQ`L>$3jib-((XMrL=9xwRW5$>+*gG7jkIX!hU9>D?{8ZL>BZrZaS-h#lK2 zHMwAy&2DWf(H8;VvQqv4aj1CrY;6(!0Isev;8D8q8r8|8{idb#RDYLGy8_48-(`5R%d zg3$INtxbr!MBrLRxl4J`%BfS+TDNoFMNHaxD1Hs-ZU5OHvW*US6{u6`WRWZLbb*Of z560pyddy5Ryho8BDqyhTQ<8$b#b>I|&-fy%d4Q2S+)$Pj@$MG)LVTQ`uZwoV!XqWA zaoJRtoLE>|;VnbiqAqVrlhT?Lr5TD9C>3Q6yVkrJvt$-CS7EYZ&8-!#a4F{}HM`{jV&?SE zZVN^>Z`o&Fw$RI?qtTUv>Crc2BC={oFxtC(x2p=&NheyRG=xOxpfp!5>Y@RAx zlh_Egbi-o|9Y*1y>vrfO#&{<Jc+Abcg1nhPPwIqo%M;2fn$u?FKdU z&o$Jy;ijAd_XBe?OB1;OXQ@E@)O8Pxm-Ab58*U0bQ(E!At;i2M7nCej*b>N)d%#f9 zD=TV0I`^ki z!)u%}vCpU62@yG$kli?Ena;^q@njMCh2fp>br!orH{?e1{l z!bLJN;LiY-r~OZOdlwsm))yu$BsHi}E}kJHJe3Qt1${slZ?{kA7SIu^Y+H-}891jt z#MJJf$pJ$nq@RM#oQmI}c5Kq_xp<$M8P+z3^N+9M7f8#m)&vgOz|k4zDseGrb{mr~ zqqqT<0%a^LAWBa5u9HcyyaqdT`HGa>Mz=#C(b#LgQ)d*T4mm+3lf+B?PCeYO79OuY zR$OLVwI7Zv!CCzVOM;_L7%&N7O;2t(XQI$3`1q7akO~1qJ>lfu*5UvMnwXE^0-Qsne6Jo_I&Ym(Bkk zVTiG{b-h}rqCIft;KJe?ko|H)8-el*?h!R7_53U;&bTc1rxgxI-I~WTOJDPVngp7z z{Qy+Mf|QIia)MpT=GP2WiyN2sW;e-Mgp@;bZL6sxrgs8kJ73onjq6Ckk=mrSrjCj+ z#V7^A(l5m|Q2{+wT@^hIQ>rP0&k8z2+k}EnT%M5FxO^5$!c(NHb7=w==l3NiAR@xg zBkWtnl+Lv0OfA89`g~f=_{6nuNT?0l&f`(FMw;BsHkk(!hxJx0_1uE1$ysM7pqd$4 zO)&l}XqmBJO52$;*=bj`SE@xXN2Y~qq$=KQ>8VvX()n_NJ-O>;8i$$8PTXjxDf0p3 z2qh#2tVI_#pC#lf6r5!Xhhzijlorg=gJ}8sH=tObZFtXa z+|O}&5F9ZHi*gd^Z*t8Q_6tk9WhCFOjKKa-=3qbY@cCcpTlbds_BmCU=&qWC#Fv;^ zvsQT|@(Zh4Xne?l`T2SGtv>X8pej#iE}~5;`hwX<8W7 z6~eZ7^~$ve1$Y0hkbUeC5&Qe{_0$u4|GzC)p8eBml8qps$G;eu`DPtK#v zbUXs|ih{QKT)OHS@8!f0cT?uidQr!YDXOQcWnC|u>8V`YA28dUXRoxN9QfZmL9ZDU zXp69ZQekFDa2Jk@k-Mry4VL-hjXJ9Nk8(P|qKg~Fu6i{o=6D<7X_5>$piq1Cd8-AG zy+m@$Cd9Ts$tzIrLs?VtsQs%pinTN1Z4bFk9MbIswMmWaPgp?X6yh9#sqC6Z0po(f z;(^0eHf~R*rIA)sXuzFh=vX9bxneyoPcC?Q+y~k&s1?MM%aqhm1{<6Z3;UyVrtHur zPq&jOJ;?5(DR3W-PhVR9TA{QF$sE~)(6kjR90_X|P_cA$eYcDo`2){&*-ma_c7|@! zLx~*sd0*&riqjiDoclH2*$Qh$7rvRH%Ng6??~4N-_5hIT$*%dj01Dm-b?>wpzn!g= zZ>{cZ(&(5oRZGGug55s$G(;wbEI3#}g8q$Qk@{SXub}yH)v9lVlFD*l;=X-=IaT^$ z+xvPQ?{y>J)i2-R=y?jaSkh!m63l6zVTk=L*gJ9d z#8lh-raKu%(1t||wT_mtJ13RX_IIq!vM=U!lMw=Hk=}$pJB*?Lmc|8}t*!`zEn_C+{A=oRl`{b75SG)YzC1 z%bTI1>1`L)zLOuqI)V~b6vBI?8@>c~dN|^Us>jRg9Y0|t#VB^_*;O+Q*piPGV!?hH zU)rfgr=i(Jik3zLEDs&;{yx;SOGan=WY^*>fr!ShA?2pBPp}-Dj|@+sQHH^zU*ycL z*`^sBOcjkEQ5)f{_Fp2X>obu3f=@y~sMea4|CeAlr*tX%2w7;OR*lgZzaI^SD?9<+;z44e7r;$)_aMN~D^HMLD^ zJQ#tst`1BjYagbWbdz$5YmW0PJj9JhMK>r78~o&Z^I*;Bm(&p^^8~TqMtyc3h2D%- zt*a!8JjY~?Q^_4+tX#_>Z<1qrDj;9({Ui)GC|>+33$lnYa$KV4CPS7J7u+jQCEnyx z7%m{)S@vJZ*&@Nvx>qn5CnFfD?&=^}bqm2c2+bDR=YjvkE<)rjI25=lGINTSgWqNF#hbmmA+}Dp2@x9RR&1&&Zk(Ze z;wt_tqz)Z&#)yRDB8u1toEkbPHl__ZN|#AR<1PK7YJS{dH_*zOVdT;2Df<#LsMOc} z1M3k>*37Bzh2z#$oWFu;G2zlJ$wqva<-wkRimsx`$)mmFpAPapG(3AIQ7+EOXm1rBUG|rVSXu_-^E!B-fpbVzF)^}le1r`D^@dpgC&gr%$)M*d3eyAF zzNGG9`u+pv9D47n;=;mO;vBCHSr$^x1#gJlr!H+=<-G>_R-~>uXgTBuTzT_1K+2&r zx6X0B8dpnV9?m|t4A9}nrPfI>!Ok%45Kds)^AN8CELeY$P-&)!W|fWrUqozZ?Oj;? z+~sSzK$S8t({lXPvXR*GaHkuZTv7c1D}1NAm|}P^1KZwlp5xje?*-0Q-)2ql`>A*N zNI3`;j_7eNiqErkr&A=ivdqbmf9@f`Q@t%fYf*G9?ov)z!i=EHjv(~!@BuRa>umU5 zwmGk#3wT@$k@7cb(V?xCo_((Tnx>f_AgbNpxmO?{Afd`NC za>RT4$6e_*=(q{ls&iLb2BeYGT=+7)j!T38T>aX6{7M}BqGx4k7 z+y4Vp5UTM1*C1R}qQwR;frN4k{7a6b>mjJ1dKi_mgs1>t`jv5Oqo4*+jrzig%SU!V z6M_CD!ic_G%s`tMc~JzMwd?l&ufQhPMGd&spQ*_2uj*Rg{4_GJ^%fiSmCk=e$$H}w z#-dWEDz;Lmw1u|a_@BUq15@yXCnk~s1pb9cgmOEFPLGln7b{&rq(^~tD}a#w3yD)P z2xM+o=F8cbZ5a;&)s#Mn94ELF_RFNHKON^?nLcP;v@LIn^69|sOou$6gl7sK+njy> zx%BtxIKK=0?sPnVXPEvRzxeaHHQ#O^#L71Dcr~6qVR*SvJf63@1w=X38G2V0mhs8s z<41lOl1FpDQc)FXICJCFIv=aWLKC!C&+QF0n;fr5C#gnLT-iHb>&L-0KB2+9u|EKU z_2j7H{v7#)n;!UTuQT&oc~8m3#oF#l?$~LWp@Ro!i<+Ex*r7e|0+=GME$k1~OqL>d zWp$_@q@tOy?wcc4?gQ+7z@N-Gb|ynEEDHKbBiS`)M3eBZl1vWJttg$EBWYN)&CDY) z=EF*Uf8(9ZgkC+X#o(X^dvc>)e&ag7LdII?IcjeTj+3=<(Yuqs`c(X+d5`8CZZU#i zz<;<_4EIyZ`GK@lK+oc57PK{G({!TcbRoky~Jyqzz) zn=o?Jia=RE-fBt$X#zuOT*np_X76a;qw|RQsQz+9c;)_p>fa5D%NT;3|Mpp;7zqn( zd%m6RbH9E(c*kb6UA@b2{(bh_F2m#JbVmf54bn2*F2}-?CK2M~3B$&PqA=7oNZ{O( zEkKI62_eN2l2T?nSkAB=MrTI?9epK~j3omcKoY=l{OVk888hxtc zz1r!?D|h(}Ucc)R!-1&HSd8W$fauR@7@p2vrn3&U;uJwugT!$tt*Y>kf${mVDai`n zH|y$>7X^^(S}m~Dm^wWrVM$|9+D+3R^}$z`>*$I{reB@{^+6YlXI2$%Ov0Sf%rHXY zwbDZ><`;aVWy`oAPL?*N;RYV^l)VMrP86Xn$=!t2DfWXaryM52@u3Gy!;}pdLh>&s zzZ1d9D(=ct~;lK&eCC0wdP+L9+;f<@j*L6R*81?LypT^;-^It8mM- z$Q0)w&kc2(R$aXL^;3HClf`f&`nUb=3WiK)LSbdMHfu;Cg6Y||Lb=R%;sZ4d1ameaWNE;0yPc??K~x$({PCC-|V z)MDpcyyTmrJuW?sCHM%jr!{31O@CJ=*PMey09zxWZUD($}37EN!40 ziIiv0Y8_&ePzXP2IRagD4G6j)J`tk|J&aYtv((yYw6a(2_~03QLrIp^K!z@?d)aM= z3Nz2(5F{u6P=;2dS;;z(51TwGm$KKil`LqX(Ml8d|9m==aqRu1Z!UH-8>DqWb$bs|8bk6(PGAf^)5=-;dVsNbs3B(_vqZ z-1cB+n}u8gn%rK!A?g%0Pbmk{hYv10X*is-Yp|qTd6&S*i#mqL?ZTSky=1fGNH*1~ zouoh2Bz$6M=dl$D7*Vnd>=vr;ahXBwb7#h;ox6Ct#a|w5{;kFGUR8>9ytHfYN6OA6 z?2-xFn2*jD7ffXcovg>(apA9@`K#)m34dEd<5IPQ z%^A&?6hj^k-}UbN`oi6DJ@`-Upet>W@$dU1Sr7H^9(nf?uC2wP1ow(e99k?R_k*bU zoWJ~TIW|HYv_rm^KL)QC2)94(ipcE$8FQdKz&4!xhy6q=05;|h!S`1)-@&}wBuhKB z&5}2~)+9@M9{!EF{rN(CH$g+;AL#)HivV@k@9d}n&>a01f2tWn%m7W0r5)qAdn$sv zm}F^xMJU>i#;_zDe`D+%yUtw9Z@0v}C=CQZ6b!My8q~#)&ZI8;a?9X0$j$huJO}?3UFGAM?@GNluQl?0J8&IG+-$^>Tzt=0~R>{^CcLmiLp2=jxSR%FNM5 zh)sUs$Bc|PhZtHviiTdA;us%=2YGAhd*|xg!WZVQ-*0xG8hY#YrRu)kg)}jvql2EB zy4o>aXY;C)_a|$v6xp`V6sNM_1U)#&e@yf0@b^s!hx*&EQ>b+$o+BEM-pIM=V$jOU z3!`nQN=|HfB-49)uM+M?!qg#beuD1PO`ApEGtaesD$H=Sw;M3 zuda+z75uCiVyzMt##&Y1FKzzev-66Nn`pa|dCA+oq8n;XGEg%}CPxi@KS3KboA8Oc zE3@6u5xR0bx0kDk&sc_2)P0deOZ>^uD0HkvuPVJhlh2}2WWNk{oAqAJ!n|Yq!$0JN zn_ZPY`?(@TIEBNhulz=TuFU9c?(IUT2d17>yM~DcCheTIA09gl!(C_lDr7I@qqlbc zfJWqAMwu|$s!ka%X`jSLx0G7gI&mlI&Zk)6xSOT&kySrbKUMm0(1I*{N$JL$JDyPA zPFVRM%PWe2z4X_ss@7z$nM7$DDfmCZ%aZZd98om(q%E|-5%7a_EN8H+vOIk{J^V;goe4i~!a}mQntS-)yJS+aR z@zVXIuj+(M7dRf`T`|I!I5~O?p`MlQNt!M9C>jg)Bo=uFM%hX>LfK_Fuwm+Q=|&Q1 zRCy^3Z)AioQ#Hxk7pUa3Z0IG0NS&WwJx=7hbbTzYP5)xL^wUSu3MqsU!0{!2EAX91>69HzVQ-GJnot#weDIRU(8?F@8`pHCG)fX zz*Cy24_$T1tjVrdiYDKkZ^&4)*@Te)P~L>#1#V?QDx&3?G$a1x z<1F_&8L$0h5;fb!D%KI)*B?Q2p))dG4#o&MT%v2+^U8)DeeUVg4?Rxg=J2_nF@Rg+ zVHj<>?8Y^gIWwm2ap^m36QUEWbnMIu^wC)jHkP8$Q+FtIa-inErUQ8udJ}3Qb)~*} zE%|3P*xU7M$ojZz6TWKc#_I4Tr$jH>l)y|%yDc=RFLkan^VYs@5M?up#@_qcS3Ifq z;g2-=FRbdieGJLtVV1Rr19Y|5pXKLg!PGTvbr6PG!bdd$U!sAN18yH|)9mUTxK5_$ zT+KbQ(vmOmp!3POlh&^f%(X-{$$EBikGh#!nhvC=(BtSo9K5et)7mLPJiab|!^3p& zeS-?ar{w00q{BqS<0P8r-5rIQUx_S`H1hZCqc1j3?W`5^45g^XxIZYBZJ#w|*g99K z-o?KOiPLfNeQ}F>yW_Y^KA8TKEor+=Z&UxICei90rCjlM6a1vrcN1tQOKn2_gGzjw z8($Wy$L!;c{r)Ftm#uS!vR=Tw)<};PP^L&J25cOa+NiYmj^gd z&Hd4h&*e!(E}7&=TXH&wgB%&`I%hlv|0Y&>|7Vi=7ZWy4ypQeq(2fVYI$2b7t_1GY z?yv@@#cq9}YH)m7*n5QNO7g%D;uDI-cRUojkM~P@-8knIabi8py6!}ds-#)na95_% zU5S~H&WuWdr=w=XFDy5zPG2dvq^cK<9?#dXi)_}{86q(CrvZ)v2466C%3-NF`(PtZ zziMKAD97u-d9vQf8p|ohpJsx@9d>M=&p@o(KcPs_cH4x6Y&<)8x?_lr#i#YgvBH=d zf8z{0peHn_3F^+>Bj;E7MqK3=z1K4TP|KL#^VVz8!jtSDq6KQhzbHmBo2m4wM-#8| zlj*Cd8YNEQ7)OTQE5aj-e5Ec0G!irL4tLDiIc=R;GUkJ&gp3R+85Sjx`H{sZBo7qt z^_Cx$^5Hq7S=s9KHn#v8>*Fe^o@e<7q^7Of=t&x! z)j3bDEGY33rCGd{#5q4_t?7X+OtJ~_a*(bJq27M=ctc{X({rz&(aSi_FQoPME{-Z#2YMvEj#i;6*VK_Gu2udX zo{|zhe!Rs@$!x7Ms7!1;vgvii`q22IOJ(i@h5QRGXPqBV8%!QptNfUKeaU~+#rNw7 z2N7p+>tv%@s&y*UsoNO??~7(K>^!6_Q*Se6xWr_BJbW)005os1-7Rk3mI?nd*8W{^ zU?cD*Oh=1gLD`$2?J|XiLHm#@7eiiiz`e!2O>8XbN!j*-Q>DdmU1Gcf$?4L($v+bk6}3QhjOlUXj*yg{Qvcqc_JR827CR(Go;39i<6IGkswTis!YO>NkB^su@q^$W8R}bN3z@H6(PZ)=3+>Sl_4Le2$K9bP#?)gwcq~pD@GU-xprjd3A_%-rOm7k3rM^DUV3~y85c14&{apucqo^KE+yTo8?76lUkF0gL8$kWXmdx&|^k* zwvc=$S8v_q2A<@@PGz=x-B0(_5wB&wLE~d6NmBpGpp(dRotg4O3^$EK^bl2LQ6C&` z$a2@@uErhFyHy596wxQ!&qwDn|K;!YZ{Q|GO?vG^*Gs|4`C#u~3J!@Z@oZ4qF7!-9 zd{$w+P>&_0mCHpWk*DVILuMB>om;=!+IQ>jytwW7%W6QVNrja$`&FZ=h1HWN0aoL> zCOU{6onL70I62=vmfvol{zJEC+b#IL>|@(*ceQ4$@BMW*I9<^k{?Gi-417Bpodm+P zSJ3xAvl#}-i<~c;CZj;L2=-s+LqUqovL+eB1>W_wZ5cUBN zDIHO$m7@V`oT6E+K%n@rPKyUA6M*QP8}4=3?4Ki?Rg4KV_b748*D9;#Bw*@^k!Go- zNauCFqz!ooqp~y~Yn1@M(Ghu7K#H&V%W61TUqgyfn3Mc%t@JFcXX~1VAHI!8XpiO# zs9!T4rzdO?%*|S|W#cikrvH)Lt{?5yQT+NqguKw%H0IR&n22vLwhyRx~hEUz2dU6)mN+IE|Ih2#&jEu(zfAw0#&yXNfdO~c{57)mn^5X zCR2!c>y18=pluRO%Q1Q75-h$60ja1Ihc_WXY?_PVeio}H?=NvUi#qJvrey0gnGQFE zu9O-!T#R|7k?J8GE#_X=`87N}=}8R<)w!`&5nkFurbogcF$=G|6m2zRR2n7j6F&M( zIm*dF!Pe2xCZqw;O_jZHTk9FA(0ah93l#H;F+S9i{8aZjaKt?u{S*D8ubx%2ld>}w zc!qc2>caBz?rgru@Dz1h8gc;|LW0OhiWg7rPZpmX9hJokBz^Rm!0D*MT|d<~A??%; zQZC#k(;`SoR14+8eM6crEaE*UpeZfL+a;FHb0P1`D^-I}%-@UKy#3uQ&5U)$ZE2sL zbo-Gx5%sQ-?#cVu@{hdts`C87@a0-gXOtFY>;m+|@8X?L$KR-sCb1@I;md2c)|CE^ z*Zsz>mhQM>bhC(RPjGq_K??t~R%qu#|x1i9+SLr5(HYX7o`Xj zb2Ea4OU_&l*sftePp*gMQePD*GSa>nvk>fJJUJ(;8^lXRWTM+;s@qdh3T#}ScBnV` zhS9jM%=p;EnKTJ+b-T-Wo^lVXvF@2diTtH2K|}kV!T)qb6VR*iwVsW zA4d`0jnQ#(@nI*C$!zDVw&0gXV&+?>J2%xzN@Ba}X@if%;WlIXrCX6B^rmMoI34n6 zg8&sk!T^kG8uSAW=T4p;dBlbF{qQOCT!PAUf120cYl&x{U#}m;<00%$$j%t5xUKR% zSI`w-AY(xS`8=wG5RcoZlB&5e?DUPY zqhnhttuhGPO;CzywcG0wDW9Q6OuvF3Fw5)iJ z4(ytX`Sd^{ga)`lD7;If>lq z%DGSL#r~2$3vIV5(z}H0>v@}p(birHKzr7;*nMipV z&EdDb;0>}MkzMX53YF!Xm4`g(vS%WLmd&Sq}fA};viX;BP>>&B|=_RWhO!P9hxJRiz2Wg5Mu`gU?h?-MMd$qwD;**;1I=~ly ze|DK|oUh1!W`$AKr=eG=8cOcOJHLEcM!s2CY#aN&a#awNQSx#;u%O}!P2lGqZGPEt z?Uuf}BwpjgHN|^k--TQ!+4A|-ySma-16{%IDV1-KQE{gpw;KP#UO*~)VgA6l2^xAr zdj$!llZE#_8n(s`;_yvSO{+!7d(OPg%X?NU!?)oXeOD9D_f_D6WH!_?!-D1o-ecP! z`UO5V-gb+e$%uQv*(gnsYm}(CC^Y{I5Uej4#$xOL8dtm}!F>f?$oa8yltE2v~EzA%p3nCAg4QY9- zW|TZ$)gd30bbfZ8!+umOp4pcr|Cz;*mgj25Q^B#7dF5|KWJ*(ssaMj)%3=dF z18*sw9=Z0gtG@cm(U$Xul$|TAb^(4bl66yP^@#*#q!}X&=_12vUYI&tAGehRAZ!R4 z4@djqk^9Vk+%fvByBtI5P0`?6kms>qRWU)w`r;9vmQ!uvf*KMJmR6M}N9ck)EZ!tgHVtCHG-FiFr<5Z+Lmx!*-2HkFV-<*$J`>7-ha{Bo3+pQ`Z zCXAPYqdGSs4;z(N;M315rX+st;m%HPfRCdk4sQI<@3{S^8=Tvye!B_j8@71vXiNW1 z2R0e84bt7SLH5L%JMKUyd3-cH-&W_Lzq;y`A^)^6YC z=%7Q-TWS;orR_#_K!$~oEeOlr-kE=}-C9QFWuU#NKQPC5ifEAbpH11MnSY$@ z-z-Q`<&HJnJqVa>@h0R1D$QmGaEQ!H`H#fwk;wr6#_h|iXl**2d_8eh|Hz}|BMxaI zC#iLgxau3}4c>h`N)w>wFL&9~teR;)v36(F*T&{*Im99(*=wjUjUdC;JeW7KW#Agw z=R?E9u~0MOO00KZBII(L7zAE@nG~Bg(nY|`|=2iJYx0BglMSPyE4~#pL zGE1kwqGKkRx^JD^$;f1gJ#Us;*q%^oXJWZCt*57PMc(VPbhY9WayFr}wQg*b{^4(a zJi3K5+B!q)9=HkViteO%E*_O>1y$2hwm7V2X7z~SUURGJoAuyRtJNJ9X@zlojMv|4 zJeRhf9383K8R>SC8DSG0yWrmbu-qfyqTj{4+#fhAxf#!2GvU zdggcIVsMKCe);g{+FeAyxTW8y-pOb?4c$13`}RuID5pSl2GuhKJNmu-Gs{-vVv6wA z0OE(sr-E9eQDlq>Pk%qH$1l+=eld>d9|mXq)2zQ%B39%Vb7p_5v#fwfs}eN_i7`9h z6i7eVVN2fWiv@Xbe@gfIi$po08%?`YX?6{>J<&`bP<>|)ti+5BZK6_Fa`xg9L2)=}UdbRXQa%iC zW|Do<%p@yUc`$(fDEOloOcHLA-UKGHPXeDxdV`QYhYEwF*L81FCZ7HPdiF|ECdP3m zc$bO*hQrNICEddqB;6xdPi2Bm+>-7uo&YLVQ0H|MKGahtrv3m1@ry^`JVsYi=VEFN zbC!sxX%r%EXxui79>1$jB|sBw8Zkv1Ix5&V;kZO}F*GH-&;HUkUG0@~YJzN>Wurn^ zlb*&B@7X;1^=}Ic7^VyM=ESHUxO**1yD=tZG^@#<*QfoPkd-Z`ZK-x+v@dL0&1~3C z{iXc}N2A0a{yAgc;GHb}x|QzRnhp;rk0<6+Cr%y8qX{NlNI?llu3jVJ+|4DNLn(ILk{_Vxl@V9KP-uc^vazq&?#v==3g~-&O>x zH8LhxA~SmYTFeK%VLLU!-b6jAMTzEkw!Zf#p}flWWup`kR08iGA2PX~f9A?~9pa}) zr#~YryuzdN1!v9cc1Prec9%RFY5AjI~2o8VvF=B{?@QJwUHc*V==ROegHEm2Q<@~tgNFU@Ogkqykeho zI*OVWA0cvjXLUmtXu$Nqlbv86uc<~&AS}S{5n}qFTYxEsEqYMHr*-J=VP-`o-Ds}d zlo!$Uq5WB?XJw8+^1q(XU1A=CSPU?l&?9uUAXg=71YZNps!({_#`L3R5IVz+e1g!} zt)~giLRA9hHFZi;m{)`1v2BW>uN*K-Y$C(lC2~^u_^ei%%f7O5)uGGk5md+X=_sTh zdm3vG-8~R5@OWue@BKco2L|7Ew=5mfaCxjwSmg`L^WWnX)v5f$C(7YaH+-W%UP?1- z75hq^2+qR)nbQ${htzx&=WM|p?pFp-e}~mT2;2}%Dea%)yO2Z8 z2Mq*G{WI_ux0~9CUOjf;j!sDoPDmD5@e=pjOYE8LO|tMRe9dSp<~pY^Kuet~Ic0J7 z6$wAP@k3~(cs;kV#vlRiH|uawXJsLg-7-D`yhM+}g9L!Q_-|z+x{OA6D1cx%=PX(U= zsO5*(?uWByy)Vq6*@<~nKwkH0N@=e>;%RVepJ3)e2CoPFkk5%*8S)3=(jq*%-%lq% z&zw@RG}dOC@=pDWN9%1j{y*~G1E7g4`WFrmdJ9FQiIh;3B7`CcN()U;0TrdFfB_K^ zBr1xHUP6w{olgV)_A$1d$(mrZHkLQ!jT{xImBIjhop z=i6DnfvdN)_I9{abZ-WW*%uey+9o6Z!bl^{U;oKfmv`b$&Cxc?h^k%&Dd5B&=`L&V zN$%~wL>IOGPd=+3Qc^su2%qIP%tU7D9#j9UGceDt{NTfKRA%X@)B*HcGHE%8<&*&nOdz1*~YZ@{>T@a+eO zvTD}7$&lHgeP-pH^5G82Q<>)1WebN3$_cA)&McQ(zrVf6yY%+Sqv@*#R8#H8y%(%` zn%(}+^)COFj%$=L&(izEJ{@}WrrY)>Ol@Yz`B-&7unE81Ia0c<$?;O+tGJ^M%UgE2 zob@kwoqS7up5E5oE<2o_mb-oBPEI-8QGH^bo>Rzz*~v3Nq&wcubQX2*bo82CqE)09 znYBM;{zvm0tInzj&c72BSgiClOYcIgl`>_X#Tez|O&N!d&=)Lt;XnCWkL-Vy>YpCR4qZ;Tefs3M?C}}< zr?1^A$Ns^xqVUl)i??$w$Q{&KG2@L}*YT(;a~)3(cisNQ^_fjh(}qzwgLzr=1^~sX z`{QxFEylC28~4rExwWn3-Y=t2Nx$X#&S@upa&$brm+{_a@Qc!$`DvdP(7zs{>{(KN z^3YMLscO&6j1j<8{x$;nZ+Fvt$BidsDon+ge87}OY89rc-Kjx)JnZIP)naOxe>;eo z1iT)?p6{LR^l=l+miL-h(R-FaK5!Rrdb0-e3av&?@>hOrPrfaNE~sb%o6W#Z01Pv< z*41?J;DjarHAmAiu|*pXMNHV766P5!auAvQ*jo%SFxAA+y>?X5k%f<9If>VN_;V=c zuyLXV0`z|PD{hQD;X8iL4ihTmOWo!Fcc!hk6nH7UgvO4qj?{^9xgb@*6| z)1#Ri?$*MS`rVoHM_f+**B46*c6Og~dw#vEwXnx21Qc$~0sHohH_PTIekpu*b6W7D zX{V%1jUR92>qwrlW_kX;(337#*&eSww)ynzj%4vwdlQOnEGtgF1HfnF$5}v>wY`t4Q*hF!=#V)LucXA0&zKDs!6<#1Jqq6X^ zFT(@&P4da3NLx7#NRvln-<5;4<+Bq|PBnV*5=aCB>2x3s7@^%zYYY>nwKgJUIEaKs zWICXfLY2BH(CP$V!C{jLJS%O^beP;PP(`DC$;p(`-bL@pO3d}CT?P%zA3+zQn4 zLooGwd~H1#)R&lCEM|BKbVBRreWre<0=2+U9jTFrpdG@&w@6>asKR0j8?&0v3N%A` z+m8o(|9{(=$n)cO5)?)(yW`4kgVuY6kvUsnXFnZv%;L(0z2zF96i@#x8?6%104ET{ zv$l|H1YJR2D1SK($bl{+6_~K>-arJza)AvbK#NhEY{~^WQ*woJsu^9F7W8Y`?FXEB zY0#-q^~q(LA#~kHfjwcblhCJVdo1*IHFg-mYNW(N%gG2pCIv?F9uyKrzQ!%Af@~we-9wZ0Wqb}bcQ#u;Jy3Fd*HdHP$N_Iz(e5m93WDjiUMK4tRYscJPEM4 z8vP$NX4_|@mfT28m_!)KVO?h^VKep4O@agf^rbk*U#)oa*e#6|irw znk`!dNb#+Mn05zT^PfHmnJG?ECUjs@X`i({2?{+CTt@}#m^-iy=uD&jJxt@q&{TBq z$#JM-qn30U+K??gZ3~1&JBC5K$jD;D^Y_a8yP#JeXpChvy0Qi#iMhSz2Gh9)=3M_E zT#F)PBCTRht~(Lm@pdJ)zOxNl;iY2EG<~+dpXxU06$C4Kg@S=L@SDOOL{w46Q$#Hy z`JVpy+l&9x!?K^gX}LH5z535yeRtiyw>2d1;L#Q9VI!se%i_~FPn>=JQY&z%5Kld;8u3tgmqw*hl!T zYOSJbWTD=Tw)e>5?RzE|yUQ1Ic5u~^%5Sp8OjHuPS*Y}}SY6LBA*??(+zEjLm_4ij zi?8iL0ZzxVFz=$(@tXCwrb;F1e_=(hUdaM>@z6&m_}^i6ok&dP=9;4me{>_+;H|Ti zqIT(iG8gx8qsku)XzKg8NKfT6QrY^C+}BU;{`C5Y;u5xFY7kf?Do2P^6%fm zc3$T&AhmHM?!lZIsSuI%4le6YNj{iyX>@_6RqHX$tF7C^hD%9pxn8q8)i*GDSNj~A z*Tu+tm-Ct+>SiTfVI;GPZ~Es~`sdD-T7S)%beD6|#c$kTpzITo(8Ltmw`>=#T{KvC z!Gx>r4)3Ot{8p>^)5qtn&MLCca;BC3iW{*Qco0ln`i-b!zmsl$>J;to-{oJHI`n`c z#Rv>IJCr|joFujD7%^X|bGYw*K%0c-*_OQCJ(jKhcK6HkN#@2Jz4q}-UUSv#EvH;* z&Ms9Jf9qphsjjHV$M|6&rYm?t*UJBjTl0;Nuk)%^Q=YZ;t91wPxe2a&6ULgSMdcW0 znSQh{sfu4;9pBjS!%Mp{JK~@nF}XY4ZsrwY8p)2BMMH3{g9!(A51quZ8Z&c74a|V@M9qq?f7K?;wO+XwB}z=WrWF@0J}> z&D}@wrtC8wEWlrPDT%jOnC7HdbGEcSVl?^}ol2`Svo6kmSid$D*cR@>ob(WBPXUxi zJH_bfcHmE@J)QiHm~Qj+Jh*9Nq-ecdyW)sXK|J;C;ZyjN8>PDP9qeT&sd>poiJdf| zuk_S>*J54WXqvy}poivgOGDMNjsueS<*2+z3$om}>jU=2M>9DQ*LSwG-2=8N?+Z2TN37tUrE!Blui))p~}$!2_q$Rm&8cJEmzZp|`ai zdEQcx^LUk<^dE0C%Nll?^$lD9Yy3H`W~c49ZU4yMeZS`X-Rb|}`B8}WgN%|txhyJ+ z9ozn=w?omuPX`-}<&)9S4ZP%_6pqzYv$63Q8c*&NghR;aP0y9GoM9smcELce9~-Q# zX8_sytM9O0oB$dZ)(1xgkyZJXWqiX@$*Bx{h~Jx>BAGjjl}C1D&N0Z_alt3l^48%~ z`-y$WTHQ4rI`7x-8_{2b&lbM1>*cju#8gsXr92? zXL^T}qMAf*B^=SS+h_OAr#7TD9p-~MkcA+?cs6Y03LOrNNA%vpVYMCoCKQU!$Jh#V z%>NNM1kOO}J9!P6yoMj`bK@_s%g@rWTXEa&33&OVexO}dcubDU%X$x`Ww$TB-0fwd zm1CS3=`9>{ey-2_d-8j@8W_{!^6n>{TqLEt+eyvrqV7)Z3Qh}0Kr++B(Gvl1;1rEx9+iFno9E``(JSjIG7jOCtoLAo>{!#Lfm#st{v~nw6MP3 zko}Ko9mXkNfS95|z$V8E>t*}zRYwFKp`IF2s&QQKtWhglFe}K_Xp_>rxpKn2K2~W9 z6Zh&j+yiBVC0;vgv%LClzdM{g*vY)#J@GKIY4x8x;4FTB-gFN4P@i#04O`{6%PnwbnJGu0 zzMe$SVE?Ad+P%NKm*B*?_}wbOkE+k?O+W$KqjAMPoto8G4obK=w#RVJxr<+HB^~!A z`-@TbyF0s&n?B1nIJERr?q2R!dlrj)*;!bT^LZbS_He>bN!YWAxPJ0JzQ|P#qC=v{ z>@U;W7Si9nl3%((GRQlSc%GBCwf4}e#_)I4^V*qTd9o|lx!Ow{zZ^AU`zvl!fc0bP zgJ(`%--DlH^gyHcmBq#=o*PCR<9l~lo(@?fu+o^c^tqoRX%FL)B9W2&E;;v*la$o1 z)5d}-UjlL!esMm%f`0X(@b9yrl4HMkO~2HmYq4&1^|zCH%BA8X?vAYaJgv`Pg8IB^ zsftwD=OKFi^5n=j*YPtit=+i!K&8yaWA4{F1`ckMNenx@H`YNj-kQVSD6D8^Lps&f zmlSqNcqfngwYg$HdPqJTQ^QXsf&UVNn$4%O(YopGEsNfm>izE&0>QdQ$^*(sJoZRE zuMnshyCeQ^eu*aCoksZ$-xbL62X7rC05OZ+q40l* z67n*Uj7rSO1}NT$Vgl=mP^bZd&i)(EYX9%N)aZJ+Wn12iA)8RxNNK;=k@Bwi((r37 z|Dj`$k}$%e7#cHKGlh@@Noq~af!1+Ebd_7hw2(=9Jr5IXKaWi2%xGH*4bC%en-JQo z*oG(_DQ}))QkjQ)w`@BIVblSqu(5pvlW9Bk(Buwg(`)VBD9ls`24S9YO9L|0l=I*T zCiJ%V^s2WSnMmPn8)mYLW#Nr4=I!8&ry1Y!ikYw^SlIXKW3jrPVqyp_9KHpS1Dris zD4K&a9$yPY;ZJ8lXez4N@EfT_{fjL*4^T$bD=_TEmuj*;&wv4TJzRjTG?-x(Uz(IY zYRwt!Qp3YFyx*9I^J1>}*BM1<{b{))pt z%$;+L(=AloAak(RsF>_y@&C~k) zx5Yzq?W=oBPUbJWlo!55A%#;}SF^PH#Nz~Qw~e{e_*1JEhYer7D?Ry1^uM?{SwyC7 z0>xM7(-g^ZVXug`i_(dP+QfQSU9DXPZ*$@)H~34h@1M<;>+01U+V;p+{t$6c&E&=g4(Y802NS) z?uCSY){`mM7#F%&Xshr@Ca>v$h{@cB0FA#Wx%xYIFIcyeeMbMP=<4r0ME+NRgvlRHG62fq;W>z7648e|r^+RR(;_C-XAdc?+huu?AC zwejRg%jJi`p~id{ZWTxb-q`n4q0#r*;al0UD?<6lW$g}Dlz@E!70{)VW5S+-?IMIK z-M~hK)pD+28%)&f9VOCuzRU#s5JKbts^o|?Q8Dn)I}((}fsF$Ayhb4TXWrfhm2+`C z0QO=#QBf*j&HOkAY$s{32iU^8JqJ)xw`4r42i5*rEVczZMMgUSVgz;~JqD(tiYot@ zg$?7$G0J(h_qU}y<}a!2ev+iPfmpr6Txt01WtEvnjQx*tjL*%`*lM$4bOm`?V)sHH zcAJZ&D9c%7PL;G+%|(Y|=aW;`mR`H=UVVO=;#xs#7yMH@d#9}?DNnXOJG5h>R^sQM zs6LbeKRCBpflq(uk6Wz~mqY|+FGNoMrO zTq(+Xaw%T@teE9LmaXI6UkF18bn;J8Uo|}&ozKHH15)$8Sy!CdU06DU$ zYZjT8+IrU3(t_iTSsZ`)?g7Aaq!8qiIOT9V;SGrFDEFX=JZL<#1|o8)VX2Oh}vF=!B0V2YPrBMaH{2Z88sd! zO$I8Ckhmwz@xRi3etN5=sPSt25*_}=)eG~5>hICI!ajQNzU)+S+e1H;K5%vw;m+;y zo+mkPl>@TDYwC~QG1O|$Z%*(1@U+vXhE$VG2j>%BlZF?w?v4|`<~&P^w#?488~1vi z?2PXD??lfS@sDdV#1 zzkGn~q{&+m@rfMwu^s&O=2zXPV?*a(Et)75F4{(ZMY~0NAa+4@%iIjZgI&f&+bq|- zYJ5d|!27gAb<5)6gI)8|0FnGECSTgZW#~zCrU#*LkM(Jzhl__FZ?loPFlX>p%G@o% z7mJf0NQFRx;e)Q`S8?+Xf+b*>L?7$G1OYv39VRFnINauH3^YLF@ixnRriARW{R>Kw z(W$aKp%k**IaJBCPtwf)Gg0yP6HsD$vk&GXN5BMWWCE?wP9}n-Js1waR-oMfQ-qVv zdVa7Gy8u$w_$ozpOR#YNccMC&#=+IF{bE`nN_p%Duyr2rw!T5V=)QN@hH?mfHO4IA5pcBkC&QL&vDF%d9#R!Z2z|a?#@vZyz+B;AS zmg{NpVkLm6_HQl`A)oQhtq9co0r`H>52(hG0U{efRza=fuQ<-hrGbo{%+f%t@^KNE zYV!qE9ai5*6@v^dJLotRV`nK~N$QzoaiVBa2-W$nDYwGUn%`O_bL07pxNRbKjTaL7 zOODxHX#X%%l#oV;s;2?_1~=-= z9NmB7mkX*E>&4;}SA{)0Vl02SHKH=oRX65V$I8vybah^@IGf?$=Wfw@(BE2S7k#{M z^YEv+Cc54KU}VFZUZERgGL*UUdBLjb&4|(ko-^^j$kVsEBdrYXMP;0rJyi1KpQj1^TAeeJlUfnh`#5Jw7MuWESjqFo@y@m^YS;k+ZLXYIC-w%#( zTwqQ8756M>bZFPzRh)|?50sres$@jbx$Say=5uf5=ho|=namius{ghpNnkK3t~0Bz z$+*H{DaD{L>HXRm|B}TTLl#yy9uS+J*G3waXR*&cBttp>(b_hWN4hyw&DmX3&Dp=X7xBm^ zrQr$s*?3-Gb3AYNYC0B_YpNL_D?eOA;g@M!^)33E)cY6dqhEz?aO+y7?|vu4uv~OV z>RWro)w&taWXt172MUx8XY7wW;^N_car=8^sv~#@Ap5s#oQDWOJ_mH2p8FpAGs^@aWI6z_s=uu#mwdy^du#c=vHaCPo^J8O zp~Gu&BZpyQlH2;Dg8mAXZZsosq6j@6JM!31@~(2afmwS@foZc({lm`+{`wtnZzR#2 zc@Fl|`x9yNxgPbbH;hf*MlgD^K7_Qz+9wdaxJxF@k1p-ZC|M6)`rzANkds{Y{UG_N zsY5^BsbMu7bs1yuR;S&knK6<7WM0yr8xMXYbLE)J!te8)ij|bqNFjlA@<)$>em`~WPw!*Yak-G(i+2d9`s;(o z8r-XcdMw@a{CrDJ32!M+4fV}3x$fHEv`@3!^^usYbZykBii2Vrd_o`p+e*jjXO}O# zM|!WpAJVhzBY5Oc!8|9Ltxl<#%6TjvO$B zaj32s1fP-#^<3x(#t1o+ z@T2;d-%h0bt1qlSx|IA+YlGvJz`1fvK2liEoc&fLPaU2>;t^AI(%mW_0nUzGkv#I% zk;3BUcxe)kdCkE( zCNdZLWeu;5zv^SaRhb~sbR)5L%*@1`ow?o^95naF0Wk-H!0kLBW6VCNQnb|kQ$^*{0PcTKOY)n!$dgVeEB9FU-?*Pva3YOk)^*~hRHDM6 zh1X;bbnn*aJuA%)=DW=)&WTOh72mGnplOy#JSVq)Ux3ohDwQ9Xexb5ZtdP^c5fw=? zOG?wQicvZ$=d|>IwVx^uw;QkJzyeMSSFBQ0B%N8D39Bx@*OUH+xeW@fqA*J@nPr`@ zT2pDC{y|tHY7ywN2kTpt5e8`}WRD6>LCxo*ouaL%tdxWmkH(^sQ1A>G7yyQsk1L`I zQwU~H?BjQvVjd(F7lnORkXv|mrK>eL;OV?;zPUGKd-$$z&}+}1c~h!8VPBZ*uecj4 zg9k0_+B+lwjsRGFI)Mj6A$kW)BbtIo_X6~|a1ardeo$kI!Aika|%qQuz@q_^V^M?QRR0&;tmab9h0j)ouwEj;fzeQ(BTaN_WM&DndRhOycWvr>V+UURz zoAJ71Z%X2dqn7^ZEcv7w(qO9qShS@zTYF?veHb%#LYkuw7{7UBo5Kaw5U|q;m+1>X zKsmCmmIKrh!FU;**V>b>`U*%P$Nf$Mh^Z`ObIlSE~Gz8NMY46LpRW%;GmV$>!gHT_AY1feW-?ZwD3xF! z;t*;!RV@}vp~Z)PFeOeQtbRm{KTVU zv3XU`ME7!hGxI0Wv7UTlHnIU|EUT(YB0@6v@I&PW#dRuXn><~R{7p4)s*rhWl6NzSIX_WmMv zeLfvE?GN3v`J6UY43nnCzE(YKPd2tEvO9oACDyaIf4Ugj2IR&47hf|tI|bYX7_{Uei07WX1Bzv7%u zuUU^m{Z9LYck6v`@LcCUv;oJz57@lP^KAeU7!S&!y3 zm7x;Ln6LrVD;JVtR(@hdqJl<{?Ba+F#WEG>upSh=B?gve?%s>)VduwBu6fN%g#f@) zaN}Ac;1}}kG;NE>IWuNiD8JpoJ zPDO>_Z64s|GID@Wy4nZ42!?rk-DLUj-+Rf=$^)YRb=+d(i9h)A_ja%l(c6sx

&(+2?!%t}&9BdsgVuDk_$a8A-B9w_LOO*~ToRc*m69bkw^sZ@d*Ctrb{ zR{11hFcS$F1x0#*FBY=5YZ43j(102?if9TF^bBS_0Ros{G?+pL^N*mX6CW|HbOhEK zQt6q{o>H2=!F#CAj00nV`Bi|XeCqfYByt*{1eT{}+fIUZ_^2}y; zDRa08FeG)ic@x^4McbAFQE^MqU8|W?02fuVc0ferJk}w_r6C0$9*nmLno34ax?2T6 zyUnW^c_|wJo-!Ntz{7gjXm*08NZp%2yPk$T2Uw0jY!X4_L?qKdgX(1Dx=Lx?8>Uqe z3}G&iDJyb-F1#fS-XruvB>E&6SVVl9;6XhCQU?_IRGODU7vjE1LCRhMvj&~Sh+&wV z1dtI@tlK}jX!zp?-#_unlAkZb`8Tg1`WxR)W46xXk*OuKc&jYHlK)tet+QxAlLCuc z1~__iEtM}2!CD7UW7MD=@7V;4)C&iqV}M}nEIy0WTnll~UQ_}EjCeu61a&JWh~L;g zioy<(1^f)#641<@{Ul4#56~BK0z+c!K}#hKI{9p=H`Ny=|0_-aS}~vl5d{MvDe48p zqAwKgWRatD$oH%iZ0#z6fb9x12o;3@;Fb_On}C;T2V4HnnQ2e1QZ5&;_jVWUUO$Ld zE4~$hj@?t#iNgc7W^A@5EkG&GN%lf|cV_)!DbTa`mQ@5|nGK8W0_?rke1a5rLOj29WZIy2&`g!Fkv9tSOqHBz)I&Ru}ZmYZ~14yrUh6=A~OzvElRZnr0B3$?^P0^ zpdk{_8$>J&+b4gfBg`HZPauaXl0I&E$&z#Cv6r*<}f&2PXUh^^Wk}u}Vc>c*H z_5aLw0W5WI)xs+Hn_aQe_vK+uuwFhHE1vh6juquUMs@v;*PX;GZ^3$hvdL8b0I(EO zef(P_D!$LQYzIQ1)ZeiZQ%CF?nMP2UpL(8@h!<`C*$}BIhHZ9p~^0gkpb;pjhB-EE3 zxS8QI-~MW)dgb(tf|K*WyW?wb<)`;7``7P*V+}d)nC`EAc3Lb{Nyj2Z>XW7@f9tN) zttLfpGp}Vm-mP5glt!x2s_D&YRJ>_7ve)#^_LJ(;btxy78M&JCDh#Xt)sO&|ApbOwaMNB2m(Cm2p{|v7Xgu!xej+j+E)N^VYF*WYLDTU>3z}e#ESje_FHcB zhsd>GzQL=zom=%Q1js9~3Yi!ufZI^Wz-M`;Dfto>MWH0DVGHJwGKVQn4XcH2oUzq7 zp>u~H23pRh6N&N|nfAfPoIWfnev1oT3@le~7r+#l+x?1TV}QHlu83-Dk*K|3}FVH&8BBhy5{Z4d$E`v2x!QGRExHygR|g{(AV(!! zcNPW3*zM=RRWU4mZ!bdS<*Y*WVP-)&vjX0t9g3WnMFr={k3kcZwhKUq!OgB%bvX^% zPQ6_`hMY{PnP*j^s~QwznoJ;5%G3kD>0z2vd^xGW^7$J6+?@yzt3aPw;f{cx7hipQ zH-;e@;&Pfxf|c*p#U`-Vwt1E>rYZx8Ma;5y1!iED^MC$TUxCke@&DKFSG;&^RO{zn z&o>qZ-o!1y!3KW!m;;By5y1aH{5Xe0^5|6FWFq2EWwUyd#aJ}l?}_XaJSGfzKyZ$R z)KMO|WP=L;6ek*vGecm)A>p56hT6y=)|fEGW`RqulT59{jhaCY<`*=8U+|eof_8&| zwxs}E!ap8tsVgKNWr^$CYuK4cgp??z0M!yUYM~?)X2;31<8fwqXfPZ{U_*Z#0));a z`3M1RZ9!Z(4@Ly>%8N!r$ub@$5$gQWhnZ5&DZI&fmY>3z()mkWrgZp(7J`n08^$>T z5=Sw=X0Q!HvH($`T*<>eCJbA@`TVTk?`q#oF?G4W^FV8Iyi*ucJ3r(1-F1^me})t7 z!X=Q-(K?xH!X&a(rh5C{`x(FArD5y)?#%$>h=DvZ$IdMw%hyV39V#nkAZM4&;>N<1kRq##Gh5T?HTm(FL zz(*eJW@dPKGaQMX$2k%b`?#^g3`eL_lW)LTAjv+~u?K@idy^SFvOtG`yRNO+Ae#!> zc-$rsFC^j%>LdqRokoMmXdG zy1~#Rlpr+l>HCReu%H(IeV2kttdwH9i1MAt>SF8uctgjj6lQ2Y)|F?;v*Qd|P3HP9 zb(wN(IL8hmHGYcr4|O?kqmcqYG#nGh<1%oDB3wVGD`?_`)0R)3B8)oU6UOxW2gjhi z7!R%i?l2P{uvdT&wuG%e#0cMtxsA~qqctKnc4A|e<1PE#I z@U)}LrU6AKeNlu16POi128SDBcYfbS5G6(&MJ#!=09iB~^2)&Z z2q6J}!EuHWN5PKA3nY=Sh4zg`4Ys|+KZqAQ7R;a~_<(rXEKCUD0u@adfwcr~Cw=}f zSCGhq+l14uos#ECYCzxzc}52Dofc3)9xnd)^FzNld}j(id_w7a3&V|4ijG0%rZhvM ztn=U-oOT~1Obrr=V2dC7{XX89H~~F|XBiFHMQ5Tybkb3pdOqq$L=LpPdEI1^t0~Rj z_;rrqd1J=fQKtw_bl~R3K1^NKvA~`puVDM}VFqvOC1T?yXV>}!h=@G!v z5)ZoGsN2^9S%?T5Od?AXtm_~d`;$ivxa>-Tl+CS2l)N-&tK;1Pt^ZXH~h!Sf2sRpRTwY99>>-wKUs!p5Rt+sGp4qISXqQPd(0H- zWL=E$yFAMSIv9&a;k3b}5cvG)7=*mve8OS>_bz@zl!sD({P|1W->H4y&HldbcVj=J z3x0J=Tx4RWW9rtTU)Tb_!evTOjr$V`_6Z5_%Ux{j96anmhiQWiC!*sNOpsSF_ev`t zE$pi6e-oiS@ylI=&bMbxPWoMYde-EWu)1aI>_vvonv|~9 zxF-R#;1_Bo$d00qY7kZ{nup9fk}n-$2DtJ3hb}!VnX_`3h$K4v4wQ8urAX=MJD3@Z zX&LkRnCOb5k-D0v>OK#QYtD|PwexMFeb^#Ro)=VUt&oiK2~XX6lN{aqYgW7G?&6Q5 z2U?vkIat@UIV;d#xudmfMxdot5nt&qRdYR7EZC-07%;DR+Q#9-o9f*2Bx--f;fz)& zKHABvwOt}U0SM_@Za%-iMYMaGlX`%jhuj>lAwm_O&iT6Po#|(lPSO2p?k#?(o~=&R zF%OD;5*oO1RBNU}jl{$BZQRp3R@Ibd8LN}G)(A?(&n~{x{UF%mlSfKS+4H33=Zp3? za0YI2=lF_y;*q#}gjmz(rU+%O33fbOA#3lsoP4URYt!~iGIA$`)SH4dK2drnf*^{&evA&iXC*{Vb?3W!YJfvk;lj>kvoHWZt}W9jr3hSnaY#^I@?}`Vb=M~Ecp!d zkQ-o~aCB8Ras!z@0Taf*-F<_|1R{Qpa3M>=eC&_#asgBakA~D?3M!35IjorYznuOa z-^YE%Bov5B=z}t=2}{!=H!WkK5eYJ`0-<5*uU7zk0M?@MGXtyyL{PFTu1=&QdB^wo z!dUTbI{}i387T^GNYb!QWEotie4i6pG=F1U#rtp@Gu@`7y}m2}V$<0TGBLM+w3LP3 z_uzf}OBS?j1~XKE%{-Uw!0-$#v0$@-UxQ@g&;7EdarH}PK2M&?Vr^L0QN{IsXKmb5 zyEdOacxeU6WzakFkzniF-urzX3oNOcmx-^0)blQGcG3!Qi3f+ACSkeFsqza0HE(NX z@O#~sJP~B29?RF;SH=C2t+httOSj$T+OuRRlOuER(rLrY+T%2LucE#;+vgg_lsP3| z5p3w)UkH!NjvFCwJQ(h23H-a}s<&+pirDl?kX|*GQEhmd`tlmNrpFB)ac9k!%T+bM zNEm7z+@cw`%=^@3@zav(nneJuP-{};|Gtp zF3x2;?#rB3KLmcQrfP;$Le-dawdbi0e$TLQ*%N6&m!q>x_{mm4Myjype(Pge0AK0; zDrqg@=~0{G-8m)i_w~+aC=ngfbehr}(nw?mL57_-UBxzA5zpP7tw@QNA|SGuq^meX z49M|_L_&UqAUj^q;|P>vr_cZ)-U2F7;w{*qJkOGHU`vc>CJ%K$ACD=^u|pZhE(bqI z=M10m#jyPdFHd^Z^pXrfU@Mc)R-CE9E|kc#Z!7mMS9V)cGs3Xl$3KV#AP;Ak{C@3Wy7NX-!b4)CN z2NH0P**VIfUjogL3(KAO+&f7qnH-*xz=FIk-ig~Y0k#bASVGuE<@k{8Z~>HHMMHM^ zQD}{oPV?OoKercb80%=+=PmY*ylsQGYJh`d!!d3P9RXJ-)5hLXxzW^3L=Hw#o>Q?j zmvU4R7bR1A0Q?|AZ4O6Wc3zlc93!{{$7?$n?<2k^E-ESfV`YaB$@S#!3piO-jo}zy zTkWsh678wU0`*sn-umEcJrqr&brrjxEHdHtZtOm5dh9w;CvLjNyQrk1LypJUqi`A8 zim`muMM`Flo49|Gc#2yi&_L+hdcy}ZfVL(!jfmR?Lj@w5P$UvN~ra5kBGT(|cUHI8ToPPdcy?s7sk>c_B8y9M$O2ijiZ5b zgQvcqfEWJB3HU{usp~?|$fX*%hko_kjR#{@r002-C6PEt3OIKTiEB2eh9r#GJp^p| zO!JO#t*iB_2+t@ynEXx0dvyT2&=GeLUM|f+p(^5P#rDiLuEpm1%AA&x7x#J<7=jrD zb7VPc2k^G#I*X~I8EkB!O@b*qyt$hNa3WoES8}kMu}kG;WX^I5(65tp@LFd*yC-d_ zRJu2hrbL6fOn*v`*&~s0n`+yLctyp(dwRB$q#q%vv5yEWl@f2Z(n&LOXNz2`cmNUw z#NMlrW+f$vrPk@BIZ%K=(*emNkg`@Wy1KR&F*yWk!y9y{n1VnCW`r!stp|-cP#mZC zO|i9BF=tmJ?fgCu0%K+cMDFZwoqhR zWQVL3;oB{PGrEJ(aAOsaK2RC|A?1 zEm~3RSw>JK68Qb-f#KY|Y~ecP!lL}%$>J$1SFV=iVhc}DiR`&lzu82`!s;zSz}rD2 zXprE@rQ|HP_|Pr-usnxYU%R(rN|}gmyr{olr8iAmP9-?Ii?bW#PhIAaA*Y0ZWLzuX zmUVrd+Oma2N$xiHi&x)x?*66Y0$#E@+kxW5Sv`^JK`i6v*E|IuMCIZn>ZL~iqSBsl(#~gd26#&k~`&n$|xkQ4;#Z%sQG`(@&+HOrJ-5Mok zeUT{NAR+QO@Hj3i=5x zrqI+K`N1LOlfar28#1X7z7SB2Wt+UnKq${%_Gb1WJdat$=8FRd6WMwt)HwLkuB)#s zlD4C5u_bUuos{6kebihQp<``9Tx{1ux}(le*uuu1^hPYP@cqihn)Zc2Gq1f!AzVXB zw8p85u7DFT(-@{rH!6D5*aXl>RxjyvIFJd#@b-ZH4TJ-{0EsmZ5rvwtP#Q++k@pnE zV2RrgdcKM%5F74c5P+t)S9~2%*U?#g0P+>N zlsI9;7J6QN$Ooa%0r&-{TD8lfKv0Q*s5%*AZgBkU@lrKtTKoPQ$%69@)Jx|LK28@- z?M)1_Gmc6a((1ise{g@%yx!PE@-(Lx0fE)0cb&Ge=-z5Q`+lcwf%DD(t>gMgEB4F- ze{=L>`{~t^{K26(k(^y0RIgKaeNaq`w^;wK_t1RCyWWK0^M zpfJE<&-Cv>iRutA0X6mkU2^YZaSYVTD6?TJUtqU)Qb5jx<-i1c_1%Aw~Fh8WOHY<2xuK%I4X7NKA{f>Q>at(dus=WU$G@?NGe9IG%srovC7vO|i*P7~Yt1D;WX6G;l+s{-y?=FS zT99UT_{jg(0X#l|Q}ch(Xk+T-{tDLRKGAX3`pEN!ni1b{)YDd1-ivySYKp+4**A75 zNIgZlY<7`Lw_ml%YQYYL0P(d!QJX#x52Y;u=MBoSPvTz__E<^TE`)@mgN`2}gTpxv zt{7bUb{1I~Qa~d*d-fhHQ^iARHuYw$NRclTefMTEzW~WsD{i&N&wJB`cAUjeRJhPvUiluSKO{ zQCYf?n8e)}SD>3EG*VgS6@MEOvvwB6Fp4SLxTd4#N4gQR`Za-aSF*w_3nuH6_z_Hw zL0Yy2^PW_~%%mFW$$<(RW=3ZEp_~^7aq>UHQWA}}g{flP9B+~vy7lpY_gDA7yKog% z6F>X6Z*wiKy~v*6Dy0QhBfRm1^b!6tt=ek&+aa9YVtXS+S4Dt^#0Dkh?&+SZBDAe} z>_C5-EamuP%@u$^5zGS15PYyh51>!?Ttx6Hg(`JiCxDrY?2@qoz%GB8QYyAqNz(NJ zV#_NQ&V+`=o#_mu=OBO#6Pi`*w3ia0icITg8`JR^+djsYMbpEIHWLyp4v?KJR)(Le9VkD z*4Ck9h4(p8xiKu^2mr9h?&p^ix3zTJVh@id{~31*ANbGcl4$fiC-lPc)j6Tzv?blB z8UIw<4T`zNZFvF)*_Ib>8G{9hr?FNOwu@}EeQB~y`6rN4k|igU1mffaar&&LdAa%& zlfb%|PqA zU1M{_2z!UW`-~!}H}`{DL|Ot|tBf=1BJhuD=Du3=CDoYY$T;IF)oauob~E-o!IO00 zdhk(=p*341l$T$h)T!UR1If{OuTmjRDN+&{x=P)FJC1}xxS47K5tyYxD)Qm*MXY(H z7_{foc;^!`Y$cGi6cXmXS}ec=&|IbB1}L4p4#)Gx_}{2t(qkIK$K zVs~)#Le4y(8q}M@Lt&a*Vur+WMC-F*lvk}bMb-H@67U?kloM;o*OE8~^`^tAPKBef-q>+!wo#?BHO$oO|cXqF=7u+#PgQFg4>| z5XSiY$j>`P7yldzf%YuXolKcW?k{y6<(90!a-Jz#xP3c^>RCVrb}VCpv*#BySC8aF zbAZM*#bUx^mLM?JdF6{R(@Lzom*L`L6BY|*C9(8@P4hS0OzVq&$)BVYDSt&sj_C%7 znayV#L?L~C1g&z>?U;de3X2inM?6bs1t3&e({J$I*^zxFlbl(Mj&iYLi#V3PlWfw? zN=ad3RD3PtIM-o&rr|EZ2_8(*+JO0B1$|50_nMScNvWekWGp=(>aJbKgBZSp3Rnl6Jsr-I=Cn=)39mxYS! z$P_&pg~{7ON;zAOd)Wla&a09W8(g!h;hw^;I5FntF8CNVX&*_-RnSBa?67C#KRzXt zlyaDdtKt=d2&v}lIx^#5Y^Z%L!j>lxTl%1DUnb$xz27}to^lha){Da1M{yJJjPO8RB}Pw(sNz0uXV2Q1Hfo~Q@+B9wxddGPn`iB`;}J3k4&;&# z7$!^~kQcdyTd>r1`zvm|w5*Vq=nEWgM93T(;hS2Le7V+$oV|5*)1_>7e2lyRo;W11 z^!g>&1gmS|iZ~pH*r8|AyA^nJ#J$S2MvEg>@<`$xoej+?b))>UOMk`9IDqe?|Lz&& zlrOJhwxkG8tvOthB){fx0WC*uw(>fiI6BXwm1*NM8`qU=zkwUPqLDI-PwYU-;Fy@~ z3t{b^IcnEZ2@ad=tLG^yk``{i+7#7<^NN+#>aX1#!_L#Rug)q_o-54Y;$PmU_^EFw zk&DYqafjG91#@+I^53xLACL{cmFsry)Z9&YYa!CsM-H^JGU2XVhV-Ksj+Jrfq%1kk zSzxP061g7jDep@1CiIj2kifp+0mk)bwKM7_G8Y~I*l2WAy98##*6-zH- zEi~t?-^qhE=3ILqakUld>}85EKK3Q+t5m zqQkL_w=$SfL-__^4k{X2#2#Z&xgHDXVY0xLwzcFif&!G3q67@g1dN-h{qbaD-3wga zIXHROwkk0%yzWSgFk3B2P;zaNkhXYBMf=3Vk(+ngR;d*z9=$p=L$ zEkTPdmR=CWj5CeVH|seIU&foVB$zW4nxi$lDAsZY3b}cB3YNqcoMUG~I~Nu0K;E`XO62;I$adR2 zw%rf38BMo6&1jANYK6PGr6WWlVwJXljGNUmx1m|DC)lEr%srtb4^N!f5LfE+<5>{J z4ZcSmO`%2BvJ^ZezwbLTNeXQiEOo^w)?Q_VYoILZW2Vp9TGDSqB(Ut~21%|Lw&0`b zt9O7h@B_wWWDaqG)dD>z`78}!4WZu+qDP0^aFT@$T39U*6 zb4=I z>>VgBNnr=Q$Oh)4vc~_fyf1-k;@tY4EM$QYLV^%h6A~aQU;?N?ToMSI?5?QThJc7j z6%q75v>LY2nq^r#i|u?x72D~s$R9Y-Mh~{7m(wOJ>rcT{^C-ujd4t)*ve*J9uEk)Z*XHRCU_>jDn z-$h8nx;YZtOtyc-v~%d~qY2q{cuGwBDRNtEq#0{LRo?Ohb;FkQLh^P8=Kyg&Z_;Hq z(!txM*y*emzd)1Kk7ZYy63Oi;EpChU!V7urQ2TXw@yjxs53d!92n62oGy!M@Q7v>^ z1#o2af_yka96s!0HeHOU;Wv!~OJ^$0{w?+x%e<^D<_B4t4LmDxntV|^Mq9S1Ls&4M zCJ4-n{?UAQ%Obu*B+c;!r4$qK=1z)xCR4vhvARLhlI-@~{3qSrtcBI&k`9yPmTyTf zIJ?y?3Hxc$qdum^*iDL#Vfy9nZsUrjH8Lng8Bf;#0=WVE;+qPIH33`#m46(1p>o0f zFmOj71i@>1N(yDhZe$)Khu8d;&~lioktAdY>Ao8_OcU;}FJ3nSyOB zOp6XoM>R8d8elhgSLF?*>&u(g0d?l`M8L#(#NeDd}7>>2Q zslt!P-@fulbF2uy3fQ<=P7~ovw2|QtUy~I+pRFrKu3hi|+;<-ln7>5W7wq@;2%axIJd}fPJ?&g-( zmU9epb-GvVg&|j)C9^7<_iah3GadObLnB(p zrsM?51XiB;$1Q1P>GbYmjO{@)o8v!=?WDwKb2t5?rRDXQ+6po&EX1=lKosaeFVWE! zW=+z*DSDxZU&jjREHat#^ZwZEHtzGhe*De;%7$>sg#}~vhqOKP&P+A21b-BBb&{ml z%6gWdBlWrLMr-P1PYT++GXl_)VEg|KlE>iBS5ZgwOqM-b^YBY&~^h87Q6&)a~&L`y!`np@h)4DIgaZKRurS-TcwA1<~T z(KomwYpeSFezOuhmy#D&_1wOgZ(c}jDcSJNh;y4e@6V_1ZJ+-s*~)aD;nhDpSJ!lm z5+b8o^^ItVrC8je#*{ioROCtJNfcVgEH#m^+=)lq&#k^ihZfebH)X~?FJ{6)G(% zcOr{ii`Z&GQJ2hLIx_^{CP}NRqT%%p_c*R%y?8JI%KW3ZEK8Cz=Q)--*)k9I4juOM zpmv%o$R5-)0idfO2h7@eB{@^nDGY_B%JLFBa)aDqDKL-WK&@f0Sk)w3o&|UW4-ew8 z29&I{S!H<(VQqgt@d>P5#O9?KRWU|m*#yMWVLvuQH&p|p<&bUNNvN??xj|##p~HUQ z1wJl94p$&3!8HVh!Nb{atezW~Zp|sy7@FB3I(`YF#1)#U!M$jH*Use3V9Z%u?jo10 z>bN)oX?>nczQ@M({)lZVe@H%rdx>xsRS=C4%`uOX7!XVvD5y)6mV>Mz0ZQ56<{1!O z9Ch9ZgL$$%9%15-14Vl*m!tHsIKUBRS4^7t|HC@bAO1`HPv6e{&0Xb(zRMr{`bOxx zznx#TC+xx0%dexJpD2C1tTv)#%lY*Op6&SlGq=|_LIx|nDfbQSebbFHzd-XJ_|4d5 z5P~r#r~}4=LOSzdpun8$GY_oCd;dC6`@X2_!87lfi#qX*!5l|7HT%{?U=+p!3>3Q$ zzHiS)kI*yN2>J!GG3Ys~mSt@;+6GP(jg5TYgKaLuJVZw(ejHM{eYh|Aerlz6GU^>{ z^wW#KG4X`A&=`hoKq>5k(Tk9-t(IA(l8AITM6jaE(ev+99a(4Wee%R80vyudCg&;M z3-rqOY2Fw#>ZE=3K8wJtPqybKNDOWR_ln0)``8$v)qqyiStAT*&8Fo>5Ln(ixTDR3 zj0O`p$=PMR%*Eq=7l$jO-lM7LOg+P?{`FVj#;)Oj1>LYY@A6*cUm8urzbX|wI3CvU zyYa}Qw(}PPwlNtR?DEKWil1dk81${OT#d!f34fTM^6$K`^4^0W^0;xd+e#frYNE@1 zS6bMuIs>I*U()r;xwM5o*Q8i7OCSxQcykY0V?<<9$BMvH@+Ts_7ZjwT-72G%6~^Ts zbWkgy;;cqiRlDIS4)mHBMs#CWHPNparcP*#0WlGQ7= z(^p_yCoslew9IOpdhwe>>msziq;OppH}QndS^#-(-HO)=p~u|&ShIm%z_s^xBEOOJT-)47i+DP3LORs)MiEZ3}WeJ??( zj>VLxt|eeC264_Tv5J&?!rVPpTB^<}IqjF|*@k&T&N@aEQJo^^l-<37z4?=U@h1=5 z($eGZTrF3xIEZAwBrCz|?*HiP-v?)Y{O;?qh%O~hG@JCN(p&!Um-4@P7r#`T?4F#u zAlbvDDqqL4R`$*#)l9g5*jkx!pRP|H5Qw`+(UwBl;?|uzMswD$g&Efh~m=> zh*_eLM@BEjykSq#iR5w#MMTxMX4N;8ad7R75iGa43|X~J9xZP`%%t`9*uUMYHfvz! zCF2w4K-?B*sY6J$-Qlr!8-SjLy36q@p&`vhHS&_0C)1bkEgt4-PZ9#vAkz+Eb;MjX z&rF=mQON;0QqOBZ_%JOw`2aXs^6kKk2R^-s4@4+QJyOs!*v;W13eG5~zpoktS#11)jm06$3+05_@H_Q|W=aAbGKmw+S7qukZq z8{ps_oDtW2#(!iA<65QJ0^wY&zbEVs&29{Qnm7Nk@g>c>LHnzvi=;F{^`ixLr%XO# zpJ5g`%6Ti7SR~NX;>3FAzKjW#I0odzo$w~(qiWolLr_QfDGB}TVi`RwK|`76Oc|wi zzR94FmATPZ2<-3N&kkkN2;D?J_wKZeB{HVxD2w~2xc8lQCeH2B6c^&Xt0E~vqN}4; zn@1OO!(?KeTG?@zQT`JV8_CHU%oj>p)Qwg8B&^w(sK4N~=h?*juOxD+Z$gRh>}g!A zL|Y=0mq5Oq?wPSBkAvxTX=#UJC+EdGFo*1k$?;}nyw^ksUog*|o9hs+!eX=~v4gf% zEKpA|M@$P4vIk!Eo5;!T#@8~3|Cj6Do;Skr7VmS&-PPZ+-NC7|C{iRiSG{c~F591y zD};2?M}okV-58Zl?rmFLIY_{YzJ5#l%tw5yrCU5md-tVZaig}FKx8T6Tn_V&JZI;( z@dzD4SJfW#99nOC-#+XlkuaN6{<)`WFt*g8ad{m7dV*uv&99r}>fKoUBVG5rbsv<9 z`J2_U|B|rQcyCtLO1n&bneMB4jYJm98VXT!X$$jp?bEPqNH-8?9d)mY-2q{Ao8oja zKHIQGopKcsJJ4c&cPqqwR1~qi$fO`o8aH>JKWn<^l#V6G6~!uhSKhti9VDGUE-kaA zQjG0+a*K9Gw&3OQknMOEB6L&UF1IZyj0lPrSxOxo9FEFGj*8VXTpmQWZaLKE6J%X= zP%wKOKC?}upgZJoLr>YX2tFf;NE8**R|Yne_+19jVTi5NI8cfBF_d*sSuzFB7=KcY z<9kia9!Gc3aR)=*xh-hb(1N5Ob;XO6y!${_tFC^j4lie7suz>k3K@CZA}hO(#29l5 zrtkLgCnRNnCEqgXW5K|g5<8}rg@2b|*${s-p^Lqus&`Z-y?s$-W9$myelI+2zQkJQ zgmX$P3F&+EVVStUd*uAPe8u`Tm+-V7>rc>%qKn5%I~eJ2{GXDZK{A5JAY+2R{b5&q z_9FM9Skl~wvFl^#$^kX?2gXs6KpswjUbR1o9CcbTC`wSZR3E>Za=pG+ZKlJJEJBV) zC%my9c`o5HaZ_20U`3#5q)g zLgjL%s^I}D?b3wX+kT38#o}7QqNSgQY!tzL*Eh80AsL7Zo@9OSmUVlE(EN(9=HwZeVRf*DKNRtw1m}?}9=T`C31qn^- zXIb4Sff}wiQ5``toq0J;E*EXia_=dDTsAj!IJdkAj^R$z56ZxQ7jeo77EHU+0x30; zMjhiwO+P)?#~y!bY<2|4++j}zEiM5HmB$z1%+r$I6dgS4Bk}8lV=KOoMBqjVNBJLq z;oqLVC9uufJ-sNXPm%U}I1%hb|>=<-Ix z7s~oue)z{(`6IC16ZoPHXYJ|-FNl;C7M!}}ZOU5(N^xoK2NVbRlQ&<14#zBQ2`8%_ zRnKp)bUm6GUF|=xZ0tgj$!}7D-IhJbd{^eRK6=5)T~}W(I9Yo-YOm*w^FO==2gkvR zgsh23Z?xM*8(4D7vIp^Q&rM)SARZZ9Lf-yPu_4_ncyt0oY-tj|;wT|={X<(Dr6!Ew zkaRzuPK%r>`(fmm!|STVz3b;BzgkdpCv)Sb*b3^_FZzBu7JT}LkvsxDqZ|>b5knaH zNBa-2L#L<~{=;o=T#C zXvy0RsJ=C%*;v&6)F?JH68EeonEJ+24SfRT$%Sg_Kn)99mk)#k2`pWU0$@WI=A`8l<0M%MsPQ@%@HUh156uNFMLv+CTY zkZ!po$7P9hCZLJO~ z&CySLM}S9!wu~%%thq>NUML;=Co=~IAd&zitFro9dUzrknpJqNo{*L3jiWT)B z;GgBvdqHF<8!CyuSO1zb(Wu8!lELtsbyP5`laY)>YP) zg2iIy$2RcFsh$?!1+PdlQiM8RsL?UKQ$<^FaGriPrvzSQb!V?z;PbSV1#R5qqvOlP z?)(TDGuIc)@D5;?=pKpB5P78mBl@BFHej)n3xKQ}ZT6rEk=-VsGh*XwAnYNth$0~7 zES->b&s;v$3@n!pt-EX$24{#4lTjhdsp@=^-1h)j-9%m_UiI^;(}ix!V}oCd0xumIkS{N#F>^OQhnf@{pwM-4j3z-9<>0q4 zcZId0j%k}FB5;%Rc_iw@PFbif5<`%m<$WE1XN1f2m?P~DYj0LtLNBt$dmZY=5+!^t zQwPbz120C5bZb)Si&;X2>#2l5b#|Q8w+N%2n5#8OCE8MgM-H&_npWg}8mp2~BNgOF zJR%L-r{#GDs)Xb54f;fFuyt#QMCnVRlk(_h71qKYg|kC!BSm-Hb@lG9mbTlzSoIQ3 z&4-nh_^>}pANTx{eh0ouk-P!^OAsffzG!7)`&>KUuM+d)J=^x+XCrg2O;eoZjDYd52$CYu^l-YDs4z@bX%6`wCUQSq?38?=HA&s-a|hvS%JOFlJ_5b zS?K15ova~!OZ^3E-R7}flNH30UTNVk^j^VS=AZX6K-NtO_*L(SVabQOej@bLKjSREu4SY-E!a$YtZ zr_Ob6iSAV|nUofv>D~}<4Lo6UrQ*NxjO0yCgXDUL+vN4M*U}xLv(tSOeOXA{M8KC{QV*s|Zj z-*q{4uazysR?`3-2`}oiZjnkV=p68*rs45K?C1cJpk6>&SUYv^(Oj;$UCku081yi< z?n%h%y^bW2NeiU15%1HP(d7Mffu#wl9omM+4oV?i7+qYyGl?gy`z7O-aa=65bd+G?NpU!}WHu6#x=kV2+4rEl4WCh*1r1^awk4MT{|7kHuP z9lP(p8sXz+aF!z`BMhpRvYSV7j8@4Ye-}0n%dUJD{Ggcu`BcaHz5MuPR&OvJvPvUe z!u9TvTjpkOe751?wAed3h0-F|CavX(yQ7kZQ)pWti~{7znOHY&SABoGN6vc^o!1aA z-+<|ri^(;v;oYKrl8FypO{Xqe!QMX+8)GYS57U8@*H>p`7cVTI+P{dnR+ z!J2w}{Tzq$Y3x>f17VkqvW5Cmi>abm`M8^1vm_og&$k@-&P8RuvGgFt|M=kjG^PV( zLj|A8U?>*832(~uXEKBMs~#5?g-fw`TK^%|Z1)h8mY8k4!)=2xo$45eufZqYgEiG4Q|;FtuaH0Xtx)e0h~GKf+g%>O4tfTBk3XfV!LH~UPt&QkR&0VdkNi9f-6Q$C7==u_ge`s-cXVXA? z*LsPkBVK2lC79U$Q_w^?AkhKiq}#Y0=@gvqGZEQYb;4nk|4vY4(ExH&5sW1G=p5|1e3q0_T4{!;Mz18 z3(4ud*a2@Xhp=}JB`2(j&pbp6ODOkPI%0Jbwd!3nkKbMcQAy0N3bJx1OPlT&LWE^L zv47iPhS4s+GD7$B6?q7q@R3RUE|4lrukov6{W7iAuRtehgauC{I#Jwrx?zm+Qpdx2|0sF7i~0-0L=8cr8QjnZd2^ z?&Y5ekXvK;#(B_1P@RC@9M4>~8@(|Gf^AU`@_*ccc6X=~YS4S+3&&~>%x|8EOdPO% zhTeOF+v=dNpRF|BUr+sc>VCxJMu@xtXNM|+d-WM73XKH5I5fd%AEaljc#Vwn8lWv3 z`;8)1uh)kU-@%`aG7!sJ{8kWY^n`av`gDU)X7k${zskP}b96)=3(W9&r>!1FTHKla zG5&PYmJ1^gu7StjX^rg0d|inmO)#934bF=-#`&2} z4J{1II%CYXb{V1*y$(b&bBDoZRQHKto1?B~nFUNYD(o}z_kLeK{PwSxt%`xkjjvj1 zG&tk!6a&<2U#-*k&%f{gTSdkGx+GR^VeyrT!HIC) zrt^MoAw%0a2eJJWMr~#!GEN}xtjj3uI`7B!{dEwO^V)+*W)yaY6;QBx}u=SX257YZa|901O&;|c2Bi2R{qPGhU?KyNt7SM*&2H9T^&qz{2BjYV`Fis zcmDGgSLmzZaKkZ@4}*)9Akn?&@}Z1-HlE+lZN9wp$hK+>s4F#L9vECn1IYuR)kg_3 zL+AGJkFG*y>aR0tAjv%m=%{*=s(t1@JhJUT(*0tJ^`VvZ*OyF?RIVt8!N8cVe=|H1 zL;kyAPE_MiW{^_Nh8rmp{F(RzFqStcz!iwFsEYJlaM>V*vsA)ZRRis|Rc4G4Fj|yw z$8i`P=w!MXnb%;MS`)-N!IjsP9<&4|T>vMxhtEeux##bWK^>`~pa%J3mlT7qR^w1S z?$Zi`;UIz@Q4{E=p}suiPZgt~$p`|)0ATNgf~9izaKsH}$!%lcYUBNiBQ^1N=@53e64g58oyj6rP`g$0 zi$Mv8!5@F>B!uM>hE&uq1tlZ22C47$ztUd!vT3!4pWn?h`of$pojcR7m zvSBQWEb&5)7tEvaSmiDNwIC<4sQ|Tdlc|aTIx{d{$+x^+0qUrFQKF-nNhfSzAU6nQ z|0%l}xU)O^&`LymohsNs(Yq(pN*GDUC1mBAcC0qvCJ$Cl(aN*sM94i(RP`W#M#I2o z3<$4)ZqFasGx>2u#&WX(+6f`!GBYdZ*jpywYZ4Ye?=3tj46dhsFBuiQg)`OH!wWpK`TUl`_0UPpj&;LD> zCYlqk!Su(=9BwDPrJhN!+(CnETe`VQdozue)_tW~)}HX_yVvL5itV@;UHWk#N4Cp4 zDK)kM`*Mmfy2aw`%eZdalb6f>njGJMSWo+RtN0xWmLh(UWyh+I{=&+oAMhok-WRH& zTjMg`K7DEC*x(Y_aQg8~xlFISZ8|P7k5KRkUuJ!;${{4jlHwn@<%22}*SXJqG)ucW zuFm7N$KHa+M`z7myIDqDJ^$lVHqXy~vKROL@*1CSMtAs~D7$F?EN*Z3xYGpz50=+2 zId(Pr&1w5t*6u%#)~#s$mf5i@e_hlk30I$gF>6-komj5InzcsI=83wVIcgyNwIUp+er_hk-T&<$(hd9KvcH*swS(Tdo$?cnU=hDaih-dWQtim@$3JMn= zaA>h+J+vb&O=R$yM{TH&m}HsKHbg#B!IcIzaU@gdeHgayz$xodN|HjrB1{A&Stk?~ z@yL#!>@08{^FB&Fm?T!Yhtv-F(|PXW=+6lWqbAvb}Y4B!jndOsgnVn>XFxQs{`I zTe$Bj0h1HHAua}-O$4x9Ne|ETuf z@Jn9*Qa$qbUPFck(j8*R`F7htN=pbSn=97xN+QFyZkrvkDBd}-?LeSYC|)ZS>5g{z z4n*3@!^6|@XS~!~$2&{H${Zvo%l>FjfXGt^ht|4F&Q>3DI@36G%&99oFJ{5Uh5auU zY)oYBNKLRFhxBIR_I?3NdY(F{3x7BUmIUIJWL*86ge#eo%M^~XBc$&~z-kMts7A2P zi_}IG?90Skea(nE-~0qW%gzX9#X$kKBwWeBokj$P*1A=0_y$HThL$lm9{d3|I<%HG zxM-MIYXHiIb$(GyWa-3wM343O&chUg7iV4%bLbi85r>De#kq%^&&#JNPDWA(Q&_fs# zKgp%^Z$M1I7K_kObxv|!Y4yD~O4=<~Jd6Y>5Et`~-@6fxPp`sd)yNZflZjMqg|xix4%yp6-ZTrvI+pV0i}`%C=p|HI$C)%M?4 z;V%Jex-y&%vREvk5X|7L=qknwcp;aC6d!JvQx;r?*MFG-NQU)@s+f76vm2LKLEvEB zXzdCwJA26Zo$ykz$ZZH&v}S5=BdgHR7#Od>3$8irAFr+Fl>r@=U=<=H0)@*ov7o@2 zl~^hRt;)2iYXHU)D+8S%8mPAhc;IkWaY81r!XaW_lS|>!z3u^U-$UjN8&HY4$jWjw zIRLiy+nnxfJ-obqnJ0Q{0C+`HySObEOomd?CrP5+pj7NR3T4Vh5kt9TPjz0 zH={ostBaR>w_XQ7w%yW-?nj27Lkz3Ci!#ukg&nRKRK&7S+GANLJ2w-Z2x9+=!`1r& zJLpgKSiPYkh=`c6b^8V6r`J``g~EWNrE0}6pP-M`XgerDyT^lJAcjBo9tBXg%+274 zKv3>H6po_yZIOL`e%O^2+V)|5+jOSl?S~ zknu3k2iLpPZCzvQ2b@iVW?0NJFwPj4HYx)&4~TNtr<{7kSh1sIRU4JcFh9o&5y zq-*9Q4LL~GMCN%kb~Vz#Uzq_kXvs2UK06HhRei=n5fdF&iCkfLmE;T-i0u>wj@t=~ zfqc9qRCjUQ_ zBLAOA_1xaP=IWkR*mFKl{}$z!@$_$!Q&z5(nGfzQt<1dN*gj(>G90UAMojwQ!rANK za7eMJ9H_v0)oE$*s9wx{??5NbBpKATA`IY=O#WD645e-W9ll>K zyH0=Mfrd{YAC^@V1XSi2k^Sh|s6d1Mx#WaF_`R?T>dJqYYW4qO<^KPHKbNS}U!JZP zcNc#?3;ytn3=JmvashGNt68sRiMStchCi|7lCePc%hNkaMP6{LhD%XFcai1+DCFd5 z__HCT6K!Nq!M>?`QzyWUCApsD!DBfj!_*1L=FXfub8ge}bTDopW{WR`nh@)|kf}Q} z$Yi(?ofcj!3`ZEzv`MkyDD=rH14oiXfwcJH#WoZ~Gv+(BTIuB)IU2U@o@5}E{n7+D zGE@54<_?S+L!CB+8HxB5RGWxc-sC?L1G{hg*zBkM;IlXTagd}H26%=b!Fn9nUxG>8ZjKHs~-Z zsY{_kXOk*?(pygmHzQ~O(wdve0}2#5Rpxo+y2AvY@nh4VXsP@#^tjC@hUR@3v(e(Z z0ZanGu-KsF<7sDm@oAsq+mo>ufjEAJ{4gfFI7f$Pq(NpgWKILnEmnLoPN-3l5+27v zR(#PsXtfk19A?S|o?cDRCx5$_26BxTCSx$EeS-MyRUq{bX0veM8hF3Ub{^Ck(qeM} zqS;M=2#lBWENB1W&LZ>IJ>OhC8r@oC3A(ii*q#j8ZY{{U5l5|IRLj?>(UU;Jw^J&)bBAKMK}(7B%}nAWc<<)xxcTfLUN%tdVR9 zS-{T7{?^SfPs&T8gMl2;mC=P=89C=^pPB%<1#H^cX(&L*_8skDB#x8<;LK`Sld<6F zS)_UfADjK@6Ba#z)h^XGOr8VuypKA$qk>7p`z#WP4&RRtkFXME7N^&R0XRiD5{>h;Do~;x zSk1_$wrfLS8glQGs-q8KKtlvJV*kTgMt}LffWv<=fBhzAAFvegq1%dVcgfiF==SP~ z560AfQIhW(`bA0ev4`!z8Z%^c>L{^(=}A8!_4C96SjMV)bK6_QDgBQ`1CxX;=j*>gST>IHEgw zg|g-I1ELi{+55AF2RA^s~X`2-QN)$^C%ahO&5+ zs^+!|8CSp1Ae1L8xN!+YAt=@s_6Yd+6Zln!eP;N$!u)J3%H2l#!0Z_sZ!+xF1Kz7; z5(GnoJBEz7j*Fn*-3QOPdUH`n&2g1E0BugFWM}~rUVF;9hn{O;nXyuUF{ZY94JYhh zSaoh{r^nj5uaMN57lqmk6py#iIHzQK;)=#|ch`Tz%S!HCZ1oOrOCakmD1wTQZ_y3X zmT5(4kLKT^j%0`Ixjh$Zvy_JT(p&Vc-r|H3xx42gscJ#}X%pJ5qa?1h!c6wAwyUjLP^6sLB$r^z9VyYrpX3)hKS`Pe~W zK9_TsRx~K0trPVKYER8hhkEGSC2V@40Gn>EVKpc3pZH z{>)F>{B_v=i_Kq$Ncaj__G=F8J@mo`n7a?OzBxSi35$)re%VX(>Tt2;A2Dh7b`u zzUX)RWI+Q$I+#)Q0#Vy_>0u7C6xo7Z+M-HUwklNmE7z@I?-t~z*z z_nAL@+S&ZM!*?mU55ebtZSJN^=9kPbi?hZR4faG|kG^h&HB4=jYz8xz%=@}%FrIQk z>8ya2;FDpleux@S7lj#y(u+^SxOTOd3G?gh>+Hdf=`cKOAlVc?2`9tbrNi2Srw>t9 zQEl50gTQ3bd3Z>Sxt!ee8La;0rg@{msm{Lo;u2U1sDXXbVGGRAJ21)U>uW=;5Z@%7 zT$D_qvo8!1OdX9F{{B_Lw~@xoW(cU{-GZa=vADmV~?JGmFWihzg3Ry*sEF_H<{IGvR4-R1K` zY2+23ABu#&{-JwP%QHJUy@|@n*7J755G<9SQI=g1Au&J&&=l1u)GqTGurfdZWg(1` z&TQ29;;ZbHop#75TN4zz&AJQ5@7k_EG;CDRj&fl+34%f#mKUH@j^$U@8cao$FDgMy z0kE{?+2}mK{UH0ERU*LJld5Eg8EHwp)s=_~U^tg;F^K3{$Es1Tz!~*=k^#%vc|)O5 zH0K*PRDy}$f$9KT1p%(v1`49?kWj=$=!qtg>I=KDCpD)%pN@nT90Vz!atu)*5P7I9 zjxyibq1_g7o|RxaEQ??6aCj6FhCQi@{!LsItjw*N{R9P84hPTKdFH=&OH;kM?SJcL PpZRnC>^D5_FIWB-g-=LS literal 0 HcmV?d00001 From 8f25350d640bab8f08bbdb6965550affbeb759be Mon Sep 17 00:00:00 2001 From: it09 Date: Wed, 17 Dec 2025 20:41:01 +0000 Subject: [PATCH 02/12] fixing spelling --- ecosystem/staking/overview.mdx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index a30f32d44..0728443cf 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -5,11 +5,11 @@ sidebarTitle: "Overview" import { Aside } from '/snippets/aside.jsx'; -Staking in TON enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different usecases and operational models. This guide covers the available staking contracts and guidance on how to choose the right approach. +Staking in TON enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different use cases and operational models. This guide covers the available staking contracts and guidance on how to choose the right approach. Staking helps secure the network through Proof-of-Stake (PoS) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. -## Overview of Stakign solutions +## Overview of Staking solutions The following smart contracts are commonly used in the TON ecosystem: @@ -38,7 +38,7 @@ The following smart contracts are commonly used in the TON ecosystem: - +
[Nominator pool](https://github.com/ton-blockchain/nominator-pool) Small group of nominators delegating to one validatorHas significan limitations; generally not recommendedHas significant limitations; generally not recommended
@@ -47,7 +47,7 @@ The following smart contracts are commonly used in the TON ecosystem: type="caution" title="Stake requirements" > - Technical minimum stake required to participate in valiation is 300,000 TON. However, validators compete for 400 slots in each validation round. As a result, in practice the actual minimum stake is typically higher: \~700,000 TON. + Technical minimum stake required to participate in validation is 300,000 TON. However, validators compete for 400 slots in each validation round. As a result, in practice the actual minimum stake is typically higher: \~700,000 TON. Current validator stakes can be viewed on [tonscan.org/validators](https://tonscan.org/validators). Scroll to the bottom of the list to see the validator with the lowest stake included in the current round. @@ -81,7 +81,7 @@ The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-c #### Recommended use - Staking providers serving retail users. -- Projects building liquid staking products or yeild-bearing tokens. +- Projects building liquid staking products or yield-bearing tokens. - Operators who do not have significant personal funds but want to run a staking business. **Staking Providers** @@ -121,7 +121,7 @@ Tonstakers also offers automated compounding and decentralized validation. - Separates cold wallet (owner) from hot wallet (validator) to prevent theft if validator node is compromised - Reduced complexity compared to multi-nominator pools, making it secure and easy to audit - Owner can recover stakes even in extreme scenarios like Elector contract upgrades -- Any modification would require a professional audit, which is contrly and time-consuming; therefore, the contract remains intentionally unchanged. +- Any modification would require a professional audit, which is costly and time-consuming; therefore, the contract remains intentionally unchanged. #### Recommended use - Large holders with the own funds. @@ -161,7 +161,7 @@ Tonstakers also offers automated compounding and decentralized validation. ### Nominator pools -[Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safery concerns. +[Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safety concerns. #### Limitations - Only the owner can withdraw funds from the pool. @@ -171,7 +171,7 @@ Tonstakers also offers automated compounding and decentralized validation. #### Notes - The contract is not deprecated, but in practice it is rarely appropriate today. -- For large holders, single-nominator is strongly preffered. +- For large holders, single-nominator is strongly preferred. - Not recommended for new staking services. **How it works:** @@ -279,12 +279,12 @@ Tonstakers also offers automated compounding and decentralized validation. ### Recommendations on staking solutions **Large holders stacking only their own funds** - Use a single nominator for direct self-staking, or -- Stake via a reputable thirt-party staking provider +- Stake via a reputable third-party staking provider **Operators intending to run staking services for others** - Use liquid staking contracts, which appropriate when accepting deposits from retail users or when building DeFi-compatible staking token. -**Small holers** +**Small holders** - Use a third-party staking service rather than running contracts directly. The following recommendations may also be mapped in the Cartesian plan below, with the horizontal axis representing legal restrictions and setup difficulties, and the vertical axis representing the operational model. From fe9f7af810ed4e3c066f7e1955229d318edf9d4a Mon Sep 17 00:00:00 2001 From: it09 Date: Wed, 17 Dec 2025 21:02:57 +0000 Subject: [PATCH 03/12] fixing more --- ecosystem/staking/overview.mdx | 27 ++++++++++++++---- .../images/staking-cartesian.png | Bin 2 files changed, 22 insertions(+), 5 deletions(-) rename snippets/staking-cartesian.jpg => resources/images/staking-cartesian.png (100%) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 0728443cf..9e03db7c1 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -9,8 +9,10 @@ Staking in TON enables earning rewards by locking Toncoin to support network sec Staking helps secure the network through Proof-of-Stake (PoS) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. -## Overview of Staking solutions +## Overview of staking solutions + The following smart contracts are commonly used in the TON ecosystem: + @@ -19,22 +21,26 @@ The following smart contracts are commonly used in the TON ecosystem: + + + + @@ -57,12 +63,14 @@ The following smart contracts are commonly used in the TON ecosystem: Classic staking involves running a validator node directly using [MyTonCtrl](/ecosystem/node/setup-mytonctrl) tool. This method provides full control over validation without using intermediate contracts, but it requires technical expertise to set up and maintain validator. #### Key characteristics -- Requires running and maintaining your own validator node. -- Requires a large minimum stake (technical minimum is ~300,000 TON, actual threshold depends on network conditions). + +- Requires users to run and maintain their own validator node. +- Requires a large minimum stake (technical minimum is \~300,000 TON, actual threshold depends on network conditions). - Offers direct participation in consensus and reward generation. - Provides the highest level of autonomy and control over the staking process. #### Recommended use + - Validators who want full control and have the infrastructure and technical expertise to run a node. - Users comfortable with operational responsibility and network maintenance. @@ -71,6 +79,7 @@ Classic staking involves running a validator node directly using [MyTonCtrl](/ec The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract) enables staking services to issue liquid staking tokens (LSTs) representing underlying staking position. LSTs can be used in DeFi while the underlying TON earns rewards. #### Key characteristics + - Users deposit TON and receive wrapped tokens (e.g. tsTON) that can be used in DeFi. - Liquidity remains accessible even when underlying funds are staked. - Flexible staker-validator connections without central pools @@ -80,6 +89,7 @@ The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-c - Diversification: Easy fund spreading across validators #### Recommended use + - Staking providers serving retail users. - Projects building liquid staking products or yield-bearing tokens. - Operators who do not have significant personal funds but want to run a staking business. @@ -117,6 +127,7 @@ Tonstakers also offers automated compounding and decentralized validation. **Key features:** + - Supports a single nominator only. - Separates cold wallet (owner) from hot wallet (validator) to prevent theft if validator node is compromised - Reduced complexity compared to multi-nominator pools, making it secure and easy to audit @@ -124,6 +135,7 @@ Tonstakers also offers automated compounding and decentralized validation. - Any modification would require a professional audit, which is costly and time-consuming; therefore, the contract remains intentionally unchanged. #### Recommended use + - Large holders with the own funds. - Validator wishing to separate fund custody from node operation. @@ -164,12 +176,14 @@ Tonstakers also offers automated compounding and decentralized validation. [Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safety concerns. #### Limitations + - Only the owner can withdraw funds from the pool. -- Supports up to ~40 nominators, which is not suitable for large pools. +- Supports up to \~40 nominators, which is not suitable for large pools. - Not designed for small deposits or retail participation. - If an incorrect message is sent to the pool, the funds get locked. #### Notes + - The contract is not deprecated, but in practice it is rarely appropriate today. - For large holders, single-nominator is strongly preferred. - Not recommended for new staking services. @@ -277,20 +291,23 @@ Tonstakers also offers automated compounding and decentralized validation. - [TON Whales nominator pool contracts](https://github.com/tonwhales/ton-nominators) ### Recommendations on staking solutions + **Large holders stacking only their own funds** + - Use a single nominator for direct self-staking, or - Stake via a reputable third-party staking provider **Operators intending to run staking services for others** + - Use liquid staking contracts, which appropriate when accepting deposits from retail users or when building DeFi-compatible staking token. **Small holders** + - Use a third-party staking service rather than running contracts directly. The following recommendations may also be mapped in the Cartesian plan below, with the horizontal axis representing legal restrictions and setup difficulties, and the vertical axis representing the operational model. ![Recommendations](/snippets/staking-cartesian.jpg) - ### Combining staking with DeFi Staking can be combined with various DeFi strategies to maximize returns and unlock additional value from staked assets. diff --git a/snippets/staking-cartesian.jpg b/resources/images/staking-cartesian.png similarity index 100% rename from snippets/staking-cartesian.jpg rename to resources/images/staking-cartesian.png From 72c3fcbff65ae99167260c96944ff069b55ec19f Mon Sep 17 00:00:00 2001 From: it09 Date: Wed, 17 Dec 2025 21:10:39 +0000 Subject: [PATCH 04/12] fix link rot --- ecosystem/staking/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 9e03db7c1..38330131e 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -306,7 +306,7 @@ Tonstakers also offers automated compounding and decentralized validation. - Use a third-party staking service rather than running contracts directly. The following recommendations may also be mapped in the Cartesian plan below, with the horizontal axis representing legal restrictions and setup difficulties, and the vertical axis representing the operational model. -![Recommendations](/snippets/staking-cartesian.jpg) +![Recommendations](/resources/images/staking-cartesian.png) ### Combining staking with DeFi From 25815245637659ec867d7b1fbeb64e7684b4b033 Mon Sep 17 00:00:00 2001 From: it09 Date: Thu, 18 Dec 2025 21:00:33 +0000 Subject: [PATCH 05/12] fix --- ecosystem/staking/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 38330131e..fbe925dc1 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -180,7 +180,7 @@ Tonstakers also offers automated compounding and decentralized validation. - Only the owner can withdraw funds from the pool. - Supports up to \~40 nominators, which is not suitable for large pools. - Not designed for small deposits or retail participation. -- If an incorrect message is sent to the pool, the funds get locked. +- If a message without a bounce flag is sent to the pool than it may lock the funds. #### Notes From 8cc11516184f56aedf5c4446267a312cdaea457f Mon Sep 17 00:00:00 2001 From: it09 Date: Tue, 23 Dec 2025 19:17:43 +0000 Subject: [PATCH 06/12] separate page for single nominator --- ecosystem/staking/overview.mdx | 36 +----------------------- ecosystem/staking/single_nominator.mdx | 38 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 35 deletions(-) create mode 100644 ecosystem/staking/single_nominator.mdx diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index fbe925dc1..1b30e3cc9 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -107,13 +107,11 @@ The list below contains third-party staking providers who use liquidity pool for Tonstakers also offers automated compounding and decentralized validation. - ### Single nominator @@ -139,38 +137,6 @@ Tonstakers also offers automated compounding and decentralized validation. - Large holders with the own funds. - Validator wishing to separate fund custody from node operation. -**How it works:** - -1. Owner (cold wallet) holds staking funds securely offline -1. Owner deposits funds into single nominator pool contract -1. Validator (hot wallet on node) instructs contract to participate in validation cycles -1. Contract sends stake to Elector for validation -1. After cycle completion, validator instructs contract to recover stake -1. Owner can withdraw funds at any time (only owner can withdraw) - -**Security benefits:** - -- Validator's hot wallet cannot steal funds — only owner can withdraw -- If validator is compromised, owner can change validator address immediately -- Owner can send raw messages to recover stakes in emergency situations -- Owner can upgrade contract code in extreme emergencies - -**Setup for validators:** - -- [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) - -**Instruction for nominator:** - -- Send an **empty message** to the single nominator pool contract with TON to deposit -- Send a message of 1 TON to the single nominator pool contract with text comment `"w"` (withdraw) to withdraw -- That's it - -**Reward and penalty tracking:** - -- Separate API tools are typically not needed for single nominator tracking, since validator and nominator are usually the same person (as originally designed) -- If validator and staking are handled by different parties, calculate exact income, all penalties (which should be charged to validator since penalties are due to their hardware/honesty issues), and fees -- For such cases, API is not yet available from TON Center, similar to [nominator pools API](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) - ### Nominator pools [Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safety concerns. diff --git a/ecosystem/staking/single_nominator.mdx b/ecosystem/staking/single_nominator.mdx new file mode 100644 index 000000000..871a560b5 --- /dev/null +++ b/ecosystem/staking/single_nominator.mdx @@ -0,0 +1,38 @@ +### Single nominator +--- +title: "Single Nominator Contract" +sidebarTitle: "Single Nominator Contract" +--- + +**How it works** + +1. The owner (cold wallet) securely holds staking funds offline. +1. The owner deposits funds into the Single Nominator pool contract. +1. Validator (hot wallet on node) instructs contract to participate in validation cycles. +1. Contract transfers the stake to the Elector for validation. +1. After the validation cycle completes, the validator instructs contract to recover the stake. +1. Owner can withdraw funds at any time (withdrawals are restricted to the only owner only) + +**Security properties** + +- The validator's hot wallet cannot withdraw or steal funds. +- If the validator is compromised, the owner can immediately update the validator address. +- The owner can send raw messages to recover the stake in emergency situations. +- In extreme cases, the owner can upgrade the contract code. + +**Validator setup ** + +- See: [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) + +**Nominator instructions** + +- To deposit, send an **empty message** with TON to the Single Nominator pool contract. +- To withdraw, send a message with 1 TON and the text comment `"w"` (withdraw) to the contract. + +**Reward and penalty tracking:** + +- Separate APIs are typically unnecessary, as the validator and nominator are usually the same entity (the original design assumption). +- If validation and staking are managed by different parties, rewards, penalties and fees must be calculated explicitly. + - Penalties should be attributed to the validator, as they result from operational or hardware issues. +- At present, TON Center does not provide a dedicated API for Single Nominator pools. + - This is similar to the limitations described for the [nominator pools API](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method). From 579d35db1f998a005ef983e86e2682dcc82aaa71 Mon Sep 17 00:00:00 2001 From: it09 Date: Tue, 23 Dec 2025 19:21:46 +0000 Subject: [PATCH 07/12] fixing errors --- docs.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs.json b/docs.json index d19ffb316..8e8504c74 100644 --- a/docs.json +++ b/docs.json @@ -232,7 +232,10 @@ }, { "group": "Staking", - "pages": ["ecosystem/staking/overview"] + "pages": [ + "ecosystem/staking/overview", + "ecosystem/staking/single_nominator" + ] }, "ecosystem/analytics" ] From dc43d61392c2f9520e833c836a5c3703aac836a8 Mon Sep 17 00:00:00 2001 From: it09 Date: Tue, 23 Dec 2025 21:23:29 +0000 Subject: [PATCH 08/12] fmt --- ecosystem/staking/overview.mdx | 6 +++--- ecosystem/staking/single_nominator.mdx | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 1b30e3cc9..c3a5ea411 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -109,9 +109,9 @@ Tonstakers also offers automated compounding and decentralized validation. All validators participating in these third-party protocols use MyTonCtrl for validation. For validator setup instructions, see: - - [Tonstakers setup](/ecosystem/node/mytonctrl/liquid-staking) - - [Nominator pool setup](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) - - [Single nominator pool setup](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) +- [Tonstakers setup](/ecosystem/node/mytonctrl/liquid-staking) +- [Nominator pool setup](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) +- [Single nominator pool setup](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) ### Single nominator diff --git a/ecosystem/staking/single_nominator.mdx b/ecosystem/staking/single_nominator.mdx index 871a560b5..4a18d0b95 100644 --- a/ecosystem/staking/single_nominator.mdx +++ b/ecosystem/staking/single_nominator.mdx @@ -1,8 +1,10 @@ ### Single nominator + --- + title: "Single Nominator Contract" sidebarTitle: "Single Nominator Contract" ---- +----------------------------------------- **How it works** @@ -20,7 +22,7 @@ sidebarTitle: "Single Nominator Contract" - The owner can send raw messages to recover the stake in emergency situations. - In extreme cases, the owner can upgrade the contract code. -**Validator setup ** +\*\*Validator setup \*\* - See: [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) From 70bb19096fdf3c3f702bc5bb67741ecf7a2b5451 Mon Sep 17 00:00:00 2001 From: it09 Date: Tue, 23 Dec 2025 22:00:13 +0000 Subject: [PATCH 09/12] splitting files --- docs.json | 4 +- ecosystem/staking/nominator_pools.mdx | 79 +++++++++++++++++++ ecosystem/staking/overview.mdx | 102 ++----------------------- ecosystem/staking/single_nominator.mdx | 15 ++-- ecosystem/staking/ton_whales.mdx | 40 ++++++++++ 5 files changed, 134 insertions(+), 106 deletions(-) create mode 100644 ecosystem/staking/nominator_pools.mdx create mode 100644 ecosystem/staking/ton_whales.mdx diff --git a/docs.json b/docs.json index 8e8504c74..400d39f25 100644 --- a/docs.json +++ b/docs.json @@ -234,7 +234,9 @@ "group": "Staking", "pages": [ "ecosystem/staking/overview", - "ecosystem/staking/single_nominator" + "ecosystem/staking/single_nominator", + "ecosystem/staking/nominator_pools", + "ecosystem/staking/ton_whales" ] }, "ecosystem/analytics" diff --git a/ecosystem/staking/nominator_pools.mdx b/ecosystem/staking/nominator_pools.mdx new file mode 100644 index 000000000..bd083ceca --- /dev/null +++ b/ecosystem/staking/nominator_pools.mdx @@ -0,0 +1,79 @@ +--- +title: "Nominator Pools Contract" +sidebarTitle: "Nominator Pools Contract" +--- + +## Nominator pools: Architecture and Flow + +### Overview + +Nominator pools allow multiple nominators to delegate their stake to a validator without running validator infrastructure themselves. Funds from nominators are combined with the validator’s own stake and used for network validation. Rewards and penalties are handled by the pool contract according to predefined rules. + +### How It Works + +- Nominators deposit funds into a pool managed by a validator +- The validator stakes the combined funds (validator's own + nominators') for validation. +- Rewards are distributed proportionally: + - The validator receives a commission defined by `validator_reward_share`. + - The remaining rewards go to nominators based on their stake size. +- If the validator is penalized: + - The penalty is first deducted from validator's balance. + - If the validator balance is insufficient, losses are deducted proportionally among nominators. +- The validator must maintain enough balance to cover maximum possible penalties. + +### Key Parameters + +- Minimum nominator stake: 10,000 TON (recommended) +- Maximum nominators per pool: 40 +- Operational costs: \~5 TON per validation round (paid by the validator) +- Withdrawals: Full withdrawal only (partial withdrawals are not supported) +- Governance: Nominators can participate in network configuration voting + +### When to use Nominator Pools + +Nominator pools are suitable if you want to: + +- Stake below than the validator minimum (300,000 TON) +- Delegate stake to a trusted validators without running infrastructure +- Participate in network governance +- Use simple staking model without liquidity tokens or DeFi participation + +### How to stake + +1. Choose a pool on [TON Nominators](https://tonvalidators.org/) and review its parameters, commission, and minimum stake +1. Send a message to the nominator pool contract with + - The desired TON amount + - Text comment `"d"` (deposit) +1. The sent amount must be at least `min_nominator_stake + 1 TON` (1 TON is deducted as deposit fee) +1. If the pool is not currently validating, the deposit is credited immediately, otherwise, it's added to pending deposits + +### How to withdraw + +1. Send a message to the nominator pool contract with: + - Text comment `"w"` (withdraw) + - \~1 TON for network fees +1. If the pool has sufficient balance, the withdrawal is processed immediately. +1. If not, a withdrawal request is created and processed later. +1. Only full withdrawal is supported. + +### How to Vote + +1. Find the proposal hash posted in [`@tonblockchain`](https://t.me/tonblockchain) or [`@tonstatus`](https://t.me/tonstatus) +1. Send a message with comment `"y"` to vote for, or `"n"` to vote against (e.g., `"yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47"`) +1. Attach \~1 TON for network fees. + +\### Reward Calculation + +Reward data can be obtained using the [TON Center Nominator Pools API](https://toncenter.com/api/smc-index/) : + +- [getPoolBookings](/ecosystem/api/toncenter/smc-index/get-pool-bookings-method) — get all the bookings (debits and credits) in specified pool +- [getNominatorBookings](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) — get nominator bookings (debits and credits) in specified pool +- [getNominatorEarnings](/ecosystem/api/toncenter/smc-index/get-nominator-earnings-method) — get nominator income in specified pool with his stake on each timepoint +- [getNominator](/ecosystem/api/toncenter/smc-index/get-nominator-method) — get nominator's balances in all pools where he participates +- [getPool](/ecosystem/api/toncenter/smc-index/get-pool-method) — get pool data with all its nominators + +### Validator Setup + +- Use [MyTonCtrl nominator pools](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) for standard multi-nominator operation +- Pools can technically be configured with a minimum stake of 100 TON, but 10,000 TON is the tested and recommended value +- Validators can deploy pools manually using the [nominator pool contract](https://github.com/ton-blockchain/nominator-pool) without MyTonCtrl. diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index c3a5ea411..949e701c8 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -154,107 +154,15 @@ All validators participating in these third-party protocols use MyTonCtrl for va - For large holders, single-nominator is strongly preferred. - Not recommended for new staking services. -**How it works:** - -- Nominators deposit funds into a pool managed by a validator -- The validator uses combined funds (validator's own + nominators') for validation -- Rewards are distributed proportionally: validator receives a share (set by `validator_reward_share`), remaining rewards go to nominators based on their stake size -- If validator performs poorly and gets fined, the fine is deducted from validator's balance first; if insufficient, losses are deducted from nominators proportionally -- Validator must maintain sufficient funds to cover maximum possible fines - -**Key parameters:** - -- Minimum nominator stake: 10,000 TON (recommended configuration) -- Maximum nominators per pool: 40 -- Operational costs: \~5 TON per validation round (paid by validator) -- Partial withdrawals: Not supported — only full withdrawal available -- Voting: Nominators can vote on network configuration proposals - -**When to use:** - -- Staking below validator minimum (300,000 TON) -- Delegating to trusted validators without running infrastructure -- Participating in network governance through voting -- Simple staking without liquidity tokens or DeFi participation - -**How to stake:** - -1. Find a suitable pool on [TON Nominators](https://tonvalidators.org/) — check pool parameters, validator commission, and minimum stake requirements -1. Send a message to the nominator pool contract with TON and text comment `"d"` (deposit) -1. Amount must be ≥ `min_nominator_stake + 1 TON` (1 TON is deducted as deposit fee) -1. If pool is not validating, deposit is credited immediately; otherwise, it's added to pending deposits - -**How to withdraw:** - -1. Send a message to the nominator pool contract with text comment `"w"` (withdraw) and \~1 TON for network fee -1. If pool has sufficient balance, withdrawal is immediate; otherwise, a withdrawal request is created -1. Only full withdrawal is supported — partial withdrawals are not available - -**How to vote:** - -1. Find the proposal hash posted in [`@tonblockchain`](https://t.me/tonblockchain) or [`@tonstatus`](https://t.me/tonstatus) -1. Send a message with comment `"y"` to vote for, or `"n"` to vote against (e.g., `"yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47"`) -1. Attach \~1 TON for network fee - -**Reward calculation:** - -- Use [TON Center Nominator Pools API](https://toncenter.com/api/smc-index/) to calculate nominator rewards for each round of validation -- Available API methods: - - [getPoolBookings](/ecosystem/api/toncenter/smc-index/get-pool-bookings-method) — get all the bookings (debits and credits) in specified pool - - [getNominatorBookings](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) — get nominator bookings (debits and credits) in specified pool - - [getNominatorEarnings](/ecosystem/api/toncenter/smc-index/get-nominator-earnings-method) — get nominator income in specified pool with his stake on each timepoint - - [getNominator](/ecosystem/api/toncenter/smc-index/get-nominator-method) — get nominator's balances in all pools where he participates - - [getPool](/ecosystem/api/toncenter/smc-index/get-pool-method) — get pool data with all its nominators - -**Setup for validators:** - -- [MyTonCtrl nominator pools](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) — standard pools with multiple nominators -- Nominator pools can be configured with minimum stake of 100 TON (not recommended — 10,000 TON is the tested and recommended configuration) -- Use [nominator pool contract](https://github.com/ton-blockchain/nominator-pool) to deploy a pool without MyTonCtrl - ### TON Whales nominator pools -[TON Whales](https://tonwhales.com/staking) is a nominator pool service built on custom smart contracts by the TON Whales team. It provides the same core functionality as standard nominator pools but with different implementation and lower entry threshold. - -**Key differences from standard nominator pools:** - -- Lower minimum stake: 50 TON (vs 10,000 TON in standard pools) -- Custom contract architecture: Uses separate Owner, Controller, Proxy, and Pool contracts -- Fee structure: Deposit and withdrawal fees vary by pool (check pool information before staking) - -**Creating a pool:** - -- Whales contracts allow creating pools with minimum stake as low as 1 TON (not recommended) - -**How it works:** - -- Nominators deposit funds into Whales pools managed by validators -- Rewards are distributed proportionally minus validator commission -- Validator covers operational costs and is responsible for validation quality -- Funds are secured by smart contracts, but validators control pool operations - -**When to use:** - -- Small to medium stakes (50+ TON) -- Simple staking without technical knowledge -- No validator setup required - -**How to stake:** - -1. Use [TON Whales staking website](https://tonwhales.com/staking) to find a suitable pool and stake -1. Alternatively, send a message to any Whales-type nominator pool contract with TON and text comment `"Stake"` (capitalization is important) -1. Amount must be `desired_stake + deposit_fee` (check pool for current deposit fee) - -**How to withdraw:** - -1. Send a message with text comment `"Withdraw"` (capitalization is important) and `withdraw_fee` (check pool for current fee) -1. Withdrawal is a two-step process: first request, then withdraw when solidified -1. Sometimes withdrawal can be immediate if pool has sufficient balance +[TON Whales](https://tonwhales.com/staking) is a nominator pool service built using custom smart contracts developed by the TON Whales team. It provides the same core functionality as standard nominator pools, with different contract architecture and significantly lower entry threshold. -**See also:** +### Differences from standard nominator pools -- [TON Whales staking](https://tonwhales.com/staking) -- [TON Whales nominator pool contracts](https://github.com/tonwhales/ton-nominators) +- Lower minimum stake: 50 TON (compared to 10,000 TON in standard pools) +- Custom contract architecture: Separate Owner, Controller, Proxy, and Pool contracts +- Fee model: Deposit and withdrawal fees vary by pool (check pool details before staking) ### Recommendations on staking solutions diff --git a/ecosystem/staking/single_nominator.mdx b/ecosystem/staking/single_nominator.mdx index 4a18d0b95..2e7e5629f 100644 --- a/ecosystem/staking/single_nominator.mdx +++ b/ecosystem/staking/single_nominator.mdx @@ -1,12 +1,11 @@ -### Single nominator - --- - title: "Single Nominator Contract" sidebarTitle: "Single Nominator Contract" ------------------------------------------ +--- + +## Single nominator: Architecture and Flow -**How it works** +### How it works 1. The owner (cold wallet) securely holds staking funds offline. 1. The owner deposits funds into the Single Nominator pool contract. @@ -15,7 +14,7 @@ sidebarTitle: "Single Nominator Contract" 1. After the validation cycle completes, the validator instructs contract to recover the stake. 1. Owner can withdraw funds at any time (withdrawals are restricted to the only owner only) -**Security properties** +### Security properties - The validator's hot wallet cannot withdraw or steal funds. - If the validator is compromised, the owner can immediately update the validator address. @@ -26,12 +25,12 @@ sidebarTitle: "Single Nominator Contract" - See: [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) -**Nominator instructions** +### Nominator instructions - To deposit, send an **empty message** with TON to the Single Nominator pool contract. - To withdraw, send a message with 1 TON and the text comment `"w"` (withdraw) to the contract. -**Reward and penalty tracking:** +### Reward and penalty tracking - Separate APIs are typically unnecessary, as the validator and nominator are usually the same entity (the original design assumption). - If validation and staking are managed by different parties, rewards, penalties and fees must be calculated explicitly. diff --git a/ecosystem/staking/ton_whales.mdx b/ecosystem/staking/ton_whales.mdx new file mode 100644 index 000000000..f2adad3a6 --- /dev/null +++ b/ecosystem/staking/ton_whales.mdx @@ -0,0 +1,40 @@ +--- +title: "TON Whales Nominator Pools" +sidebarTitle: "TON Whales Nominator Pools" +--- + +## TON Whales nominator pools + +### Pool creation + +- Whales contracts allow pool creating with a minimum stake as low as 1 TON (not recommended) + +### How it works + +- Nominators deposit funds into Whales pools managed by validators +- Rewards are distributed proportionally minus validator commission +- Validator covers operational costs and is responsible for validation quality +- Funds are secured by smart contracts, but validators control pool operations + +### When to use + +- Small to medium stakes (50+ TON) +- Staking without validator setup or technical knowledge +- Users seeking a simple staking experience + +### How to stake + +1. Use the [TON Whales staking website](https://tonwhales.com/staking) to find a suitable pool and stake +1. Alternatively, send a message with TON and text comment `"Stake"` (case-sensitive) to a Whales-type nominator pool contract +1. The transferred amount must be equal `stake_amount + deposit_fee` (refer to pool details for the current fee) + +### How to withdraw + +1. Send a message with text comment `"Withdraw"` (case-sensitive) and include the required `withdraw_fee` +1. Withdrawals follow a two-step process: request first, then finalize after the funds are finalized +1. In some cases, withdrawals may be processed immediate if the pool has sufficient available balance + +**See also:** + +- [TON Whales staking](https://tonwhales.com/staking) +- [TON Whales nominator pool contracts](https://github.com/tonwhales/ton-nominators) From 49e0283b2d6ea86864fa6ed4a81928c19c351871 Mon Sep 17 00:00:00 2001 From: aigerimu <89766357+aigerimu@users.noreply.github.com> Date: Tue, 13 Jan 2026 15:01:42 +0700 Subject: [PATCH 10/12] check --- ecosystem/staking/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index 949e701c8..fd055f75f 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -7,7 +7,7 @@ import { Aside } from '/snippets/aside.jsx'; Staking in TON enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different use cases and operational models. This guide covers the available staking contracts and guidance on how to choose the right approach. -Staking helps secure the network through Proof-of-Stake (PoS) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. +Staking helps secure the network through [proof-of-stake](https://en.wikipedia.org/wiki/Proof_of_stake) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. ## Overview of staking solutions From f34c8387855b9257e3498dd3f6de770b38e70eed Mon Sep 17 00:00:00 2001 From: aigerimu <89766357+aigerimu@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:33:28 +0700 Subject: [PATCH 11/12] / --- ecosystem/staking/nominator_pools.mdx | 103 +++++---- ecosystem/staking/overview.mdx | 213 +++++++++---------- ecosystem/staking/single_nominator.mdx | 44 ++-- ecosystem/staking/ton_whales.mdx | 46 ++-- resources/images/staking-cartesian-dark.svg | 1 + resources/images/staking-cartesian-light.svg | 1 + resources/images/staking-cartesian.png | Bin 92333 -> 0 bytes 7 files changed, 190 insertions(+), 218 deletions(-) create mode 100644 resources/images/staking-cartesian-dark.svg create mode 100644 resources/images/staking-cartesian-light.svg delete mode 100644 resources/images/staking-cartesian.png diff --git a/ecosystem/staking/nominator_pools.mdx b/ecosystem/staking/nominator_pools.mdx index bd083ceca..c0603e9d5 100644 --- a/ecosystem/staking/nominator_pools.mdx +++ b/ecosystem/staking/nominator_pools.mdx @@ -1,79 +1,76 @@ --- -title: "Nominator Pools Contract" -sidebarTitle: "Nominator Pools Contract" +title: "Nominator pool contracts" +sidebarTitle: "Nominator pools" --- -## Nominator pools: Architecture and Flow +[Nominator pool contracts](https://github.com/ton-blockchain/nominator-pool) allow multiple nominators to delegate their stake to a validator without running validator infrastructure themselves. Funds from nominators are combined with the validator's own stake and used for network validation. The pool contract handles rewards and penalties according to predefined rules. -### Overview +## Key parameters -Nominator pools allow multiple nominators to delegate their stake to a validator without running validator infrastructure themselves. Funds from nominators are combined with the validator’s own stake and used for network validation. Rewards and penalties are handled by the pool contract according to predefined rules. +- Minimum nominator stake: 10,000 TON, recommended. +- Maximum nominators per pool: 40. +- Operational costs: approximately 5 TON per validation round, paid by the validator. +- Withdrawals: full withdrawal only; partial withdrawals are not supported. +- Governance: nominators can participate in network configuration voting. -### How It Works +## When to use -- Nominators deposit funds into a pool managed by a validator -- The validator stakes the combined funds (validator's own + nominators') for validation. -- Rewards are distributed proportionally: - - The validator receives a commission defined by `validator_reward_share`. - - The remaining rewards go to nominators based on their stake size. -- If the validator is penalized: - - The penalty is first deducted from validator's balance. - - If the validator balance is insufficient, losses are deducted proportionally among nominators. -- The validator must maintain enough balance to cover maximum possible penalties. +Nominator pools are suitable for: -### Key Parameters +- Staking below the validator minimum of 300,000 TON. +- Delegating stake to trusted validators without running infrastructure. +- Participating in network governance. +- Using a simple staking model without liquidity tokens or DeFi participation. -- Minimum nominator stake: 10,000 TON (recommended) -- Maximum nominators per pool: 40 -- Operational costs: \~5 TON per validation round (paid by the validator) -- Withdrawals: Full withdrawal only (partial withdrawals are not supported) -- Governance: Nominators can participate in network configuration voting +## How it works -### When to use Nominator Pools +1. Nominators deposit funds into a pool managed by a validator. +1. The validator stakes the combined funds, including the validator's own and nominators' stakes, for validation. +1. Rewards are distributed proportionally: + - The validator receives a commission defined by `validator_reward_share`. + - The remaining rewards are distributed to nominators based on their stake size. +1. If the validator is penalized: + - The penalty is first deducted from the validator's balance. + - If the validator balance is insufficient, losses are deducted proportionally from nominators. +1. The validator must maintain enough balance to cover the maximum possible penalties. -Nominator pools are suitable if you want to: +## How to stake -- Stake below than the validator minimum (300,000 TON) -- Delegate stake to a trusted validators without running infrastructure -- Participate in network governance -- Use simple staking model without liquidity tokens or DeFi participation - -### How to stake - -1. Choose a pool on [TON Nominators](https://tonvalidators.org/) and review its parameters, commission, and minimum stake -1. Send a message to the nominator pool contract with - - The desired TON amount - - Text comment `"d"` (deposit) -1. The sent amount must be at least `min_nominator_stake + 1 TON` (1 TON is deducted as deposit fee) -1. If the pool is not currently validating, the deposit is credited immediately, otherwise, it's added to pending deposits +1. Choose a pool on [TON Nominators](https://tonvalidators.org/) and review its parameters, commission, and minimum stake. +1. Send a message to the nominator pool contract with: + - The desired TON amount. + - The text comment "d" for deposit. +1. The sent amount must be at least `min_nominator_stake + 1 TON`, whire 1 TON is deducted as the deposit fee. +1. If the pool is not currently validating, the deposit is credited immediately; otherwise, it is added to pending deposits. -### How to withdraw +## How to withdraw 1. Send a message to the nominator pool contract with: - - Text comment `"w"` (withdraw) - - \~1 TON for network fees + - The text comment "w" for withdraw. + - Approximately 1 TON for network fees. 1. If the pool has sufficient balance, the withdrawal is processed immediately. 1. If not, a withdrawal request is created and processed later. 1. Only full withdrawal is supported. -### How to Vote +## How to vote -1. Find the proposal hash posted in [`@tonblockchain`](https://t.me/tonblockchain) or [`@tonstatus`](https://t.me/tonstatus) -1. Send a message with comment `"y"` to vote for, or `"n"` to vote against (e.g., `"yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47"`) -1. Attach \~1 TON for network fees. +1. Find the proposal hash posted in [`@tonblockchain`](https://t.me/tonblockchain) or [`@tonstatus`](https://t.me/tonstatus). +1. Send a message with comment `"y"` to vote for or `"n"` to vote against. + - Example: "yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47". +1. Attach approximately 1 TON for network fees. -\### Reward Calculation +## Reward calculation -Reward data can be obtained using the [TON Center Nominator Pools API](https://toncenter.com/api/smc-index/) : +Reward data can be obtained using the [TON Center nominator pools API](https://toncenter.com/api/smc-index/): -- [getPoolBookings](/ecosystem/api/toncenter/smc-index/get-pool-bookings-method) — get all the bookings (debits and credits) in specified pool -- [getNominatorBookings](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) — get nominator bookings (debits and credits) in specified pool -- [getNominatorEarnings](/ecosystem/api/toncenter/smc-index/get-nominator-earnings-method) — get nominator income in specified pool with his stake on each timepoint -- [getNominator](/ecosystem/api/toncenter/smc-index/get-nominator-method) — get nominator's balances in all pools where he participates -- [getPool](/ecosystem/api/toncenter/smc-index/get-pool-method) — get pool data with all its nominators +- [getPoolBookings](/ecosystem/api/toncenter/smc-index/get-pool-bookings-method) — get all the bookings, including debits and credits, in a specified pool. +- [getNominatorBookings](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method) — get nominator bookings, including debits and credits, in a specified pool. +- [getNominatorEarnings](/ecosystem/api/toncenter/smc-index/get-nominator-earnings-method) — get nominator income in a specified pool, including stake amounts on each time point. +- [getNominator](/ecosystem/api/toncenter/smc-index/get-nominator-method) — get the nominator's balances across all pools in which the nominator participates. +- [getPool](/ecosystem/api/toncenter/smc-index/get-pool-method) — get pool data, including all nominators. -### Validator Setup +## Validator setup -- Use [MyTonCtrl nominator pools](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) for standard multi-nominator operation -- Pools can technically be configured with a minimum stake of 100 TON, but 10,000 TON is the tested and recommended value +- Use [MyTonCtrl nominator pools](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) for standard multi-nominator operation. +- Pools can technically be configured with a minimum stake of 100 TON; however, 10,000 TON is the tested and recommended value. - Validators can deploy pools manually using the [nominator pool contract](https://github.com/ton-blockchain/nominator-pool) without MyTonCtrl. diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index fd055f75f..c67238c83 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -4,108 +4,82 @@ sidebarTitle: "Overview" --- import { Aside } from '/snippets/aside.jsx'; +import { Image } from '/snippets/image.jsx'; -Staking in TON enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different use cases and operational models. This guide covers the available staking contracts and guidance on how to choose the right approach. +[Staking in TON](https://ton.org/en/stake) enables earning rewards by locking Toncoin to support network security and validation. TON supports several staking solutions, each designed for different use cases and operational models. -Staking helps secure the network through [proof-of-stake](https://en.wikipedia.org/wiki/Proof_of_stake) and enables Toncoin holders to earn rewards. Depending on technical ability, stake size and participation goals, users may choose between Classic staking, Single Nominator, Nominator Pools and Liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions are hard to setup, and currently, there are only a limited number of support tools. +Staking secures the network through [proof-of-stake](https://en.wikipedia.org/wiki/Proof_of_stake). Depending on technical ability, stake size, and participation goals, users may choose between classic staking, single nominator, nominator pools, or liquid staking. Some solutions are suitable only for technically experienced operators, while others are intended for businesses providing staking as a service. However, all solutions require non-trivial setup, and there are limited number of support tools. ## Overview of staking solutions The following smart contracts are commonly used in the TON ecosystem: -
Features
Classic staking Operators running validator nodes Full control; high technical and operational requirements
[Liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract) Staking providers servicing retail users Liquidity and DeFi integration via wrapped staking tokens
[Single-nominator](https://github.com/ton-blockchain/single-nominator) Large holders staking only their own funds Secure, mature contract-based self-staking; simple ownership model
[Nominator pool](https://github.com/ton-blockchain/nominator-pool) Small group of nominators delegating to one validator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OptionIntentionFeatures
Classic stakingOperators running validator nodesFull control; high technical and operational requirements
[Liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract)Staking providers servicing retail usersLiquidity and DeFi integration via wrapped staking tokens
[Single-nominator](https://github.com/ton-blockchain/single-nominator)Large holders staking only their own fundsSecure, mature contract-based self-staking; simple ownership model
[Nominator pool](https://github.com/ton-blockchain/nominator-pool)Small group of nominators delegating to one validatorHas significant limitations; generally not recommended
+| Option | Intention | Features | +|:---------------------------------------------------------------------------:|:------------------------------------------------------:|:------------------------------------------------------------:| +| Classic staking | Operators running validator nodes. | Full control; high technical and operational requirements. | +| [Liquid staking](https://github.com/ton-blockchain/liquid-staking-contract) | Staking providers servicing retail users. | Liquidity and DeFi integration via wrapped staking tokens. | +| [Single nominator](https://github.com/ton-blockchain/single-nominator) | Large holders staking only their own funds. | Secure, contract-based self-staking; simple ownership model. | +| [Nominator pool](https://github.com/ton-blockchain/nominator-pool) | Small group of nominators delegating to one validator. | Has significant limitations; generally not recommended. | +

-### Classic staking +## Classic staking -Classic staking involves running a validator node directly using [MyTonCtrl](/ecosystem/node/setup-mytonctrl) tool. This method provides full control over validation without using intermediate contracts, but it requires technical expertise to set up and maintain validator. +Classic staking involves [running a validator node](/ecosystem/node/mytonctrl/validator) using the [MyTonCtrl](/ecosystem/node/setup-mytonctrl) tool. This method provides full control over validation without intermediate contracts, but requires technical expertise to set up and maintain a validator. -#### Key characteristics +### Key characteristics -- Requires users to run and maintain their own validator node. -- Requires a large minimum stake (technical minimum is \~300,000 TON, actual threshold depends on network conditions). +- Requires users to run and maintain a validator node. +- Requires a large minimum stake. The technical minimum is approximately 300,000 TON; the actual threshold depends on network conditions. - Offers direct participation in consensus and reward generation. - Provides the highest level of autonomy and control over the staking process. -#### Recommended use +### Recommended use -- Validators who want full control and have the infrastructure and technical expertise to run a node. +- Validators who want full control and have the infrastructure and technical expertise. - Users comfortable with operational responsibility and network maintenance. -### Liquid staking +## Liquid staking -The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract) enables staking services to issue liquid staking tokens (LSTs) representing underlying staking position. LSTs can be used in DeFi while the underlying TON earns rewards. +The [liquid staking contract](https://github.com/ton-blockchain/liquid-staking-contract) enables staking services to issue liquid staking tokens (LSTs) that represent the underlying staking position. LSTs can be used in DeFi while the underlying TON earns rewards. -#### Key characteristics +### Key characteristics -- Users deposit TON and receive wrapped tokens (e.g. tsTON) that can be used in DeFi. +- Users deposit TON and receive wrapped tokens, e.g. tsTON, that can be used in DeFi. - Liquidity remains accessible even when underlying funds are staked. -- Flexible staker-validator connections without central pools -- Low minimum deposits for broader participation -- Some protocols allow governance influence -- Safety: Reduced slashing risks via diversification -- Diversification: Easy fund spreading across validators +- Flexible staker-validator connections without centralized pools. +- Low minimum deposits for broader participation. +- Some protocols allow governance influence. +- Reduced slashing risks using diversification. +- Easy fund spreading across validators. -#### Recommended use +### Recommended use - Staking providers serving retail users. - Projects building liquid staking products or yield-bearing tokens. -- Operators who do not have significant personal funds but want to run a staking business. +- Operators who want to run staking services without commiting significant personal funds. + +### Staking providers -**Staking Providers** -The list below contains third-party staking providers who use liquidity pool for staking: +Third-party staking providers who use liquidity pool for staking: -| Protocol | Min deposit | Liquidity | Voting | Withdrawal | Decentralized validation | -| -------------------------------------------- | ----------- | ----------- | ------ | ---------------------------- | ------------------------ | -| [Tonstakers](https://tonstakers.com) | 1 TON | Yes (tsTON) | Yes | Up to 18h (instant possible) | Yes | -| [Bemo](https://bemo.finance) | 1 TON | Yes (bmTON) | No | 36-72h cooldown | No | -| [Hipo](https://hipo.fi) | Varies | Yes (hTON) | No | Avg 30h (instant possible) | No | -| [TON Whales](https://tonwhales.com/staking) | 50 TON | **No** | No | Up to 18h | No | -| [TON Nominators](https://tonvalidators.org/) | 10,000 TON | **No** | Yes | Up to 18h | No | +| Protocol | Min deposit | Liquidity | Voting | Withdrawal | Decentralized validation | +|:--------------------------------------------:|:-----------:|:-----------:|:------:|:----------------------------:|:-------------------------:| +| [Tonstakers](https://tonstakers.com) | 1 TON | Yes (tsTON) | Yes | Up to 18h (instant possible) | Yes | +| [Bemo](https://bemo.finance) | 1 TON | Yes (bmTON) | No | 36-72h cooldown | No | +| [Hipo](https://hipo.fi) | Varies | Yes (hTON) | No | Avg 30h (instant possible) | No | +| [TON Whales](https://tonwhales.com/staking) | 50 TON | **No** | No | Up to 18h | No | +| [TON Nominators](https://tonvalidators.org/) | 10,000 TON | **No** | Yes | Up to 18h | No | -Tonstakers also offers automated compounding and decentralized validation. +Tonstakers offers automated compounding and decentralized validation. All validators participating in these third-party protocols use MyTonCtrl for validation. For validator setup instructions, see: @@ -113,95 +87,98 @@ All validators participating in these third-party protocols use MyTonCtrl for va - [Nominator pool setup](/ecosystem/node/mytonctrl/pools#nominator-pool-operations-nominator-pool-mode) - [Single nominator pool setup](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) -### Single nominator +## Single nominator pools -[Single nominator](https://github.com/ton-blockchain/single-nominator) contract is the standard solution designed for large holders who want to stake their own funds while delegating validator operations to a trusted operator. +[Single nominator pool contract](/ecosystem/staking/single_nominator) is the standard solution designed for large holders who want to stake their own funds while delegating validator operations to a trusted operator. -**Key features:** +### Key characteristics -- Supports a single nominator only. -- Separates cold wallet (owner) from hot wallet (validator) to prevent theft if validator node is compromised -- Reduced complexity compared to multi-nominator pools, making it secure and easy to audit -- Owner can recover stakes even in extreme scenarios like Elector contract upgrades +- Supports a single nominator. +- Separates the owner's cold wallet from the validator's hot wallet to prevent theft if the validator node is compromised. +- Reduced complexity compared to multi-nominator pools, making it secure and easy to audit. +- The owner can recover stakes even in extreme scenarios, such as elector contract upgrades. - Any modification would require a professional audit, which is costly and time-consuming; therefore, the contract remains intentionally unchanged. -#### Recommended use +### Recommended use -- Large holders with the own funds. -- Validator wishing to separate fund custody from node operation. +- Large holders with their own funds. +- Validators who want to separate fund custody from node operation. -### Nominator pools +## Nominator pools -[Nominator pools](https://github.com/ton-blockchain/nominator-pool) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has important limitations and safety concerns. +[Nominator pools](/ecosystem/staking/nominator_pools) are smart contracts that allow a small group of nominators to combine their funds and delegate to a validator for staking collectively. However, it has limitations and safety concerns. -#### Limitations +### Limitations - Only the owner can withdraw funds from the pool. -- Supports up to \~40 nominators, which is not suitable for large pools. +- Supports up to approximately 40 nominators, which is not suitable for large pools. - Not designed for small deposits or retail participation. -- If a message without a bounce flag is sent to the pool than it may lock the funds. +- Sending a message to the pool without a bounce flag may result in funds becoming locked. -#### Notes +### Notes -- The contract is not deprecated, but in practice it is rarely appropriate today. -- For large holders, single-nominator is strongly preferred. -- Not recommended for new staking services. +- The contract is not deprecated, but it is rarely an appropriate choice in practice. +- For large holders, the single nominator contract is preferred. +- This solution is not recommended for new staking services. -### TON Whales nominator pools +## TON Whales nominator pools -[TON Whales](https://tonwhales.com/staking) is a nominator pool service built using custom smart contracts developed by the TON Whales team. It provides the same core functionality as standard nominator pools, with different contract architecture and significantly lower entry threshold. +[TON Whales](/ecosystem/staking/ton_whales) is a nominator pool service built using custom smart contracts developed by the TON Whales team. It provides the same core functionality as standard nominator pools, with a different contract architecture and lower entry threshold. -### Differences from standard nominator pools +## Differences from standard nominator pools -- Lower minimum stake: 50 TON (compared to 10,000 TON in standard pools) -- Custom contract architecture: Separate Owner, Controller, Proxy, and Pool contracts -- Fee model: Deposit and withdrawal fees vary by pool (check pool details before staking) +- Lower minimum stake of 50 TON, compared to 10,000 TON in standard pools. +- Custom contract architecture with separate owner, controller, proxy, and pool contracts. +- Fee model where deposit and withdrawal fees vary by pool; users should check pool details before staking. -### Recommendations on staking solutions +## Recommendations for staking solutions -**Large holders stacking only their own funds** +For large holders staking only their own funds: -- Use a single nominator for direct self-staking, or -- Stake via a reputable third-party staking provider +- Use a single nominator contract for direct self-staking, or +- Stake through a reputable third-party staking provider. -**Operators intending to run staking services for others** +For operators intending to run staking services for others: -- Use liquid staking contracts, which appropriate when accepting deposits from retail users or when building DeFi-compatible staking token. +- Use liquid staking contracts, which are appropriate when accepting deposits from retail users or when building DeFi-compatible staking tokens. -**Small holders** +For small holders: - Use a third-party staking service rather than running contracts directly. -The following recommendations may also be mapped in the Cartesian plan below, with the horizontal axis representing legal restrictions and setup difficulties, and the vertical axis representing the operational model. -![Recommendations](/resources/images/staking-cartesian.png) +The following recommendations are mapped onto the Cartesian plane below. The horizontal axis represents legal restrictions and setup complexity, while the vertical axis represents the operational model. -### Combining staking with DeFi +
+ Recommendations +
-Staking can be combined with various DeFi strategies to maximize returns and unlock additional value from staked assets. +## Combining staking with DeFi -**Liquid staking strategies:** +Staking can be combined with various DeFi strategies to maximize returns and unlock additional value from staked assets. -- **Re-staking liquid tokens**: After staking TON and receiving liquid tokens (e.g., tsTON), stake these tokens again to earn additional yields. This creates a compounding effect where staking rewards are earned on both the original stake and the liquid token rewards. -- **DeFi integration**: Use liquid staking tokens in lending protocols, DEX liquidity pools, and other DeFi applications to earn multiple yield streams simultaneously. -- For detailed strategies and examples, see [Tonstakers Earn](https://tonstakers.com/) which covers leveraged staking, collateral staking, and DEX liquidity provision. +### Liquid staking strategies -**Vesting contracts with staking:** +- Re-stake liquid tokens. After staking TON and receiving liquid tokens such as tsTON, these tokens can be staked again to earn additional staking rewards. This creates a compounding effect, as rewards are earned on both the original stake and the liquid tokens. +- DeFi integration. Use liquid staking tokens in lending protocols, DEX liquidity pools, and other DeFi applications. +- Practical examples of leveraged staking, collateral staking, and DEX liquidity provision are available in the [Tonstakers Earn](https://app.tonstakers.com/earn). -- **Locked token purchases**: When buying tokens with a lock period via vesting contracts, buyers receive locked tokens that can be staked to participate in validation and earn rewards while they remain locked. -- This approach allows token buyers to generate income from locked assets during the vesting period, making locked token purchases more attractive while providing additional revenue streams. -- Setup instructions: See [Vesting contracts staking options](/standard/vesting#staking-options) for detailed configuration steps. +### Vesting contracts with staking -### See also +Tokens acquired through [vesting contracts](/standard/vesting) remain locked for a defined period but can be staked during vesting. This allows token holders to participate in validation and earn staking rewards while the tokens remain locked. -- [Staking links on ton.org](https://ton.org/en/stake) -- [MyTonCtrl validator guide](/ecosystem/node/mytonctrl/validator) -- [MyTonCtrl nominator pools](/ecosystem/node/mytonctrl/pools) -- [Vesting contracts](/standard/vesting) -- [Catchain consensus](https://docs.ton.org/catchain.pdf) +Configuration details are described in the [Vesting contracts staking options](/standard/vesting#staking-options). diff --git a/ecosystem/staking/single_nominator.mdx b/ecosystem/staking/single_nominator.mdx index 2e7e5629f..63c5c0d04 100644 --- a/ecosystem/staking/single_nominator.mdx +++ b/ecosystem/staking/single_nominator.mdx @@ -1,39 +1,41 @@ --- -title: "Single Nominator Contract" -sidebarTitle: "Single Nominator Contract" +title: "Single nominator pool contracts" +sidebarTitle: "Single nominator pools" --- -## Single nominator: Architecture and Flow +[Single nominator pool contracts](https://github.com/ton-blockchain/single-nominator) are designed for validators with [sufficient self-stake](https://tonscan.org/validators) who want to validate independently, without involving other participants. -### How it works +## How it works -1. The owner (cold wallet) securely holds staking funds offline. -1. The owner deposits funds into the Single Nominator pool contract. -1. Validator (hot wallet on node) instructs contract to participate in validation cycles. -1. Contract transfers the stake to the Elector for validation. -1. After the validation cycle completes, the validator instructs contract to recover the stake. -1. Owner can withdraw funds at any time (withdrawals are restricted to the only owner only) +1. The owner, a cold wallet, securely holds staking funds offline. +1. The owner deposits funds into the single nominator pool contract. +1. The validator, a hot wallet on the node, instructs the contract to participate in validation cycles. +1. The contract transfers the stake to the elector for validation. +1. After the validation cycle completes, the validator instructs the contract to recover the stake. +1. The owner can withdraw funds at any time; withdrawals are restricted to the owner only. -### Security properties + +## Security properties - The validator's hot wallet cannot withdraw or steal funds. - If the validator is compromised, the owner can immediately update the validator address. -- The owner can send raw messages to recover the stake in emergency situations. +- The owner can send raw messages to recover the stake in emergencies. - In extreme cases, the owner can upgrade the contract code. -\*\*Validator setup \*\* +## Validator setup -- See: [MyTonCtrl single nominator pools](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode) +Follow the [MyTonCtrl single nominator pools guide](/ecosystem/node/mytonctrl/pools#single-nominator-pool-operations-single-nominator-mode). -### Nominator instructions +## Nominator instructions -- To deposit, send an **empty message** with TON to the Single Nominator pool contract. -- To withdraw, send a message with 1 TON and the text comment `"w"` (withdraw) to the contract. +- To deposit, send an empty message with TON to the single nominator pool contract. +- To withdraw, send a message with 1 TON and the text comment "w" (withdraw) to the contract. -### Reward and penalty tracking +## Reward and penalty tracking -- Separate APIs are typically unnecessary, as the validator and nominator are usually the same entity (the original design assumption). -- If validation and staking are managed by different parties, rewards, penalties and fees must be calculated explicitly. +- Separate APIs are typically unnecessary, as the validator and the nominator are usually the same entity. This is the original design assumption. +- If validation and staking are managed by different parties, rewards, penalties, and fees must be calculated explicitly. - Penalties should be attributed to the validator, as they result from operational or hardware issues. -- At present, TON Center does not provide a dedicated API for Single Nominator pools. +- TON Center does not provide a dedicated API for single nominator pools. - This is similar to the limitations described for the [nominator pools API](/ecosystem/api/toncenter/smc-index/get-nominator-bookings-method). + diff --git a/ecosystem/staking/ton_whales.mdx b/ecosystem/staking/ton_whales.mdx index f2adad3a6..2c1def478 100644 --- a/ecosystem/staking/ton_whales.mdx +++ b/ecosystem/staking/ton_whales.mdx @@ -1,40 +1,34 @@ --- -title: "TON Whales Nominator Pools" -sidebarTitle: "TON Whales Nominator Pools" +title: "TON Whales nominator pools" +sidebarTitle: "TON Whales nominator pools" --- -## TON Whales nominator pools +[TON Whales](https://tonwhales.com/staking) nominator pool contracts can create a pool with a minimum stake as low as 1 TON; however, this is not recommended. -### Pool creation +## When to use -- Whales contracts allow pool creating with a minimum stake as low as 1 TON (not recommended) +- Small to medium stakes (50+ TON); +- Staking without validator setup or technical knowledge; +- Users seeking a simple staking experience. -### How it works +## How it works -- Nominators deposit funds into Whales pools managed by validators -- Rewards are distributed proportionally minus validator commission -- Validator covers operational costs and is responsible for validation quality -- Funds are secured by smart contracts, but validators control pool operations +- Nominators deposit funds into Whales pools managed by validators. +- Rewards are distributed proportionally, minus validator commission. +- The validator covers operational costs and is responsible for validation quality. +- Funds are secured by smart contracts, while validators control pool operations. -### When to use +## How to stake -- Small to medium stakes (50+ TON) -- Staking without validator setup or technical knowledge -- Users seeking a simple staking experience +1. Use the [TON Whales staking website](https://tonwhales.com/staking) to find a suitable pool and stake. +1. Alternatively, send a message with TON and the case-sensitive text comment "Stake" to a [Whales-type nominator pool contract](https://github.com/tonwhales/ton-nominators). +1. The transferred amount must be equal to `stake_amount + deposit_fee`; refer to the pool details for the current fee. -### How to stake -1. Use the [TON Whales staking website](https://tonwhales.com/staking) to find a suitable pool and stake -1. Alternatively, send a message with TON and text comment `"Stake"` (case-sensitive) to a Whales-type nominator pool contract -1. The transferred amount must be equal `stake_amount + deposit_fee` (refer to pool details for the current fee) +## How to withdraw -### How to withdraw +1. Send a message with the case-sensitive text comment "Withdraw" and include the required `withdraw_fee`. +1. Withdrawals follow a two-step process: request first, then finalize after the funds are received. -1. Send a message with text comment `"Withdraw"` (case-sensitive) and include the required `withdraw_fee` -1. Withdrawals follow a two-step process: request first, then finalize after the funds are finalized -1. In some cases, withdrawals may be processed immediate if the pool has sufficient available balance +In some cases, withdrawals may be processed immediately if the pool has sufficient available balance. -**See also:** - -- [TON Whales staking](https://tonwhales.com/staking) -- [TON Whales nominator pool contracts](https://github.com/tonwhales/ton-nominators) diff --git a/resources/images/staking-cartesian-dark.svg b/resources/images/staking-cartesian-dark.svg new file mode 100644 index 000000000..4a4cb691c --- /dev/null +++ b/resources/images/staking-cartesian-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/staking-cartesian-light.svg b/resources/images/staking-cartesian-light.svg new file mode 100644 index 000000000..084d1be93 --- /dev/null +++ b/resources/images/staking-cartesian-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/staking-cartesian.png b/resources/images/staking-cartesian.png deleted file mode 100644 index 2301ce1996d4e5cb7b60cb3a6b5fa8747b33ccf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92333 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 PpZRnC>^D5_FIWB-g-=LS From fc5562acade66349d6aafd4de92b1e5acff20d2a Mon Sep 17 00:00:00 2001 From: aigerimu <89766357+aigerimu@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:38:57 +0700 Subject: [PATCH 12/12] ci --- ecosystem/staking/nominator_pools.mdx | 12 +++---- ecosystem/staking/overview.mdx | 47 +++++++++++++------------- ecosystem/staking/single_nominator.mdx | 2 -- ecosystem/staking/ton_whales.mdx | 2 -- 4 files changed, 29 insertions(+), 34 deletions(-) diff --git a/ecosystem/staking/nominator_pools.mdx b/ecosystem/staking/nominator_pools.mdx index c0603e9d5..800ac8720 100644 --- a/ecosystem/staking/nominator_pools.mdx +++ b/ecosystem/staking/nominator_pools.mdx @@ -27,11 +27,11 @@ Nominator pools are suitable for: 1. Nominators deposit funds into a pool managed by a validator. 1. The validator stakes the combined funds, including the validator's own and nominators' stakes, for validation. 1. Rewards are distributed proportionally: - - The validator receives a commission defined by `validator_reward_share`. - - The remaining rewards are distributed to nominators based on their stake size. + - The validator receives a commission defined by `validator_reward_share`. + - The remaining rewards are distributed to nominators based on their stake size. 1. If the validator is penalized: - - The penalty is first deducted from the validator's balance. - - If the validator balance is insufficient, losses are deducted proportionally from nominators. + - The penalty is first deducted from the validator's balance. + - If the validator balance is insufficient, losses are deducted proportionally from nominators. 1. The validator must maintain enough balance to cover the maximum possible penalties. ## How to stake @@ -40,7 +40,7 @@ Nominator pools are suitable for: 1. Send a message to the nominator pool contract with: - The desired TON amount. - The text comment "d" for deposit. -1. The sent amount must be at least `min_nominator_stake + 1 TON`, whire 1 TON is deducted as the deposit fee. +1. The sent amount must be at least `min_nominator_stake + 1 TON`, while 1 TON is deducted as the deposit fee. 1. If the pool is not currently validating, the deposit is credited immediately; otherwise, it is added to pending deposits. ## How to withdraw @@ -56,7 +56,7 @@ Nominator pools are suitable for: 1. Find the proposal hash posted in [`@tonblockchain`](https://t.me/tonblockchain) or [`@tonstatus`](https://t.me/tonstatus). 1. Send a message with comment `"y"` to vote for or `"n"` to vote against. - - Example: "yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47". + - Example: `"yD855FFBCF813E50E10BEAB902D1177529CE79785CAE913EB96A72AE8EFBCBF47"`. 1. Attach approximately 1 TON for network fees. ## Reward calculation diff --git a/ecosystem/staking/overview.mdx b/ecosystem/staking/overview.mdx index c67238c83..7305b7c6d 100644 --- a/ecosystem/staking/overview.mdx +++ b/ecosystem/staking/overview.mdx @@ -14,13 +14,12 @@ Staking secures the network through [proof-of-stake](https://en.wikipedia.org/wi The following smart contracts are commonly used in the TON ecosystem: -| Option | Intention | Features | -|:---------------------------------------------------------------------------:|:------------------------------------------------------:|:------------------------------------------------------------:| +| Option | Intention | Features | +| :-------------------------------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------------: | | Classic staking | Operators running validator nodes. | Full control; high technical and operational requirements. | -| [Liquid staking](https://github.com/ton-blockchain/liquid-staking-contract) | Staking providers servicing retail users. | Liquidity and DeFi integration via wrapped staking tokens. | -| [Single nominator](https://github.com/ton-blockchain/single-nominator) | Large holders staking only their own funds. | Secure, contract-based self-staking; simple ownership model. | -| [Nominator pool](https://github.com/ton-blockchain/nominator-pool) | Small group of nominators delegating to one validator. | Has significant limitations; generally not recommended. | - +| [Liquid staking](https://github.com/ton-blockchain/liquid-staking-contract) | Staking providers servicing retail users. | Liquidity and DeFi integration via wrapped staking tokens. | +| [Single nominator](https://github.com/ton-blockchain/single-nominator) | Large holders staking only their own funds. | Secure, contract-based self-staking; simple ownership model. | +| [Nominator pool](https://github.com/ton-blockchain/nominator-pool) | Small group of nominators delegating to one validator. | Has significant limitations; generally not recommended. |