[lld] [lld/ELF] Add documentation on large sections (PR #82560)

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 22 13:41:33 PST 2024


https://github.com/aeubanks updated https://github.com/llvm/llvm-project/pull/82560

>From b605fc05d74042433b32dc72e2da354ebd83466e Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Thu, 22 Feb 2024 00:49:05 +0000
Subject: [PATCH 1/2] [lld/ELF] Add documentation on large sections

Fixes #82438
---
 lld/docs/ELF/large_sections.rst       |  42 ++++++++++++++++++++++++++
 lld/docs/ELF/large_sections_nopic.png | Bin 0 -> 16837 bytes
 lld/docs/ELF/large_sections_pic.png   | Bin 0 -> 16828 bytes
 lld/docs/index.rst                    |   1 +
 4 files changed, 43 insertions(+)
 create mode 100644 lld/docs/ELF/large_sections.rst
 create mode 100644 lld/docs/ELF/large_sections_nopic.png
 create mode 100644 lld/docs/ELF/large_sections_pic.png

diff --git a/lld/docs/ELF/large_sections.rst b/lld/docs/ELF/large_sections.rst
new file mode 100644
index 00000000000000..2bcb9b63faddb7
--- /dev/null
+++ b/lld/docs/ELF/large_sections.rst
@@ -0,0 +1,42 @@
+Large sections
+==============
+
+When linking very large binaries, lld may report relocation overflows like
+
+::
+
+  relocation R_X86_64_PC32 out of range: 2158227201 is not in [-2147483648, 2147483647]
+
+This happens when running into architectural limitations. For example, in x86-64
+PIC code, a reference to a static global variable is typically done with a
+``R_X86_64_PC32`` relocation, which is a 32-bit signed offset from the PC. That
+means if the global is laid out further than 2GB (2^31 bytes) from the
+instruction referencing it, we run into a relocation overflow.
+
+Some code models offer a tradeoff between relocation pressure and performance.
+For example, x86-64's medium code model splits globals into small and large
+globals depending on if they are over a certain size. Large globals are placed
+further away from text and we use 64-bit references to refer to them.
+
+Large globals are placed in separate sections from small globals, and those
+sections have a "large" section flag, e.g. ``SHF_X86_64_LARGE`` for x86-64. The
+linker places large sections on the outer edges of the binary, making sure they
+do not affect affect the distance of small globals to text. The large versions
+of ``.rodata``, ``.bss``, and ``.data`` are ``.lrodata``, ``.lbss``, and
+``.ldata``, and they are laid out as follows:
+
+.. image:: large_sections_pic.png
+
+We try to keep the number of PT_LOAD segments to a minimum, so we place large
+sections next to the small sections with the same RWX permissions when possible.
+
+``.lbss`` is right after ``.bss`` so that they are merged together and we
+minimize the number of segments with ``p_memsz > p_filesz``.
+
+Note that the above applies to PIC code. For non-PIC code with absolute
+relocations instead of relative relocations, 32-bit relocations typically assume
+that symbols are in the lower 2GB of the address space. So for non-PIC code,
+large sections should be placed after all small sections. ``-z
+lrodata-after-bss`` changes the layout to be:
+
+.. image:: large_sections_nopic.png
diff --git a/lld/docs/ELF/large_sections_nopic.png b/lld/docs/ELF/large_sections_nopic.png
new file mode 100644
index 0000000000000000000000000000000000000000..10ec06f20d57270bf5aba2e8c5f97e84d14afb44
GIT binary patch
literal 16837
zcmeHudsLEX*FM at b&2(~_#;i=8shOHIvmh<Q!!&uA#>z2M^GKxvBcc at vDWXokm1*i&
zso}9CGesa1Bt+0oS_&AIpeSHAV#%q75ET!<hsxgf{nq#2x4v(!-&(K#$$Fmqu%CVJ
zeeG*s_xa!U`z~3ydLak|TC(RCuLB^^yfzTX{K*%e1HZs<tLPxmt_yp-b{#wwrIIeV
z{DW_ at rz#}l3-bcZpPywdc5z)$aCd#!`qi7v)~}r1<I;EbhY at 5|!!GdMzb@<p|FV9i
z_2MhY3ua#yU<5CWvf@$pGbywYio+>1?*>L(M{smzGXl$O%G=)>*b}r2nDIY<|FOXT
z+yZS)P3v^C=lAY_nu9=x%j>c-HiEHcpbXZJYp>WxTY*4Va at L-%{lEU{D2B5EGj!*8
z`Tla(69bR-w{Hf4wpe*TP)Lf+$34Lv`PO}pd*_2dimI&M2;%`z`gh;7v7=SM7BB%`
zUS*ybJ#Qlz_jteoLzU?vv6?^o3RnobF$B}ebA+T{VxbiW8?a`nwMaRcJ3;^#zm6n(
zb}S>(;4^Hao`o0tUt)zS?h3gxF2b1$UF{#I$~qOVSU|M$Qs#FCHlxxnPoycB#N}X5
z{*=A$m1dH6ri$My5~pp{UE*zEm)$whuazkYk#r+>xf(Arkh{CJ8dpC9s}g at wOf8u3
zsh>(76(@0KE`+Ewp({Ra(aRwt{nEryg at RZL-+YA?qp%|8Kj^I2-X#|MD4Cv0$<jwt
zAqrn19OWl9NRWo|UPj?LEZSKK#VC-Fhdohe-tkU-`R)&*ldnUn#cPIqhfc{0PeFIJ
zecS|c{xSXiav!zxx(Eox%8nsEFj6u+-KxPj!l<<L=K^Sn{ps|T_s#EQD-hleCC0ed
zNrZf*UeZ4Qm}6HOoIczgUHR(v-V2d{yGTcEg1jI6YUZ~2q~{8BQ<Ae&_LwswXKZug
z^rR#cTEcudss)MTH4nk*SCW5Hc#;VD)_Tn<t2P2- at 8qvU&&O`-!mdqwW<r}hO|Et*
z$dX;$HRY`c5*8Uncv5y&q4~HQY3vf%ZZ(7NwlTP9lV`nAU%ddg%_;AQS!z3PE3wks
zSkgHHnUzha_|Jc{q{>p!NTX;msfyBTARsPhVZ2JetADQ88?@tjdj4n{M+KjMEWKv<
zfb}7Mk!$|+ZaS@&JDo12(VXv)YM0RVs|Yj2NUgQ!cbJ|-eVhrZkn79ohC()HphjN7
z;2z7-3MRbXUlwUR`D2C|2$WW{utD;qHv4QzpW6*oh*y0iXf~RDRR1Kv_!wN7gWVgz
zN~P1%$4zG4k9t<OoZXGc8r%QYvpeBcZ7fgk9=GS+UjAY`xv^!P#9gdq6h8CmFQ05A
zjj08u5B9mBG}%`%kLd61a5?VAo2#11+m_21_!E{FlcKb|u=#HaNtSI|UKtlfuEI7=
zu>>#5Yk%M+U4ClW+|790^Rh~cJ1PzyG0eDyUE8UgJzx#v7kSMdr*URDbze};nX*+g
zU78A`K~o!D7$steEnJEo-_A9C+wGdK)Y2#Cyc`CWcBeX=Ep>McUluU(N+f5=_~oHw
z&}O~hWcjo3hw9@(SveJtI`^vN%L>*{^w1a0%<LCoJEzsW^asbje7BB7An+H9KM%Fb
z#il;3zp3e7+j<K{c3UfH4{2;Xt2BzlVr_uuz$p}cSeSJE>Fq;J4U0ga`k{KFIL5=4
zoxnRO5RSw;tQ{?vlBz84L5kIqxU*PieP(7!66N%}#42fP$>by(QL!A2y|Zu>)qX6P
z`TT1|4Wgo$6+$n+j%pvzlQM{sJN0?{Bn7Pf;$ZD!vG{rA at cD+n1#i4b(>Cqa$!J8E
ziz)0Cl)|}RQ+Cwp;tXEP?jBsl27zu}AGPTzv8<216Jj0NZ{z)0U at Q=5+P>boR)W95
zxIT6=(*b`Y>u{avL>yYnn0JihH(AZg^%0Bw=0^B_RMqE?h_XdTU*}YRe6&}wf0_E1
zG8!Vmy at ej~&9c3Prfv84J_Or!w)}vh3K{==^z7(`USlkm$m)M3;U4hX5 at ZS%@sM-y
zysnlFm>D4>_v+lJKAJUXk%0!@0Ic=L>@RL~0$!AX9$Z7*9_vxYdhkl(6ZrA{y#obA
zTC8ok>#>t)$Xv8vKYD>!4EMOi8hRyx&&{;=i5{{cwu0!&2Y!?+qhx(WjKh8gMC30Q
z#8#98!K#^r$~oZu+1>)v7M33$<{=;*aKV-q`fqb9aHP64r9>#m#PADLwZ*4jRR at Uq
z at Tf{x<15Kb)!Y_N at 2^NctSBXte8gkh=ghqVbC+j?Xgk+{o0}}>R@?NaXTFOPujQGM
zP~m4j=BdMrcK9nO#93ZM%t<sk;Nxyp2xeF6I^8YaMjvt0+PP8FPAGU}a3wDSdlKz1
zXBgFj^eYo56dQ?wxm0x0+*;@F+ at U+ovjU4(MwTv|d;j#oyWwXNE!%>=@GqR3{!-7^
zBVnTveif+Ky5}1|W>J>_bV5*RL=QZK at wx|lHS3Ce88IZ^dV8;3>`cPIqYRVbO0VWY
z>Y{T;Pmy*ikk9}xo_06U{{rxg7%~e^h%p85j3w9tUOHS>;@bU6Vj8B>{1j>n;JAk~
z*Zj%C0Y>w*i|pV3%`%<qdL4y_W5eWhoO*~@9OF^x`kgMDSB)2=`lc2^x_M<S;<QO*
zX>AXC7?C?hNH3W<U{I1N1Ha~*)?z*QCyx!*c1Hlt!3LIspqP(m@%+Jn8~mBPSMiKk
z8A}yQ18uD+-FCe|?3rK^OT8Q}TDB=oS$H0_eaV((MvThV5-nmbygai>ime9reCo at S
zoOMwUZeim)iA87Xwy^K;hsD9O(=_CK%^3(Ye=PCMJI&;UAD-ahz$nllvjB?)YXkXt
zhw2*<QFfHWtmnY4e|y*)S4Sgu-vM!h>1i$LG_-;$q(-vESRu0Uq1~fYr?6eAoicqD
zNCpA2%E~v#+73FVsAOw(J;<&=1SF}SPb2Yv6TNlEb(N7&u#>RF1uxCVZH1E!d5?A`
zT+UAtYq&a%q9PJ+dGB04)pGuu3Lp-&Wt^LLBQ7A?u$UMPspLl_pZfjpQFlc+qM~5p
z at M476!BeoNZ at OgS!lFT=m$HNDjYr at Z1II?B{M{tNK8_K}4gRL>{l4beF1=FceL<>(
zbFU<0>p5<x?DtzzGFo8 at XH(X`8fAqJO+Z&2B!o4#F*XLOe~$nBls0$KV7Rxk1FDz6
z<KlZ-{pG{pR$j|Si3N=N^?lsA9P?A%Kma=2cHb<JL5wzR6E19%Pz;kKRN!$9vXSYZ
zGiLicUy-&$B3ELGI@&;Upe1*9rNbF54?d>H295kIUfK=O&y07I)T`5ON8xK<=GNsS
zpspdiraXn%i`4WSRBYOE^#Usb<NH}P$>r>)*+QcY*~IRcs1nzguOz`i+V5fCNx=Of
zKBWxm(Ca0{1>O!<MUYJQ&8Y|%GL4xNCQAKTLFY6veM;{Vj?rJ{cSe)+!`6_H^Vpe0
zn{x-z+E<#5-LEC13oIesqmn!gqsRC_-aW7#GZ6)K_%y39nwkB`7r|YDR-AMo|IBb1
zPC23A2;n#sV${A&vyz;6h3 at 3iOk<Yj`zlG9c=Yz{;Id%+^p@&1U#VZ!C*stF_7`Dm
z9AL%;LfHfXZAey}Bs#^UedW+- at b!k;*K)gGvj1h51<{7Dg+&X*#v&B|w8kk(@Fo^)
z=xo^(w(OmhS4u)(JXwx>D1=KMaii7;y|G=PUOdPRGmrF+x2a~(X0iIr()(4 at Q7Th7
z{@iWNmLTh`Sn^jBWZrfN&Ni|iCMaPg)2kagd`qR2=o1xo=m}K01siEC6yNe(Ip=(^
zjs$)iXM at DG{#+i_ at mI@1y)Clb5Y}~g)=9 at fLX947m`vVloQyN8Lc#9O95tOpldln0
zv2i&r%5YzE#}lt#5y9IZyRFwzdHGf7n0FRLwpVyI$5QPFyb&|^24 at v}1js^?RTL{A
zk1TF2X5kfAkR6iepZg at m^VdPP3(AfRiyYC3ldGG|=MEVkicKt^NKq_nP~PyezLwo*
zA4k4JS<B3p+NY4mDQoX!zo;!?(vFaUfR$lpv0!gcN=JetG%Z>2tf2u>EjlqA))diI
zj9P_pL{MY-j22drt60m9tT(;0^}{=*H7-tdeXad at PP`)y at fq|W3PL3ct%r5Gxno9!
zjO6F7yV1V{SqJuf9>fR;LLUmU4(a(km{AafMlvEPHMAoRKq+IIytGDei84dz9KW~o
zx#~!{ZgRHWs`qzXG*b{vh*CV at Ez5LJ2Kp|su~EOew)6DOytO+$BtowwuK=4M`d+M9
ze5>$7OvvOnI?aDGTt%RmpF*Q at rQ}$T;^ZUsiJx<_hm|q5tJUY0%K53^>2C8l;Nr(+
zsUy;^-znU)6cf4w9AR;J?7$P(eTspX?Lp7My?v^|iiLxjkP(~hSWzITa)T&j5FPTe
z0pH164uL%$IC+wyeZ#YXbU#krCQ)hd5P!kIT1l(*?w8!NwI9v8Oq&<HBWTyb=>RP*
z>KYq6%xjHJ>yIRt6DkW_(Ky15g?%B2G#fQna_sdZjd<Gp4%SXqFmV(|`TH3Xh9A>Z
z^!qvtjY^o14Kad&NOlZ8v~#kgPh7bYUHl^UnH^idRMP>WoqzH7UzuQWr`wOZvpi;%
ze%b+II6tOM9Tc!bb7uYDW0Wm}FTNd0hrsfh-s$Z~mJfmkMF%96zTr#pHM}H<e@^gU
zq6;tTkJa_P=#ELd2qb-pF#E4b$#Ju(0jioPbP1}9#>`Mr<RMDLj<A9VwA14?mgspk
z7#|}f*eoQyVqG&T>G^&sUVmt_9!ITyZ1Ff1f;q>VfG~4Jt#)}XY~vru*#!N(^LpM;
zqr+_Fdyodi$XyN at WIHN2Znm3eAUQf~$ZMIJR*YeSDjl)+F~;4$o at N%&Sl~<whZIEH
zT?l at _uW$Nn5;&&II86u6q%g$L`mXCUf~2Y6ri~nD$*NX;=7q^!_ol1(vdXv-scO-`
z&U7{I at o|`=FEzHiBTwRoE_p{jv at r%|jc#JfcB$DvEnYN84EtOfqP-s65IOQlP#+8`
zehc60Y)mC14IXho_9eIK&I{rFiRG>_#|m?AuM30a>~#jJ^{asv3%aNa2TT4?ms(y$
z@#{q3zrv1&&p7BNWDG8>ovH=d6($GKms}YwADSf8^-_nMAt=i>E1sK&ZVc(yh=7I9
z5>9Hlv4>Tg^SE#mfc;<_xn~@ilvtN&>k?O4Tis+gniko}+(3<3eUtbi)GXp*A_o>B
zXL4`I0;hFI>u}BwV-X<OItjkr^FkAk33rYY4>_DQzrwGk5ls{Vkb!Tdn5Ev}C4y-y
z8O1y8YpFe(5|V$X{~&z1?tI*y1iiK%L?tDU>Mmhr4OQ8%?Gq5ez!y42Jw16VD!i6Y
z8<hdJV?v{G$KN@>N8j_h#*Y2g at ukfQ^zJ%h&%(jKsmP8cJyafn at fmB9g0<PaUF(sL
z$mu9OETtGDO5ys*jS|7rAg}JJG&+8^P8{s((6emcOI#Lg1<Fd)-*-D#I=u%5G2!Yh
zx8f}pFpeCUE>9Gp!pR`Ot at L>bYC(jrdQIU(4H7mx$uo0c&S)_Fg`TZ!tsPkYS^^Z6
z=<FcK9az@@R8sk3tFUNW<yUH>h=(Df?*$obpAphd;QXhf(l5L2l(5 at 2cso?&=MLYF
zkH)1x6~9ORi#PS(-{rW`W3xoK3z8(#G~z3babt!;p+G+Et!O1#(q2lhpn}Ji30-c~
z^$pnHbgE27&<&{ws+D?LZhrwK9>IA*MK=ZWsGed5R at RqRxf6CL`(?@o7M4goI%zGO
zk&YTt;^<WqXM{6lT`_&_nwjgLK2RG_>g16A at BTH&ekYZ`B~-pWlT at c`bpqh6bS|~W
zn!HhlM`Vf8yKP~I&NU)DN|W2h&6OrhXv$~yCO^>2`T;6vNXQK~Ycc%Wt5L0&VmBAN
zu9Ym-Xci7O`mkvyh)5VT(65GOrAFBmyKch#Ez_TPeQ075vzWT&Jzo7Z>SV-sx>n&N
z`R^Pa4A-i$YD09kG~wi%HpFa}OEDcmRJ*5<>^+L>LWUeZvlZ)jvA7(7%ZpF#078rO
zp-_wu_Ev9)!1x1OFajP0;+Yk>XiyxJR>;E8iT%xn{lbL`3#_5ud0y%%Ew>9UxWe*M
z?2~es7L%qu)YvpA7iT`Ye0$xYe~hBATA6V2^$pS(`=q+je7ud<59yX9cVwpvrs#%b
z1}-C?m%2l8 at ikYnu~|b<-6ZtQ!PL&)$Tb8Gg4Q+VhRF^vz9u>PN2zTF4>UGg at dxa6
z=Xo@|7&u`aaf*pf;yG`&VdMQSzwS9`(ykeLrF1tMc*PyL<=Th0Kpx==BGKPh+2838
zmgng$+ZYd;;RUVB9blgL4TsF!=3v8z4^uIXqMttL?3oRaH`|EaUif^27VPWWKR$X;
z2rn=k1kE0&uNwCE?mtW}im;P-o3%L1A&B=rXi)tQY}=ePwg_w5c9C at CoT??-o6`?)
z4ZMd(#pdJg0PE8~Ri`ZxYABuyK4HQSj?>cv2~iTLkYv=@SWv@>3auHjxcwH0yU#GO
zOgcgg#SdSO3|EgwRN8s6Hxj<pbs-U7bg#LbjHBZ#pP at PcBlwu`*?S{I_Pq6Z`9rrw
zt|-LreDE7lfOloSOElCW0~J{B<n3 at Y|9sP>iExPL1s8TWEd82B7PdLEs|Lk-_ocAN
zs~cN56HmW4UQ1jK(dLXHQv3+tLI3>=kw at A`p-}PXLC%X(BNP)vjES>|)>i1ep`X`k
zYKi^!F=Pt7fcztOtdr6jE}5$0p`wRhk#;V8oePkYON4?MiuAhOO0}Vk|C7m)*UdTd
z$1wT7`L6;eTUqgpwQBQ4*3g{-vwsQBwo4V5JYGH++HU3YL>rq{z|xJI&ofyR^`4Ia
za1U?f7Lw3Jod3qTYT9<;pcI0&^8FZp2VWeX78J4e(LJE+F<y$RGW|2Gn7o4vQ{3aA
zhTkAzm`69K7e^Yas~l<E5W4*3`AFkq_;&EWWwE=HHmfMDlPn}oZBL|O(Hmm8#S=*i
zp;Uk3EzciP`M9iEJktzhBr$(rJ9gT=?iM`czgZwjj1}>i;8`n&`ENIZ{j;%J8+H at 8
zR7yxSOe9E0Iy5c!zka0$|J&j{&OM~ge>0EWRB~4h{Z{8m%+Hm`iY9^-BBC8aW<@z%
z5dfm)H?UVai^w$Z8znYopeMEG=83eodi8&dE{W`qg!tzEJ;O_kzH?zBLI}U0L~*Uz
z+~xJ4D7*h+<U^`3P%9JF9~p-sbFHxIS#X at w!a at Dk|7JbmBy<8pCM}_ at LTA=5ClP3#
zHW5J}T5$t=$7G3#-#39`o$I!+O7|*pu=SxJ6WAfv#8%j-rSb#5w&j0L9H8?XJuXh{
zqTfqVj0(B($P_eC&j68zZ{o>-`Z$wO{)1$%)+Pl#k|jbob+73iHa8vBH+8cfiJavT
z25!B0Y>2A%k&gHw(um3a^}KIkRQ5<MF|hsDx4b|9Z7nGFFZ7w($WlbzO3KT;I?f3%
zaTMY+ah||4zv*p{s=~tC;kuuCG6JoiNtCZ+kDWVNX(32uqsS4rP>4tWWmz7Q{Q at z-
zb#HnDgWIk^k1^#@BU2s at y1$U#$7fHGO1+I~jK$3~c(T%cu)m`-UOPdup&j&o>uM?i
zO>zB0j{X$p|M&jYk#(&WIfW#CujjvIwF)_gr0>7`a?z&C|CVrcfuO`CCfG9gA_Mr0
zz$xnXH*0a8s~O*aANST!vs3{u6GH2D^TbTg>??1Ko!O}?;W<F^J0lJs^L_9bf_v2R
zqppb82o_rp+>QG$Q`duLVibNR-a{?1WuFKybI=v?a9~<zi;FH3V1+_dQo|^Z2GKrh
z`Ci9D%2B>rTdavC{b#zKg3o``8oP8<vcDiX5@?%rC7~^}8ul*+)^nA%n`C)^cu1(J
z4ILtuEK5sNAR7Lj?lTdhs)LXP`eWaMdsJVzJiU{STJiTyjhKfB2Enk;qaLCeo+M*L
z<6ZrPKUOA;*n(-+i1qHH73rO2 at DUsI*!UVw_diSSb`2N$Jw}Oq*t;P5(3EKLU-dse
z6YI$4<24PFu5FBg38|FkR5p=D_n0|B$E7A(J3LIR)doNwH`@I=<)`o<>I|AAN&mF<
z2&Rr#2r=X|^&PMbhvheYZ<ryHy_L_xDvSlZRg&WAJZ=TdvQ55vJ9dBP6ke;lM%)lP
z;}o0*dV8N|gEy3cb+Z7W-8w48#nY>M>OYo*rre_`hhkzBzY{HD(#j@|0ok|z;b`MI
zXZCp8@#t4dPQd&(PSN5ax=czTzL>mwKW?e1Yr+<4!qqFQ<JjH`&#LME=NGn;As;L4
z!UpzG8_%-JF^3X;lDiT;_7)&!VyTwO{vT^y!oza86>^o$p!Eew;!}p4ZJavI>xdRt
zKh<YuH`8RRxIv0VM6!h@>kgcb4>n$#pF8J*Mae2ryRY-S at xPEzGqFnJ3+X=J6hHQ+
zFns$1utA>^;f#q;L~)t`|2tYA|BoQQC#cuS(-}kWBEua$X~v2QSF{-W80ovA=i;l9
zt=!+}eScXz?3`#rT)=KS;27GPDsHFF`66ReG;`tAE-wda)C%<aTSXmQSKSj{($PCd
zp280mab at A#b49++C}`mPH%t<GORyMTTQ&AI2SCwWEKVa2ti`0Ix8mgGRgM8#d7$5Q
zt&n{#axNdovGb&j at PvxwpB3ZCMz&oSa8OPvsv51WknAzNPc7;E(ylU=7+b`fXoiJ+
zhd-z|D|BfL+sFS~#O_OiIVRb*LL&s1S)p`%-29*T=8gC{KanhrHpCG95E^3gaeCif
ztv6Jmcp;S8l{*$nE1P!18q4N3==`uD9CC{B<<n at ewsY!7-D93-jOOe6)eYf~zcH at P
zp0oLlE!cD?i~;C<%|4#`RyW22=$O10q3rO!Zzfj<&%xO`iVK!}g;Ld&-EV(_+)Jrq
zX3OnQlUG*MQAFZfQJ+>Pk7gD*h;I*vaU;5}pj<JIDC#hu!DAIc6RnJF+L6Rh7AlBl
zx>VIIsf~-SlU%KHsjFK;j(b at rX{&R&UAKhNMD`wYj{p8+xn~&dy+{I&tbrZ=&IO|q
z1?=|qg{Iuh`?ijhm6wm*7GM)_(AU!O5?_Vt-TPrFhqY4Iuvwd}aj^W|;KWA}hg1JZ
z>c825Z{{U|E%+_2Iw`=tJ9PmaT_W!>Kyj71)X|OzKbY?B`&!`0hgx6^tFo<NMJrs1
z`946RPE<T5hQ|mRPB at fv)Tmzh+#7))EljzJ4IF~P<lpG442iJ-85;{6a)+3u1IgP_
zq5iP@!5 at LGXyg`8j+kL~k-+J;>=kV_f&ov-g`qDaM}H|R2`x*Gr~lBTXV^V*qv6yS
z8&1IE3F;aW|6m0hXTgt)HcS!wf#%7?F?yeL^kq$K-s0&y%wQ$z%17et7DCU}Y$uf~
z!_GXf&!F@@NHa_QNl{LOA)>DI6(k>3I7kUeKJm50j{K8o+WDr&W2^&;8X?w-DkpKd
zaQk#?%2zT0d$Bfmw3X~_{Nuh74C_vH4XcznVTO6NSQ(%DX7<ZD;HB!zsj_4QT@{r5
zfH?q=4 at z7m`Iwshi+JXARDYb`)mc}dd(BEgS7X;w at lGyrFl^6;%1*a+K-~1ac^ET3
z`=R{>1a>S9p44ii{-Ufw;(P}N5+~eiwNmqXxzBtYuEJ!fa0-Yz%+l+lEzV;TTR}DY
zJ$$P8Hp0b!`lp)7u$a0&K*Lg=vg0s1Nruu3F&$P<?R?l+FB&DUtF~H@|F~tX<iH3F
zsNOufO`J%{GzX#RBc?x2bq=;2qCREki#8Y at rLLD;a4YSY-SA$kU?Lju&JN*(cg&ZI
zgn~S^seDVli86*M9EEuz))Bhl6i|Q2?RAYjT9u{13BZ23=f8nya2KpyWipJu<WcXM
z8PE4^KNFmhl2=LXf0b|Jex=^j2T(%RQ9UDUe!{D=YpC=f8ae`0xn4KT8#yY*W#Il{
ze#*JAA-wCk^4xsdQtLD575^lG?pE|Hz0ZK^l6}<-FBS~c$}*-Z`j(VKlhk?weC7s<
z{hMLpjYikdXuUHiqZ at mHt9T{3t<0AO!eut-;slq9fAVREU#$ix0YU^#{k3r6pyc?t
z1-R8ty>}4y;1;NYKWcl4b&NhVW+oI=O(!cNrG!}Q*<&`Clf}G0gn4f#jwp(R0vqbO
zG}#KZfr?KIgFV_0u#4 at y4ONcTi0EA7>Kpey5|jKq at FY6`Z%L|DQG at DMQgx}u`Nue!
zledvtqd;RkrjQV~dqIb8VzW0Rx>M`fH3F;6L8+C!jG($V0D}q^az`L+BQn^Uo%GEC
z8~>!g#?6f}4DQ*DA8AURD at --fTP|5lhNqJsNiRuaQ-Z(gUb9-QM32((0F&y6;1;k(
z$IbERf8k5F1hK8z+q0UM;~c#aay1nobmwwhPer>%NbK&Igb(#`-1W}!@7Wv^EDG!H
zl>$u~#nrd-6}Kw@^7YYNsjIYMJ7r_ at Fg6<>%0d%?6aOiE>hq+5UeNucte1=G`%{do
zn^w;iseA|)0Giu$z-Xda(`XOoM$_d<F}_g5#25)X7BAyQ!IL~rr89Pw?;-3}Y~r}A
zFcp{Y$$vZq>r?<R<yiqxHgh|HQ!l$Ru}iCquF}h|{o8X;Y<^boXCYg8lPWaKY2Exc
zqJJgz8H*<$AiJvi8VRqJv5ht6<7Eva(X3I`XmcWNKfrUS61W>a1$uEqxb at MV_Ct(a
zE7(jLfwNa+pOIKRvDcu4A!b~|%=&Sqyb+Q#aALn=4{;ve5V1oi;3YQW)0V06kymjR
zpUP~;G9VE+)UCTXdh>d0h_|S=J-0mfl`^&=*ldc-gOD8WwuUIq5uF}%S{&YNN4ZJZ
ztvE|mdPDCwbDOxnwSBT~`2MWmO?Cx9zj6c7AF=e6Ci=`=a&tMV3f}eh2J%e%ZE`Hj
zGtb3g<}?o$v)PLBqb!RXwF2NT{gsTu at FaD5A7MrbkZ^CtIBRteG-9js*zVmSn`Z@;
zzSbR#lO^8)->dg`U;4Ru1+{Qr72AHwW2Lo at b3@|*^e(yIps}}$#A%*kutpCPCpyX~
zoP6P at S3{e-nYmc`TVdY*odmHg1nt~!>_Ij at DstBnKdteEO2iB0;FI6oB(TZlxAFyU
zP~8h&O_d(yD4zDB$1<$6l0%gMEh&fZ7okcg4$%##{UT{ZLo;)dEnA+JNXMM<mr4WU
zUh7onzAo&JtyrD?f-wi#<48bP#C<wU@%hU|{a)%*gdE;- at a$^JFJ!|W*b2&{<^%Mj
z<2AzUy6B^^%%NP3QXLQU9vIRRPvXS*P4yE1z9c at L`Y}vCi(f3)x}$-*(+bY*l?H0R
zfzfdmpRk)tv?|J3m&>c}uv&k^CAfLN;t!%YmRmLvOgDJh6|s&h_CmE$0rRyupdOWM
zC()Q>U`wN|Z`quh^GyR&&eD-Z?NrayT72BOk;%!`ml&TlYh1%;Z=CE#8h9>UNB{Xz
zQ7VzKcth;cRj}TwxCKf8!<~*3H5F|Z<Et2{O)gP&{31cCPU8+0-}%mkMypA{uF$T+
zqk#|8{r<yvF~k=Y2O3$<fvFAUxNZLVh31nM&9GViU|tqEN&S-FU<xYBOf4mNp48~$
z at V)U2Klu15IwY37W%4KbQKsyNX(LZc;(tSJ8o<Kh;V}O`p>R_1g3|=-$v(c7n7oJH
zr{9 at I&T~t_)Nev_57Jk?2zxq}q2Z=54aGt(qBdQe5`xEGKOhZc{{r+v&bAh at Aal%D
z9p9GijGxr-Hg;I8c(n=8ZrQFvZ&cx`EPr9dkI}&53u7Ly;QcCYMV)nQUe1e)Z##U9
z%o3I#{rJK82~wjDIWq3C6YGwf=oAX7spicK|B_r*1qh3N?k;oIwIHEM;#NNnbH-no
zw&mVG5piEM6FW>uQdDmp$UrteH!>NQ^=ZTqpZ>y0Jdx>J>fI8mYQ;ot2XI{DC-(x5
zZyu2B6mMTHGTvM`D$j9&9%@Xs%Wb;M60D<EQ*c=n21&bia<xn5oX4+l#-di8DDO$h
ze|yHY%t_}<+<*XZT+6=l2ICOYR~F$hraho^4?PIG at AD}fukA=sS4|c2_O)9DA3uxq
z?RlQplK3c<<2T(b84Z&{e#imP-!F6VDePS at B~&7L%$$J+Ha6*5 at Z%^KCOip+H2`>=
z<E#vCYz<_-;-1a at 6ac5U0*iWwBb775wMr45t)EHYbcAblB0MLjcMD25<_oOmW3mDK
zB3~*w&ca4fZLXj;C;%N07CuAcZ3m}+g&tAF-s&SPDSh}MJoB`A;)Y!7&^x(n*hxhR
z<+b4mrDzp9Nt95|3LjyKR<$IpNJO7?4rKo<);wYOy#x0?;-2-Mqfp3(pX4qHF)sid
zTH%Iy&67gXD}e}5%>(eEJBH1B0UWAGM+{Z>hq7#Nr_(8Re?Rx^H2>q=rrNz8rxGm{
zFgx8Gbu#2b&4wyY2fmvZ3$E!+Hca+>en^`)Mqsk_0Ni%|h at I1bCZ3CXbCfEr{mn&T
z9+%~#I7vc5MzY2T)Jv{0Cv$s%YM}cvaHNj_Iv{Q#pl(SbF7Q#xGXW&66|AIO;cCb4
z0rd>*{x=`|By%FjECO;qF;|q{*s}HP!yub<-3y_+XP4VmoWElw#pWOBkY+8vq2Y`K
zdvN+>HID#*^HdWX&<d~kljW@#fNEuK`gu8*z`l7-@$3EtRhdSf4%S`}Ek0&h=gdCj
zt#U{)1nr8j-Wcg1`MQ6RZ>cMl#`zi7ZNu)i=q&qA;^SxWT2j#~y+2x)KgyFz3MV#h
zb*sb)fwq=p)npwICI9g+_$Vz1G`mBx)s at iU<8azS?IGTOFX($i<Q9o4#&U19%#M<t
zsZ+I(YRk`|AnQfJ(^x5w1fE?%SxKFt&QM~X<W%gU#cE(VW0`sC7~lH(y<ZWJ0%E71
zY5*?P-?B}g_PUo((j)kzMIqQqc_GV}K7^}xLDb<#Q~P|qN_W*qX7 at F|?WL?cpO-au
zE4(x?XxG$T-X+NP$7N|F<)tI9kh4WE?eg|Y at 6e9ef2>BP>Og5TceYB5H+w1#S`YCF
zMKL0+j}bDnT at u<jy_Q+zFNW`H#B)oNcWqKk_iXHc)=P;jLA`8fecS>G+ZCaW5!d6V
zZ&kV6k}M9&2zfzxGJfwL>RO;}{>dxN$FCfZZpPAQ>ic9|dwRlhHLs86%N`MCLM709
z;!Z#jAQx&T4sPmL)rd#Q8t{kdtHx3~nq?2Er^iV|L`(wFRo6)|s=S54U&a^rO(g at E
zXyFG;w58QP1NE}Hq2w`TrsY at qaFZc>ED8y;yzhM9SfIgJMv-l<>FNMlh!Oj2n{g+W
zyn_;IloT2rh1fr5PANi(o`N#;u!z-Tv90b=nr8f-m-=7y3s`NHQ073fDM7&5KZO)*
z!^n`<-}cn2&4h64*7Avyi;M47Ky;UoP_N>WjrF;W)H}L7g<6=mH|(9y{=nOSPz2uZ
zR6Nmzob{0Bk7+|Y4oY1x)WUFa^^7|1EDJkc(VVM69s1^D>589SNy(@7p#Wa!60s5?
z`wH!P(vt1mi0_jT(pRWasKD#3T`gMx0?Z;h*6LNs3kr=AS*;|zDA_t?K*E?d3v2lF
ztcLK}{eVV9Nt!l_pac4}u}UxFwT_DC_<;@Z1kbq267P4;@t at C4iOUTh9LsN-=;s9p
zvxmg+yc~c;c_MR%=%d~=0JNCfM$92?itG0hq5JG=bwx3p>Uk%#N0r|YKH?#MIwtn&
zzoWtk({8;5n5@=xmKPn at n!l3a|9IvVs`rbz2rF3#NM`!+KG47GvImw|O}D+=Ph3<#
zFvcEYQpMAObj!)rV`t|ge$!Ad1=p^v02-cMQvc4D?<FV3Q<&oqt|;CHhd0oUxPS0m
zvq0xF4ft!whl!SVgBFYTKhtkM&IyTl`1irR*JwvRhNq0$5 at 57gp*GJ2ntGHTD`ccL
z7X>5^4+{fTs2}H+S2Eg5(VdfjqyD0PHwk?;$olu5vtf*eVDzmZYjn at q@bHHRjjKP+
zI@}PB*qy$mG5UFwsg>)O^!$Jg>tI*4@{1c`V0Y+FRQi<@u*QK;&+8lTV at QOToqL=X
z8lq?-j>LKt0`l!#q095;2t|woGoh~5;M~<UhtT_vs6-P_fp+fU)FVp}T~o*Dm>N%8
zbRdNpWBVuT0DZWp^avDaLhf{t$kQ7qo3u-ac6rv~*O!U?`PQMMfEnxWnWR{e?V2En
zJc|=Pl&S!v=iQHh!hyu=2V0yUBUnVRk}BhixiagH_H7FXCvme6?i5tp0#v%asRPyj
zyUKQz`pWg)?N*AD?L0ojzbkb|*sdu7PaZ>EhAujm7+=G!5I1biH6P!74HU%(=L0Q7
zOCU_usa>#IYf47#S}du|19ORYiG*$rnt$BpK7Ad~QF#v4MjUTGzB|5^ThY<5byEh4
zbbDQMHz1ey#GJxWfQT!Q^>i?{O<&}o2+mNLXZ@*D3Mw%(T5UdlfN1nKR#*rkFsCMP
z=@s2E+$YnMPh^bA?NoUUx9LD at 2q&Do37`edL1dHg4&4E8TFjuU8ueav#leE4mjITv
z%L at K#He3-vRKf-26W*r2*GX7lQ#6bQYzA1(yxWrzT>@om;m-EDfgdFTX)C|%E6Np$
zvOD+1+1Q|~!FR*N+%;%S<8l&TVpuc?=(tv>xjWYaQhtASH?3>U6X|v%hWEEP(r8&#
z?mAtHgoU?;MAEd!?`ta5)EO=a1Wg7SwoNa4DQjQ%0PVqFk2ezcTchVuJK!=aH0xdc
zPm{;#r&|`jQ1^<JN%8d7**hRAzbm1Lg;fj at b-qgG?Bj at AY-ZY@Z<*3*3$>(^4ff10
zTuav&jYxxj(I6g+X8eP2V}>8M;Z0oYuQWo-XU*;YHq}Atg1*X{=kVY4BlUI}n=)ff
zU;9zsO2O)^y^heM#@ZjqK^HvIQjeH<ta2b2$(q*2P+siZ3TDUL8&F!S>gu$c0Z?rE
z28m(ECJ7;Er6FipL?dI`{1o;x(Z&??@CqTf1D%2fM2&li8@!FS(H*`<PSM>D{?Xr%
zao9C}qyb-q^o!AM<=#3!N_bJ}ReIOWMQ0 at xto8`ngj;qzzCH>BBVc!r+(G&gLjtvj
z#o~x<VY|Xwskz<laV%Y&78G(kLi at G&f-V!R%^!20?63tSirhw at e#@y>NIxcuh*i6B
z7r*y}wwUJ^B_-A5ef2A at EtGb~6|u5*xCA?8prY%zJI~g+TnpQWjtGJUcI6|wN at x&3
zh(AOJ2&J<zPFaP9G>6KZv5N7Og at Y(>BZd#ukp3Lq^uymk^FW|*-Y`V2nqhl7VoXb>
zfvERx!-GQt{R)(*%|)z8gVJ;LfN*Lzz;mT%H(e72k{l^in;U+7Td`sMk_H3ZL}<ia
zB>zY=jv6XBAyIxR%Qg_Gttb%E=Da*&K7Zym&-+0`0~fdq at jR|ob(53&eb^BoGvYGH
zHwnSBX9YFU)gUVFT>2_<Vz537*&1TQ+y>kg(AuagX7Kl_XBIO^@0h;o{vMO<L07J)
zSly9*NyTLv&c$wAyZLLi^zWSlq at wo_%q#*H4uyt%w-fqvU3Txz5vE3)7#GamA?5&g
z0(v$JlVIte-*FL4rYxS7Di;shd9e)%oH2u!Lwt9U>yMa&IDfuJ_d8rE)xasfdm9LQ
zpx)rRjJj$vfKRI&{gwrk?(LB?WDm<-n^66MW)X2sj3S#5nYB6+P$m4Z)vcek at UK2L
zD`-o)i{$gLj*iieZ-b8DBk07xCT005$t-qQBrjJ-pbJYPscXku+1+}4k63(Sa<;Rj
z4kfQ7FI*8D3Pf^Hyn}uQUTzUF@|l=7v=*57I2Q at 22~jb661sa_ at abb;OGkFXk<KI8
zO;h8qiRT_lw29&af2C|UYy<$Qk%PKaKZEB~OKc00;fkmRFgsPr+sB3#+dm<red~FL
zE7xO+k at KfXko2$A+T(}lt-EJa2i0*O=7u`w9D;&8(Wyr+&FQY!t1bv#pv?ffUH?hV
zKJXp!QkBiQ#xLfi-RQxmLcs~nDDcp4bK?5t+aIMmVqUyGvt&-&-|LenNcF&s1sHwi
zhKh$Iz2h$+l}|UX`Xu0gk^@f6#@ebr>Fnco*F0)*)C~YbeNyS)So(oMIzzZVr+RM}
zl)G-l7z2#lPiw#wKT37SJh(|noZC)O+cIJHp#53HC$;&W=ipb%Nsc+P at T3O^ESH(o
z(!iy#qMy-OLDtbdpNHbf*<V~)3jhsJ(O#R}gTCMQ1nj}@p1YV314!)y72YowDd*O4
z=;sBo9xL$%kLz=K_C4k9x(S|;H0D01rQg)B2*E94-5tM|FsH;X8UWJVqlgqBTYj`E
zXy_4d4-rUS!Ph=+aS*2|o$yjzc)4iZ+%wpeFol#DnCJ9vZlK=RF~kr=REg{1lW3oh
z%WP|_g=o9n(o(OHJ`Q!*3h_8~JtkkHOHL8bnZAB>ib#vGEdv-VUL<?%QS`akyw0-3
z=iCxcegtY@$2msP%|;iKDGoi8f;|OO-|OyB_bqE^^2`%?ZnuUVdPoC1*=?uZe+;pB
zG^GcaM^kwZBG<kAGfu$-Xo59dDZ^o{s3{9z+JtHO44Dv)HaY#R8)P4cRN&fHk|OIj
zFI66($p at -nP=<8pkGc}%!~4gj>7mlN`ENFY4gAy{n4cAnM85~4^WP*@+3ePzK^oHB
zbpPPpmFmecGCQ?l{3ty=|2`X4)8)2JS1IH+{XNFp*Q^BUGEm!28%y*aI<PgeWn0pX
z6AaE);6{TIBF}Xp%bYS2D<{y3Ornhtklr2!)P0-Fl23 at oWEyVCGOFP;dCQEqB3Z~C
zJ5QtmIb2M2dVjA?q#e4J)mwhtEOl6;)8S-7HwKVn+MJa}7II{Z!Nv+bk<9<TxTokR
zc@>JCPNPHsSKr!i5<-E-5U4HUn`J0#t2Ra|%R|gV%R{5Zs|I!LR70VauhF(f>p=?!
zRk~nmHLZlC3XIfvFTi*kC`sO5FBG|K&VT^{NZun*O&?HAE`8$-NiUo*^6+4J&e*g)
z!vPmc0c~CYPq0P5#&8-VwH6 at -kp}KfoE-e#yucMj(-`v06BC`of6V3_F^d?P1i%4e
zbNaUuc1wCua*&Dz^1v&WN8-_WLE6QhF1mA(rRH}4E%B!nR7wdR2H<v<gkC2IsQ{S3
z?55BjHc71*Fk~a;FZW7E0D`Dbi(vyoL^)HEzlz~xk}H|6MIJR}*t61+5~-RUEB0{6
zNR$xL-T-6Sr?mD(Lc at WZ4U}$%^*bKB%JRv}C3KCYS|&Mf;*mjDF0HMq4FyoR`l%a`
zFS`1xI13^kqSc+LBgl?DJq6y4KtbPD*S!Hw1$f-BfGIg3C=wg$Lx)auBIR10FmKmR
znBut9-6?C#_U*$e0Q<ti<pzGM at mEvqKfF0R>qg!Wb%3psO;Sn}LXon7nJsD#_I?fX
za;PwBLGqnCil*XM%f}Y^W1LZ)dq_fVM+{JNif at l(f at v3A7P%QGcUq0t5pgkGJGNk{
z)4I7`YuBtn!*Qtx17Li6JJE1VrUSbUuiR114FeN;?bX{%Cjz*u`Jqo_x{vu at 3jBZf
zld@@D*s||Tih=+6?b!c}@E;3+K;yIhnY)2Z0Nn4Nh2ii0$FKgsaEePH*F~9x?dfUN
QrseMO-tR^I`S9ug2UD6{)Bpeg

literal 0
HcmV?d00001

diff --git a/lld/docs/ELF/large_sections_pic.png b/lld/docs/ELF/large_sections_pic.png
new file mode 100644
index 0000000000000000000000000000000000000000..92976b5f78096be9234389ac6dd9669451d13151
GIT binary patch
literal 16828
zcmeIZc~q0<_BI^#P+OepfQU>MTeTpfq=3w|GPK2tiUeeeG9)P>pac>j1W=E&K&=`K
zqe4+3BoRrNLIPF=m4p}t0uLksDM87k#w0>W_#RX|?YG|b{qeo)_pbG>b^H%ko_pB$
z9<F`uz0dC19k|4FttkWoS at P45e)}Mh1?>>X{3oA(2L2BmZ^3{-cAWUhZ^!<lF>=ut
zO^AV`Zpxbi#tq)DSp4<4)%SP3aNfYV`g_0+Ppnt$@Y%s#@pEk7=i64ctWa-0wJvtU
z at n8=`><j0HI-dH~jBf!`;z3Y(+?*(>!HPZftvX_K8$}jPXuH`GMy1dVJrM-z=it8o
z{r6u9{O?QPV9?;j$r-;5CD!vGklR0p`n9jJU_l`5MVsud+Q*qgAmJ<h{}qxTpAUhc
zE6yCOxeyJ39Q<X~@?BTz7C|7jXYGzxJLBd-a$WZNZ4K?%0<N*)+~+qQ_nSZ<eSXXD
z?*IR{*nz+7Vv&p)<Ff+5?N16+V(CVEdYv3uV0qxh?6&gL{#)#D9p9M_3z0s~$??}a
zXE(N8-F&9s;@PHL-!Dyv$2Py2J%je1o%wRlxNr!3Q$1Us#o~HH2V2l%wPfFJ`NJV^
z>}xTTGiCh6c^P-e2Ya+O3Ieyoj-!0lbZD4uj8W6Z-v}+2WfRj>fCbd8d&mjU$t05x
z#Tshz#lP)&Z+?^Mld0(@W%-p$EoirgS(WI)E0a5<h2)J1yM>~VnlnZeL(j3IzAz*)
z4h&__%Q_W4WoRpP|3>{xsSY9~4;ob4x+H0ew$jNTgxX1NwTLd0P>j*$I}AEd^0mPG
zTTIS>M<GWhWIJI8Q1!IX at N9eRBc&LMEb9~H%+RRQ1jY~A8=~<R)gLIGX3;P!4YQ1A
z^^{rasBWRLeOG$L%#YUP*r}N)=tF4RrO6{wUjim_z^-8SNqsk`F0X@<oN`rA)^+tQ
znjxZ6TQo@>5Eog{;9=LJblz1tA&jcW at Uw^JWfgPlD;2MX at aIv!qXn6m(fRMJ$T?@U
z&<^o(j5K5U2hsPv*j3l>f4 at 7N1L0`pr at AAdlCxE0fHRQ#vgj;TcS0s?v>Fn$ZYAX`
zY%(36N at jNv=qQsU!-YYu(!#u*7`hn#O~l=(nJtoYuF%%cS7*%XAYtzV<rU`~a>lO=
zT>#})<gA`-hC|@VxSivFp^Eo7j?WWtuuQI~1rAR+9H_p(W_3IAtZT^hJ(Q%n$CFKQ
z%%zhvayAonNU|=Tv&Qrwc=uzaZV|6T$!1X+{wNFXR8v~lGXGsE`B?x4T5wid8WiXd
zArt0oZ>p>w>o&}PmmyFZI=OXZEMC!>uE=>x+yV;V1u7?7Q at CcMA0arS;qp}UbqE+6
zRu4JE{aQFu^s84j8a{i}S{j6=!%z&SmD+s|Ug|2@;{*Xp*W3LhPD6WD3!x?OHOSZS
zph7(1M at IRP(=mfh5Zd~y6J<uipH(=LF;iMxsih`<P`wKtq?@=6*(uUEvaSE%j;8J#
zj_3FJ^$;37D-?3CdMGRm0=Flb_Nm_jwyPAzPA!mVJ`SACAkY;Yfl|hY2rr~!E`+LH
zbw{lyk*b6P?NFBm(I*w|m1fNw({w%3C}^+G;FT7{Y4f`k at 6FyU*_?Vf^B}`cbrt2g
zT9_&#`+sYfyjs!56h9~(7+ at +WkS)E1zGrb(PX{YY6_Gm5c0k_?9p`6l2Q2QYy0W|?
zMk4)_+8~@jhDw+^<`z&qMlGK?Lu1dVGGc|Wj8um1G!nTaXDeuCR>L!oS}V{J7<}mY
z>i7PKu($rQQvvKuUZJ8a<!#2^b7vL>62>QM*bN?TjR1n>3BRF_f>OJx%lG=fsjn!N
zL_!<7s>hz>tW_Aq3z1t^U at p}f3GAxuna)6c26Mq%lNN0RkacO`7Xbn<lb{3XhFU at Q
z3L5 at A<$K!brJCR95{i;K)*mVQaD5ZEJlxVGO!xki{hT at PxVmS+ng1wj1C}aavgcgj
z=4%RaH2G#=<XYD1kIpdHBsH9|K9jTNo+wZF!$-e(dmYURb9%)5!Q*0A>Zy;O^x%1l
z^)cI`$wX=2y&%2++)qzN+XESO^z%5eJaf-SSDUmWeK)3brC!4=4HPcD{AmGq4|N0A
z6KZY|9l307f5*S_1qh<5)Lrxf$ecT9(!6nA>jw2*ZbE>tuXyhJ=lNYFMH%7JCjw^P
zwT~|U>Md-1S@~qVw5Aem`P0WkZQbF<&H76H2bUZubbXqS^8fe4{q^f1kldfPd#NvT
z$Du;o=;A_qyMyOu)#vIN3exCS55;Ons+#xBT_KfO*Sj7He>4=Era1WNVzGr?B_$c5
z(uV@(iBBT<qSOc5#uY+43ux9!bNBj18Vee-_;>fjGz|39_jdR^SD8MHyfZ-Py69v4
zYTt19F4xjo)fE++hN+(ufmM9tqbx`DFxLY7>H4{!?ntF^gP^v&Y3&ODapR*5wtt at O
ztFGdXIwRLc56b64AU4fUdVtJNpn12rn$4Zcz4~~gsl+~)@@1L*+?t<JzUgN6G?To9
zPsgi6{E})dk;(4K at zHC*aC`e$B9;RDRpZL4`Gwvv-~WC`CK4fRI&vlXclTe19wyHQ
z)}&mI?pygTHKTbGS1YN0%j at cv{sEzVqfN1OyHh+H6=m`jWL<*zx8~s&0PNbC{&3Ub
zyg1NlwtKjLtqvp8kxGx2hAW%w?DD(39I?$@J=FHm&~+AW3YBA2b(cJiCiqFML>f-!
z#_2qPk`N{hsLPs{wTmI4lb#9L<qy5qW7F`UiI9A9oUn;HnG7d<Tpk}|t6*K3@}7{?
zb;#|ufl%O}wbhl3AgMR`d>#$sa_$W5iE*9!5vUDt?vQ)LYyAX at _%?-XO&*WWE}Gmg
z_0o)WN4MyGE>E(!z6seSld#2$hJ%ot;>jPR0ztNP5wz_Lj9a!%8v_x3mZZ_Qx&olF
z8b+fB4K0M#C&7y^?zy*om*B1yt23}zLyfI4y++-=TyXB;#Obj3-9l#QR}pd70a+$o
zA)ls%1J`Oy`|J~auevAULZ(Jh5=k$bkS!e-Adcy6Rw~5kw?IeGHNH7 at Pj)DsTJjAx
zLfRIfh%5#7k;6><ysggca`BAi<X?b=msnxGmBX;_ny!Zs*)I?#ua*QTnA|4B5lXui
zC81MN(69sGRS;+XZCp|s+<6<q`Cj at nn-9%du0T#F(=kzyup>k=%D0kkv`%!_bbj1r
z at zL!EYoy+|l#7!;OD~dl1_~R_4XhX}^p6x1#5AIq$hP2_4xhgO%($sX_6~9{RS?Ht
zaEV~NOFtYKVql|tU_m!kmnTni(G_Mb^=<Da*<#}8{G&GzXI14H$x^n!^fef4gIa$C
zjq+goy?G%n^g4o;+l at Ne-Fv!l16>@)Ntd1#xZ;Y;!s~lH>CDMzty7uMVzc&9a&NSN
z<l;2`TEGcWo$<Y;*O)EDf5$(6XkHYwRg;|Jc%AmVrTa2%Ok1CGnr+t3^wK{NDD}Ig
z*5r+WgR3aw1u)10$RghCrUi8b1Ip6I`x{t{jh7kn9IRd9pnk(GbcXX<odNk@%nHq~
zy!pc4#YODz7PQ7!&2Mtup+{_PW2HJ4&Ll9#1dZpl2H!P9f*wR7s|6l5Pd|pDEZO40
zx{fUXg(`L`13^S%9xm97&6GE*E~AQ%I<5c#?V4AI+xKJs>i5Pn=HJGRut#11`}bdm
z)i(y8Y4}$I0*k(J$H+=vN!T*x82ZkL-E78zS`G+9>h{f>{*7jkR%$(#O`R5){<Tk4
zFtZuR7ZA<6r at tnd4o6Hy`KDyS&H7VhG!a8+B%?aN<#CPPjXL0Go);KvMQxuX&fFW<
zC>GQnxC5NUH)EsRDl<1u+6xe$!&hMXrYr^LZe=ce+aE4ktZjN#I&h04uB~xGH!zHE
z4kD`Nzl#z~u}GG}4WUdd7IQQ-C{MQO4~nB`?Xm(bw2a)G#Au7EhMtgdqD9`JFZybg
z1<s9+lg?{ZA*wHg at I5`c6p1J@@nxoAtOFicJVM9!%F2pDX_B}|h8`Wz%z=-_Ufc|T
z*jalQd?uziuJPQ%)Bc_zOvG-tdi(v9C+^z-Io#}fCR7trY34aPie1{1sna0v3e*g5
z<|#U|8nPuY&~rf(jlb{Y%Xg)(?UV8MpPt%ZANTu&wIn*I at xhf!UQc&6%<Q42?64Ul
z-Ro($2p=%Lm*G3pLPzL=O0A<LWMZ4?Ti-laj!bRVqF;TtA`jG6TQ94vp)z-ztp93+
zO%zK(`)*O@?H>1g%q)$PZ0=WVU8|0QTVmp>Wd5FUxb;*dJSAbA8|8sDzCL-eD6cJ^
zG1g6}cZ?9Q=)RInAwF_*X>e5j!)X{JuX{Cl){)GbUSFIXcK5Ifj5BzvXwUGPO*Oio
z(5qDn0Yc|<IU|4pji($gYSg?yZ(lQKK<U at w8eNZNA{lun^KE7$UOU=-LR8_{Xh at R|
z3P{iTq(8eoF2U$T3;D;iE>@dCZ at zVSB)8h*w>rW&s-Bbn^^??2VbbLYJHjPY at mIYY
z{54x%1VU#nH-m_~zgTeWt&7#JxsQPIx=0m*vqgQ3TLp%!AJ``jcrGYkg$Wy0A;h2)
zMIoEZh%fto!Q at P>bzLy0 at YHm<*hAgR-C2oQ%MjOGrB*bY8?;ZQ^iwMu&q?f$Q`VH#
zFtsj8tLL_fQ1nw1I-MS8c>%ATWmO~x;hnJvPE^-bv^&-jO&jAexy{)UYAlnuq&V+`
z?E1GeGxqX~hS%@@T$^-i$#1Td-U}j0SJpQ5GV(nTU{n~b5_i at BS8H5v)#TMA-m3wc
zYFuyE<ke0EK1p(+yhQh3_#n}{9o6c1N{+1?=eDT}A$+{mD0yvy8yxJXVnfQy2CfYF
zG~Mw??|JftAm65D{h5hP6^((OMYr-d0m4aYBu at -p9Qxtnw~v4^lCzJYvd;}`c-qf~
zNulKN`xA&KlyFXrbcewBbcDejcXpah1s`x<;w9{>unBa({Np*EG<Pm3g(A0XO^yn1
zJW<M9s-!@C?6B95#35ZwUYW$Dn}}g9HY_C9YlC`>`%9p3D*w at tkGhBZ2t<^UEAHE{
z=TSMyi}UnrZ~O^b)Ms8+eyuJMBl}JEY697kj4Mi at 7pi(VUBiNT>V39hNy at 2RW_O&r
zrtJVCbL8m}5nXR`SmD#UUOlOd7z-3|2=RD6rqb+4x}umI;ygY<i*^MzClHZZL$m;A
z5%Zk^RE^>6?dmscwgmflVUwgrau|}coT`HV-W<sA9p8zU at P3}od7rZ9&Re!{dHLh4
zZ-J-6oP5}qVaFnae$82dahI1PXyq9{Fzgx;i;*WocuRAf)%UmtXJH=fYazbV<khp5
zhK>G%`>XSL83-ZlL1gn$hFvpIR_N{ne71WW^fcinQ3idIiq^Z=GhL;+A6q>mjVPLK
z2TiK6E9z@(G0LF7i>ha-^0ecyoUiJN4rFQnnpydtQ2<R4WpY?^&m}+s<_jBveWM)v
zRGHBeS3c9Kk9vTDW3Ki%<)U5hAkxqqQsoB0xhC=$>3c~PdQgmZ2)z|XVBc%`aiXm`
z-?qlL&CSnqw9#l+X|x-O5g=52hCX at ezh{Eq6BVEZUNhUn{HuvhS}(jaUJ7Pp#TyJ>
zB-4Q~zhVUyzem4i?L9DTl6L5NJ*z{Lgzk5sU1seGtrj6XABjD{&hc$&=<Ur>(@^z_
z#%?Q at rpK8B%c*q#8$}?M@}&Co3I8yY!@PDa&-BR^L at 3%K)v?ZT#z{Q at G7jYr%2W{B
zaxjTqa&@Bg`4q9HpElM4bueo;@A9%&-#`V`BPG-vpIW at cZYyp)5DuNCR^FeuU1h=S
z6}a`fEwf?rd-e at 3OKYPI3`PePewK(h3WJ2bj#QZo`BYU8p$4DVP}eJqm6*I at R<e=P
zY*bek8diyO<Ros&9SEN)nk8;#wV=zqeVjY(tbV?iP+j@^L<H|SX*@7;g}2Y|w at 81%
zX1Yy>J&JDn_~LZdK{Z!t&vA(6`Az4>?Qb<|fS)nhp*o+~9!{?XOI=AP&oV}9!WpMe
zc<e?+GL}>$NDjGOkrmc%`&rJq-W7jMGy>^OL#=wRGDn+~<LTo{ET*Uz&qR3!g)R5S
zPNH;TmJk-`(7XJXQT!SBmk#EAkpmTZq7y%Tl)!D&vW3h;`wVW9T4BS!c~L=^WY!{}
zv^gJe_fh|elH`O+f2)ejF*GAimJ39>U~)=2rXEBN4{9uiLZCTj3dzWbfb?DY3dMLI
z7fZ(c8LBJmA^Oy at Zf4Vcxg}pJqKBRQ9Ln$=u?HA+gsm^p at 0qO6Rx3uXkyf=i0)idT
z^gd-sX1P95tNTXKEiwEm&8aY>kBY9MVcP2g*BdnhL-x1mB^g+TE(@9brNSVwzkn8w
z=M>;-_m(b<nu+ODa_S8}>72u6otoXL3g_qtZ-o_x=3bTN9m-#gtuPR_{O)hbT6l?r
zm?hiZBeVp0cftR;KgGU<mTpP88Phf)2rzwEV6zlt0`b{zHGm;bx_-1HU0cI#%d at oD
z`ayj_yY=*)%2fD#X$gnqxU6c|$NuxHq^_(@>PJc;QU#a$q^MHM?p`@l at 2Bs+SgB1l
zqJ&Fj#>qVHU<<rF9k+79T>NpKReSm`nlRs-XUuXR^$Tt=L6}{Z5i4CR@*aPf<)dbE
z1<{es0StoVvb()@+FN-$&B6PhpYs~Rvp;)RCzyKk1$j{*NH#owS133)Ojblknz6=`
zz^rXIuf#3lE4CvSLO(SN at f+4_OZ>ki at 5B8|y@$vHE=cClVjB_J=+T-wBr==i4yP-&
z38oD1xatbC`)=}RC-FS7+gy-+Zv(>QD2T*4!dJWzxPbA+D`=uAA>I|qEh(AYfmd8)
zqoJn5MCd<7*J1Js{@}3Y&(vzdRANUXK>0i-`E33Cqmq9pKn&~1JTLGPyqX5;Zy<h=
zrjZ+w*_S6n8M;%QpxFOkkCnG*IIdDNx|4u`hUK~H34)kGL!}6QQr(SGLEvq8_NH7N
z??Y4q9inpjg^bNgWt0}9 at zVFy7-mCb&$hsFUJ0rBo%}|cALEC~jpRi*OxT5nLw%9X
zr{lZHlRq=c!`jNgOsy at meBja?gt{P_6bK2r5fpL%134GVYH&gt8_<;ctTszUsn{G*
zwwii|`b{_frP6(~x(+oCNs$4Md6kA%a~&WaViJ9 at H)A}5{&9CP>vY2IbFkL#5>Is#
zs?)|GiP7&R2O`C56^kXMWXa3uw!Mt<bV|(Nu2PFAVg5 at WAwM&fAsKC`FJAKxMg8RV
zKIrZL#Gh#Vb#8iR-fTWj$)B~8zj^S3nC{}qY((d~KRu?X++Yx7!Vk9hm)a6}vs8I|
z?&%ZEfz?#L>m3LO$B^ut*NUHgnvZ_S%c at qK5^vlTQC at m^pv=7$Z`dr-*ypRRG#^z(
zxNiXP`D>ZwY;;=`W2_fnpe1<SK>Ld10iV5pkh%C8&K|7*&8kpNi(aq3LQ`DkHbUDT
zdeyRGwv<lpm0lv>%T&<8cz`u<z2o?jN>j8p{_p<hE|7G-59yhS8Gn?uUi~uM{tW-O
zj3fpjMZ&x?AXiql at bO9?-&mbB>3ce9)-`+*F}mJSyE#`SWcDsjmV8AHj`#U4kq{>x
zCr2W)f6Kr#j%NhSYxU?*X7z;AIjhNuxPL*uziG2HoQ<g)U(icoHTd$ad><2>+s=(R
zOVxqJ+i0qi)dbGUT1brbtb=lSU#9^5RUaZ!egM)&K at UcPyb5PLO)=w|=wv$FyX~J(
z(eR+m<dtOwCYcF{is&mbCu*Yw*?rcZg_*Te{^4`)0#?>kz72q;EUB%*5a<}`7v!6M
z1YKj##lV{&jf_#(&U9zFMI7>0dkV6}rI{G{qklZ=l~PY&mr4N&Ew2yh^w<g*t03D3
z4!)|H at kwE?jM8zg3AIkqgR1m$`frm5q@{J=oye+EmUSY#*91L)?);|?$X5uaZsIUy
z)v=6x&l>GxEsfp%InBBhL~o;%0dLzgupbKnO*1fIkZ{^$fNej~$4<?oQB&(^rC<F+
zP%vBr%F|tPxF at E*J*PC|Fk?WHO(<3C|Kgq%oO^D39pH9et4_2?gY(|>5x{J^YCwG6
z&oid_+;eq0X7S%*{%lhHKm4ao^3r+Gd3-GsYWoi_uWIwqv8GhtjxM64jdH1-d9_9V
za7235_ol-^etIRb(>&beAHG^AIku|3aH+|wV;`Z=$5^HT0WeHzM%E{En}g^mFu}M%
z-O80Y2lJ-0Ra0Y?#G4$wifk=7_mW&3Usf_H<Sv3PdlYpWU)u2xhuWKw#^6ltVpO~h
zA{V4#z}mqnvMrKB$~aI+$Lm7(MkQa)fD2*1Dhzo&^mKfTnAzrw-3PKIa0G|ke3(cU
z{nH6HQsT4CFjC#(=)n;(zN5?p%%95(M!KIMWdLUg9hv;aTV6}UX$|oBi)hx^)19E4
zZV%>zn8_}Lmw(VZPp>;o1}hx(_=59&!RD4sI1^oN)_yu*uy-<(r3!!ZJC~nXUg(gU
z1I3PW-3gc~lCO|mV9j*$_>b5Y(!@KdvGTKEUaLJXDUUb)!3u_}28*E*8 at C(JklAYq
zoCR4 at ZaNgt^YT&K3P}Dl6?lHC$t$kEb0gPlotjS$_GdMk9wC9mC+P1MfDkLX7 at 9yU
zYYt=Jf0P+|=!h6{bFef*FvTFfHsTk%MLiYjwPF;pr6lD6NTXq-43r_FUfwHVegQLl
zbDv{6Tpyr^790E at RFj2Bn_eOevh0I1on2hSS`-g5o?k^A(VpNgga$tz+5jwm9&Q%L
z#J;}D5jTbf7T+yp&v=Fem7x!)Yau>h6~SM11?iTa==K8OCeFfLgp7g-TrByDb5s~p
z|7bHvbIt;1P+M4koT~-?{nADtUQgv+22-s~tQ=`S%F<a8WERyW5bAL{lwp78N{y&#
zR at C?xJ~IPK&!UJG(a<;PR9xnk!U-Q?`3UzBS*7ve4}A-;L)X>cpHrgqUO0Ynv%mB{
zmsP=2!Vc~4LZ#SZNJqRKQ{nVKNY-sPbdzVe=9P{oXjRg&pUEMyV4;(xpT2?e^eyyg
zxrNA~u=n{=qHgJ<bjby<uleA6vIfV}$i5e<zUk#FfnVqJi at 6D;F!r{@GAugG<9*Dj
z{TUcAJ;tr1>3(o~TJcsBk>v)k*u+9!mIs(2{mgsVcL6hFJ&eQ&Cy0{F(~a4N=iHqw
zaLF|m9dTUpj2TM1)C?j9mXC1ztpr*6saLNB*(wkG)o<oZ7pRHTd6A2eHl-N^#(-#9
zLfLXftuUxNxulW`2p3l1p3umHb(ssBjQc7~pLXFf=_xZrQ7Rdw>)AbMt^g7%?_jnK
z<<^oK;p>6LuiRT2?o~K4X)56g*}xm^`buK?f3`A>Yb4QQzQQ(g+x&{}QYzDojzH3I
zUhJ=A`CW$DRMCU at kASu2+k6o=ptzZERO(1pA$^J_Z=#CV^wtg|zI(tqH3w^Jz6EKG
z$J74OKe!t!*lrP)YYowiDvF_sRy?q3YAtD&bDssxH9S`w<$uYv at cM+eBjzOG(GMQ)
ze?_m5JX6dTvgn6$=5#r+41A=DnkChVaWx>1?OIc_gpxQ~1GLw;-l<taZK%o6y3}s`
zV5+xgvZ27Xug5Ln2e-JU%KP^2-00_-c`JWiP30M}jRIBSQE at BZKH_VT+q`}8gBIL1
zvf>!VL7zl;o`?C{-num7Ms#CLoDM9CVTgOAO!715@~+l(SRL04dQ(Ew#YWIMr!qc5
z+4o*{VW6Hi|LBZD)$hFltLKJ5HwG4qh+&}qIy#R>w_NEqg7jC?hl?Ma`8IbM4P=P!
zK|2vjTTF++lFUcOfJBAVp8TGufISo5w)hB&dIv}uIB7_<(FZH+uZQ?-#+IX?=WeD|
zuRoHAI3isxAocg*CB+$;Dj*^5CAWV{*;&ckA9D at AjF%dxvm+12mtCGb2rAmd=*IZ`
zMTVv}k_>%y{zqA*XgEq?WvMLUWKV4_b>Kc&p#M?IBg5m%E)87F*d^@}5z_;bs>z)*
zN+8AtgB(d^atkUHTcX+miERk`95d>d;>WDTs)C6&w7-7Q=`aMRXmTIJhaD!JAVU?L
z;sqoB;Wzpl#{(P^Dc_g6<E4wXZO%>UC({08s#Zkn>oYN3j>ocz($i!$$QmpBqI5Bd
zJ)9Rc!9FA~@#zy7D~{*=eI-^=uK~eWf4C!2IGjB%iuJ_|i~)_)cdwx4X78nAK*vQI
z at 6&bKtWk)w=k1nVDvG8j at RLfW7L`t*FIFQ0A&|6*k=!f28T8)3U`zOqZMF(P8xv_=
z7!p)!Tb6NzQPu5x9tS6u9iTzBxabLu+z{s((&W#Zz3)d?;%%wH%HJpB85S9?`TrqR
z4yqDi4O1^{JIyOftp}ZQ`Q*v(g}6j%x*)%AQiM{y201iNsI-$@9_Ua~Ufzt9zP=8L
z=}waS*sGN&%irp@{f(d^gh5+EFLMxCUjYa17{ElnwT6!`6FqS!2#rr?tK&XcsVA9#
zAEZ-MpPRf&MS!MMErhRb-JG<lVej7-(!)F#3zb~+wM^lPvFv%%fKuIza7!~X(DZVs
zx-oh%1y^41(nnPydQv?<t0C at fdVp|sbdJ1io4OChN~<^iZLOWce4J6ao`5Ml3xf#r
z at 6BuknG59nneR@Syh?)U{@^~SG;7r5;Z`exol{;a9qOU~mR+s%Ojw$SyTI2u=X|Lc
z8u55Oo(Fow7TpbvKhCm1gpK!Eff?8?Lk|hJnte176z;MB8mI`pkj-Ghs$-kF)e7@=
z&C-cQ6>OC!OLc-QL&R7s&Qt>5wpfuT_uzv|ouX>qiF=u$HLr-7(sN+(>{5#!MY3e2
zui9rFoIdn!{=)cX&Z%!d=0j-gNWZSmlW76t8DSS$PRy>iwVTS^JpdhMf`NC)6FJ0l
zNX^oB^Yxf2&M98^TvQ at hvfR!!ti(I|kGCtR^h40OY_^xvq5Oi(@0dV5A7BwRE=jOC
z9~Z&v7hTNAk-mCu(iiUnQpOkOAQ}v$_AC`v;~x9Y8R`LWn@<ReV$DLH!Iktp>o5;z
z_JZ8B>!;Pa`n~P2sZ!(UqT0t1Altig4xWHCcg#A#y{plhS)YPdpzV~uxqoYg#NGbn
zLUTHl31EpS$(C7<*FO`Ur;&!j+IlAzEVY?i1N2 at Z8|vq@*sHw*5>8CK=`io^+|?I4
z<IomwX{fG>fyM<dW&SQ(a?!P=zrK8Pr`uNV(>Rqx#(*_v#b*Ae4?J+_owdN4uEipb
zH45%jabR9nloTtX=a4co7(X<s_|D}8xZo<-Ci%k>8lFD}Rmnx_QLe+E at aOXLb3&S}
zNnG3)_;v5zpUx|vglC*e^`6QUa7~BH5jGZ>mj*+H8O^r4q>iQfOhn}KhqhuXxk0Q3
zLb|TRU44by3C&rfK=#6id-&PG_+?$6-YfHh=ovERQik%~pYuJu)F)8&&-st16Qn<b
z;9v7X<_~qqox$}O&7<|NMdO|La(=x&-&L&#!l#rjm7)-df at 1eBlw5xSI4~O<S&B2-
z!|R-T<!2Uzos{U~h}nHTM0a5E7zj`XsTLh7KN-63hUqZ;!R_0QE at F_(Iij0P7EI}u
zkc&IsJV<iHg8AI<%~<K5_qyco3%l>@F<5zD$4-!j*qSJrNZcr2=^XqhYb!__7$P3@
z1y(pVv(tnf!2WqzKvNx9ozKCw(W;(=F6JBe-2~ZvssKSiADH5nBeVNis+9r~41OEG
zj4%iHdov3}=aIYfv`eM1{q<)WA9{JHZOJNx(M^4v>+KwN9=3R9lbX!^Nq}(Z0;^nh
zx8}ba9PQYhSKn9wY#}uVGw at Gk{A*LwniHPD(kG2w(^v-nxU4MYl*I^p4kh*mTo7dn
z-=N737o2wOQX~=CsNyYbXW+u98)(VX!`wXR_z+R|yZupg-<x-P^#N}+FgL=&qpkmH
z at ew|Kfy9+NU2Il99fMPR+wlH+<6bfr>;a3IHx#D&T<BfTyVL)Pd2vmY_tm+;&%loE
z+Mzf|e1KB at -dBrpjHXrH3H{#tD=dZUkCU)dM%QOP4$x>|ds*M5oQK`&1~uul7A#Y?
zhY=LUsF>2ppQJyqRH#Ifu8=G_<0^}kG|Ptb&lIOCMtODNpKwr~6-##k_G4LG)}fW#
zH(-mozVTv9YQJHRbU<Kwy@*W{QH9R}v>Mo+;;>L#?`k2;<S=FvtoTfClIk_N6s!yv
zRt-Ln5Qv+NX$<mEi>g|1PBOJ9Z=VUyF^pa%C{QS?t*@cKO*bU)5LP#fKk0;Pro2!7
zD<<GOPrBydc0A+xgsOtQ4CGVBp-%iEPi$#;ws2U}ARv0DGt-P1GD`>4Tr~($Dwyy9
zyWUQBtZp2vgr;iNq9p}YOCH*MdGD9o6V^%(nv5badL`ae+W&U*&c2a@|9Qazk;i#W
z0(l&{)FOKDbBz(h`wTYn_IDI(pK!y^DUZFpfK(wsojTb6f^#bGlYlZnbmOe*_Dake
zfrRcbM3Oxd%F5i`fqhbsf+mun&$GM`eE7R=1>i>q=TKuto+#qf^doL`hk4(%{OZYj
zU at o5DR$WC)??`4Zis(Yntrp^|H5 at L5eu(|auYu4Ix7U~|-7vbSYde8a|8Lt>nA4I>
zWc|K2T0;v=x9gFYer?|;MFATO&?K!)<cmz~Yw!_nPUcDbYLj_NjyI5$!kg-ot9p1K
z^kmQFXcGr7h$22CMleKp8Bvs((kPZtbw_1HaV8yaV~OAm-hF`%UpD8Uffsd=o?C?7
zUCaeo#r-HxXJI!NEPXJ!GiMvHYP-J+sZSY7?##C&vouz$bW(C at btF>OXTeJEOD=7W
zM5_8MTGLmjU{1M&uznCKpD=^o+J*B$)cMhX(P64%oFhXIhh`xsQEEyCi7Zd`byN^p
zQVe!LV4OSU96|<Is_b4!!ycEl4pWnJ^lO*8e#Ct^(6=9Af|5H7B9br2cz*|+?+S&t
zn3X`g>V8kj3ZuKWXQCP9tX^sZ{ZRc!bwCTj3e>Yo%ll&FVkb+*i()jg+oQ!5D at OT_
zXOb%egyCWkbC!@Tkv1h6zep{~P6=Q_3uhR;W5E)z(h8&v2>DJ)+qyI^yN-Qu@!>4{
zT=a(5O9WFXq at 27%M?yO#S%=g31yG$r6w-x6FC2mAD+!p|l<N&<p}x_M*aGe%=b7Tk
zWT~%nLHCdy_LvBt0^+*!PVxDc at ctkEhE~vE6-pDyhDJc!LvQuTW6kQEl%g<`BbYzZ
zk{I7Km>0NWqa^H~@q7h~uj7|^0|7zH<bcgH(Y-e{1ruBmaAoqyHm`EL7%Wr)7E?u|
ziz5G4LOZCaff#o%;!>w at 0S?Ctls>}Ue};aoi{1>#<IQ$eiEXLACl)C=mDQ!E(a;Sr
zm;q<tN|55^)HO6C%}7mnqAuG(Pf*?r(4Wtz#s_Yu?)s7(JIDJK+vmy*PwR>UW&EOE
zN2ixQZQo!EQ4dt%U=N<IXY$UnJl7N9tX1_XqjiyiD=-Dx+mXc~p*yCH+_NAr)7_x&
z&cpt|@a=jH&)+3#q93yVnCAeY^QJExiDT&YQhZg<h_o at T)8pw{G(F26I8bk}Ya|5=
z5x>+Ec6WI>NY%!P%L=r-Zwrt4x?h42TT$21 at ORLCY~!5@*W1A7p}Aor#CPxh{I>!$
z$NEodY4Yl)(T+3`%5b2bO$<dD_A;QzwzZ0~(@T^n)#tXw8Arjokw{$^egTTm2_rg{
z*9C}vnYAp_oMrm_5;T}Qy+axm)M#^iJRtI$+o1 at x5D?xz at WC2SFexAsj#*0~4^8mV
zev!!p9ZGdl8 at df_!kH0)$ppH2eOk;~1=6uGsYv>LXR_H%7c`ue+O`E)`qZ}D%N^Ur
zP1!7JL1 at g^hQ|A1vJO=&Wzau)I|BX at N_C}gDGyp7eU0*CQS%<glHU^hw7;S1^Ca9X
zuTw#X_=S^)7}ga*yj6W22f{?eK(J&PxPeDlfAiY|s=CN}McCu%bcS!a%1^JZjjJ(k
z#~Q05!>Ww(#8b_<cV#UaCHkuQM;pY?SWydT&(M_l?<&b)JDD}cJ<W{eQm-Fm>y4WM
zJUZkLB%<unWU7=<$5 at ocd)0?WhrP^%Hz5|!KmlFD4<n3=(rq{yzq;EZJCp%-cARF3
z`Nm7AoR at V@8XFyriwRVOK>y}qwMu at aS(Bj>W88+#VpO~{BRBd-x)Rb<W#mk!qeuq9
zzJQk`i*^e1_iP#W1z%~JyJR8$cF75Fm!a_p!1xAbSxDRfz>|i)BF(6s3eRelI_+Nl
zWvdIEQ<_hHoVOK6X<|n**3)YqdVd4Jk52z8tq5u~w7jFr(q~p-PH|2d4$V1z-gca<
z^mW_A)~!IQ&MCgk9OItFj%;<fk<r?VkfXzw%%Rg?4#|xO#`DH=!}h1pH(zEJHi;c*
zu^IL^o(OMSefrT6dEcEEjRD2hVl&KvG{<sULQio<#@ki;wddwA<qZ#<Y<fiK=Q&^Y
z0%eKn4TxY~hhb_%Et7f!BAFw7h;6-`&ps`fA at 3V_qT<WfFolAj)9>%IX6_H%(wq9y
z<9Ib`7eBw-W6g~r;pUHiwSE6DM7fQH;=+rS0Se+cfBJ~@CAlDhb7 at kDvP_Kr7TZ!4
z>DJSuFM2TB*ZZC-p>D;=vR;Nj-PXdx at 212jTPTKJE(;voFH0xu5wz8q3{614Dbd?W
zW4=l=?yP==GK6)B$i8#u!(6E&@VLU*8PfK02lYboM#S#!EMIj8cR{6LXlG%v_qxa`
z`uL7{t<7@*EfLIbMk}l at rS*W_Dy8eOYVJyB+Y7KS+uYTSWYD2ErOAqtsyJd47$P3b
zq4`LRTntrTMET1z-6N$N$SW%`EukhytnV?_*L!38m7awq=|f*e(&=tb#iqkDKbb!B
zwBC+QKrDSUv`&2ur8Df6Zax9he;)ABD&=Gsx8ZK+)F%qgtTUN61UuH!24(6~{iGeU
z<t<C<y6ixy3M%ABty4eaLY>DIoREfCc*^A~ro&;#Y%(}PaF5HcD4p>N>FS;F2H0 at 9
zQXeXHAP4D`dI}hkB1PUB<U92m<K|C<YobHG2<V*z;Y?uhk|C4}E8Oz1w;h;$cU4i~
zIhQAQFpjsHj!^rBmI+|LSrEA^4dc=^qvbj|7pi~>uNN(JoT02aQ at T-*|EIl%J+<hZ
zdFRtp$Z>AgI-vZ3!DQh-iRb>z!~>~jl?7|zS5Fjl?347>#v0TFk?(<0 at DACBBDbu@
zoYH+O8V8zcm6UIu5SjmGn~v-YDhK=0uB%u{QeE8SnC$%f^s^y$-rd;#$8owLaxg;a
z%(;DRf;bXUq(2L`FRDm=2ks$F{qINA?uQ6>Df+?2jK;Cl*#zL%G{=)1{Nh5N!U(fh
zzJlzS(nZlh1L&7i0ghyeDfj at 8tGU3}FS`T?$oO?r(c{!r%PEaf^P*JpEjRONQxfsG
zN6UmpKyv3Jp8J+H$EeCY7EM)?={n^kj#0{aU-^WrJTitlx!a&VxX-UvoC*eANov<6
ze1Z`@1kx`NPp28&f=W!9i`cpqae`hnS<D@;FxWI&4DA461?1oliJvtgju(2mB4cJZ
z-#0JoUQ8rd((`N&mix>|xLuW)fA at u1UhdV=`>I at jqU30!w*lTDH~+rF_pcsSyJq)c
zwq at 4VO?D*wNtCL>c5t>8&v;n+kfx9eaK~u)Y^MRH_d0;6n*inTyRjSPnJV<W4|3>^
zH;n~cGC?PD1Mn$>=*ss8I-VHz0<dnuoh at _ozyD_UnLf8=FPV;Epk!4J6&PnNjf<~f
zj}OA{M42cE6^2%RyqM%pWzqA0EUNy7pB`+u(1`TuC1(G$**fq3Y~v+l!!7Y-t@;@H
z3;9v9JRrnxGo7@});0(^Ndj)y_^yoXx+E)`f>Mq*cEdPuX$5FDHM#5zQ2B$qr_&LU
zGpBYNxcWds;JdqI#R<w=5c)#4?oA)!MOK>aRsS*9sD2w*@@_qO7GSNL>%6{ieFZF0
zH@!Z&WNw0~e}3Y^=kx at cJLmSixkm2D`+3ec13Ybz>%aXt`qc2-O6T&tDk#G3_*`%N
zd5{mBr7=#Xe_HBzS#icMjQV)trv~~(9y_IZ<ePa;wF~BsusYpO`WM&GX}<Kgxuq7d
zzDI;f8!EL6u75mx|MM-ECKD0*Tg05XBdl)MqWlk=-COwc+#tZZ#1907F3h at a|EG at o
zlY1;<dpp9JJNk?@cJpsM1U*)+Nl4)O-sL}~?|*8XYmDD~buQnx|FpxC5wfn+$X-_c
z at f6{E0uesN?uU9fPIK+-Cb-w!YO-aXll<h|>F-8EK|F8PVGeehf0znem*1836&7 at -
z&T|r-2E4%*^Aa#U{4@!c9Q?4=1>5oZq|HakKv<<))OWaQ=;;eI-rQ8hn(dp_N^WI`
zxyQ#7K(vRI+>KEDOCK<O|K+17+V5=n9fSq*$SDcky-Wu?Sc4-rOZsP}c5LV?ti0*S
z5?Dk<_v2aXKIo6{o?Zt!%JnQ)|ND=VEvPxkuAJK!%8 at bOB}binhEx_$7QZ&pJ_5xC
zA%%8+)yqvWYY*L?RgVtyt4*>oc{K^zssp={_i;Jl1=u^Iv-&(&yT?zSH~%OWq*Nfe
zY>-2FgL-gpuqEeC>zL^<G+s%bJSe>kRt^i#jx8Dn`%+I$V8Q93!%_ixeTz)^uyrG#
zdOeBCvFS_`b{A#rkrD-*$czx_22uL^b6?3XX!tr}dEFgwHII;Hz~}-_Do~tn`WJ_)
z!0u+=w7uHM%||^*GP_-`B7sbX91!=4!k~X at Vh)>i`0~8G0le)ccNc))noP8qHNtRq
z&}qBa6tLr at m&NDzgV60AjSYtgYgNdK(tAU?22>Xxy`gz?<G-d>M-LJ+F=M9D`jvr-
z^K&D8b$5=;i|Q(rVR=K^(v8}Zd7M4+4ESUrI0}{|8VAo=AHPLtsHb;hX at qiUB78rX
z6wVF>p1A at xq=fkqg!pDCp>54<mGBXl4dr*YLe&bCFMS^?wGjL|6(yB|69z)hL5=aS
z*+9AqOVBwwzd!j(@ae#Fqn&*Zw0OOG2~KvU(^AZ8)1_|+mFzA(l3duqSv0&JYWosE
zV{0>!@0OD#DqvOnY<ueLq+)CWIHv{1nMHCiANhqcku`Q;-gL3Rl>(-Cq7r?Kl>%8(
zuWyZ-=cOkmKSMic^f3KTm0JI~;m7cSCWuj_#PXC{!w#X3Lv9K{%x(v(dG?uY;%I#y
zjcPnlj&^%NZuE1w)@g|nfzg<`(&hdA1J0effjAO;wjoH(ZGvn`xuCT<Y}UwhP+M18
zZww7w4Yu?H5Q>lL at z6T3LwWDCuYlwy<kuc}p4x%(Rn-gfceEUqUKDxr&uML5S5;Uy
z at 0U=^^#D9)minBX(ew-HToDTIVYSXSDKep0_K8S;bTp;nty85L-+<3eDV+?!2Unf@
z>$IQ#fMzl|sIlW7)K><e2h=0vLcd~@GGbe|2?rsSfMa^z$kXPt4DEZV%~&nRAn;lH
z_riJhDYDd-yH~t>+36+w;ErT*!!FM`>Hd$*fzD0o{C^LXGQmpx=O5}B|N8^6|6Sp~
y5`eVNNNlWD%nIW3sTp8pz<)*Ze}M$9{%iNw$Gf5xvHID={^Y;gkM_gC<NpsmdvKos

literal 0
HcmV?d00001

diff --git a/lld/docs/index.rst b/lld/docs/index.rst
index 6281b6893cc19b..f5f9802fd974e6 100644
--- a/lld/docs/index.rst
+++ b/lld/docs/index.rst
@@ -169,4 +169,5 @@ document soon.
    ELF/linker_script
    ELF/start-stop-gc
    ELF/warn_backrefs
+   ELF/large_sections
    MachO/index

>From 089d11e0d7a74e2c7a8a3d2fbc2b73028e8aab62 Mon Sep 17 00:00:00 2001
From: Arthur Eubanks <aeubanks at google.com>
Date: Thu, 22 Feb 2024 21:36:44 +0000
Subject: [PATCH 2/2] address comments

---
 lld/docs/ELF/large_sections.rst       |  40 ++++++++++++++++----------
 lld/docs/ELF/large_sections_nopic.png | Bin 16837 -> 2896 bytes
 lld/docs/ELF/large_sections_pic.png   | Bin 16828 -> 2880 bytes
 lld/docs/index.rst                    |   2 +-
 4 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/lld/docs/ELF/large_sections.rst b/lld/docs/ELF/large_sections.rst
index 2bcb9b63faddb7..5dccb3373e1c96 100644
--- a/lld/docs/ELF/large_sections.rst
+++ b/lld/docs/ELF/large_sections.rst
@@ -1,5 +1,5 @@
-Large sections
-==============
+Large data sections
+===================
 
 When linking very large binaries, lld may report relocation overflows like
 
@@ -10,13 +10,21 @@ When linking very large binaries, lld may report relocation overflows like
 This happens when running into architectural limitations. For example, in x86-64
 PIC code, a reference to a static global variable is typically done with a
 ``R_X86_64_PC32`` relocation, which is a 32-bit signed offset from the PC. That
-means if the global is laid out further than 2GB (2^31 bytes) from the
+means if the global variable is laid out further than 2GB (2^31 bytes) from the
 instruction referencing it, we run into a relocation overflow.
 
+lld normally lays out sections as follows:
+
+.. image:: section_layout.png
+
+The largest relocation pressure is usually from ``.text`` to the beginning of
+``.rodata`` or ``.text`` to the end of ``.bss``.
+
 Some code models offer a tradeoff between relocation pressure and performance.
-For example, x86-64's medium code model splits globals into small and large
-globals depending on if they are over a certain size. Large globals are placed
-further away from text and we use 64-bit references to refer to them.
+For example, x86-64's medium code model splits global variables into small and
+large globals depending on if their size is over a certain threshold. Large
+globals are placed further away from text and we use 64-bit references to refer
+to them.
 
 Large globals are placed in separate sections from small globals, and those
 sections have a "large" section flag, e.g. ``SHF_X86_64_LARGE`` for x86-64. The
@@ -25,18 +33,20 @@ do not affect affect the distance of small globals to text. The large versions
 of ``.rodata``, ``.bss``, and ``.data`` are ``.lrodata``, ``.lbss``, and
 ``.ldata``, and they are laid out as follows:
 
-.. image:: large_sections_pic.png
+.. image:: large_section_layout_pic.png
 
-We try to keep the number of PT_LOAD segments to a minimum, so we place large
-sections next to the small sections with the same RWX permissions when possible.
+We try to keep the number of ``PT_LOAD`` segments to a minimum, so we place
+large sections next to the small sections with the same RWX permissions when
+possible.
 
 ``.lbss`` is right after ``.bss`` so that they are merged together and we
 minimize the number of segments with ``p_memsz > p_filesz``.
 
-Note that the above applies to PIC code. For non-PIC code with absolute
-relocations instead of relative relocations, 32-bit relocations typically assume
-that symbols are in the lower 2GB of the address space. So for non-PIC code,
-large sections should be placed after all small sections. ``-z
-lrodata-after-bss`` changes the layout to be:
+Note that the above applies to PIC code. For less common non-PIC code with
+absolute relocations instead of relative relocations, 32-bit relocations
+typically assume that symbols are in the lower 2GB of the address space. So for
+non-PIC code, large sections should be placed after all small sections to avoid
+``.lrodata`` pushing small symbols out of the lower 2GB of the address space.
+``-z lrodata-after-bss`` changes the layout to be:
 
-.. image:: large_sections_nopic.png
+.. image:: large_section_layout_nopic.png
diff --git a/lld/docs/ELF/large_sections_nopic.png b/lld/docs/ELF/large_sections_nopic.png
index 10ec06f20d57270bf5aba2e8c5f97e84d14afb44..4b288a88316c5aa7461473ee44ed8144b66e9527 100644
GIT binary patch
literal 2896
zcmaKuc{tSH9>-^VH5D at w8N2LzG$@g5LkwAGCL{asBYw(SM3|5?8c|G=eVzG|e5<MK
zYEYqw#t)&X5VE(R$o0GT{`GU8`#i6+J?H%OI_Ld)&Q(WyD- at pu9}EUV;jAs3w?^-+
z*18L^)&ENNAArI5MR68pglNyX{N2}-h$1O_R8<oxJmk=6L}`&MRd&82lW39rq{vBp
z2XCo7?^6^?ftTk+GpO00$Y&!MweOAi2#J;`o5u61R{W~+ at zS=_ix(s2?M7Yj$8Ho{
zSQv?kYaUO)$Az?<bxz<k-NT!FPE9pJhi5nO#wWvH|AT8ua5u1EKxUTzlXvR`nEx(G
zy1F#RHMaN8nqR9e at vlcao0v~2e=)Qi^Y7KWoU at Sd@;b+y5e2J=Ze?Msj2V4UgV;jv
zpqy!IUil1a5G2c&E`yT91pI-MaT+xC7`f$>A?G%zf{wseB7pOR4ea;hoLumG-|A)1
zq4JXl at o|N3&A3VG-CqvG4SNaTwawSi>X|2zNRKF(%CC21e-pFsSdJ&~9^)5;q1^19
z^a<>S+5e0nTmkJ>JGzvnrorpX*Te%(acVT|E%@R^OetplFbAI0&n`y;B(33Y|JEyh
z=Ye?Uu*)H)A?bGu+<h&IS<yDe);ThOXtZP5{uz82=u}D-?sf*;(r!bSa?IRWLli4Q
z5B?Y~H%{rRJ7)uAQK44^U69p2FM~9!&Dn2QdYEe@?taV1jf1(1;f}`>gOk>wps(b4
zHt0q$5&3odU3nPtchihA^giOEM9*Su^nR7x>*b5$oH?@OiW;~h at S@_iVM>vu827|B
zkci}UKkZBVeJHyB6P9ExG_zywse#bTCkCd^KJaf%`?9H_mHvPhI+paih?F}wP8RUB
zZriJ7U`V at L{PPm2PhhP0XSkuK>I0Qe?#v<BR6Ssg6?XE$$qk*Sk!p5660)^ywCK*W
z>pRjWeQ;+zQg*Ea=b81*jiW+c+aO-=T)s4V&|6?jr+!<_&+4oGF|Oz-V`$b9Csxa|
zS{9M3S$Ja1<GU{O{n$>XHBOt at WX-A%GJ*7 at 8gbt>pciuRYN^4*fV4T4?uo()`vZu^
zlfehHeUn;uD=&5XcUR>3T=3Cta at E{HGjl*U=pMFvk0s<sE0`#-N3or`yN<pLiVDJb
zj|m};2yY_^E at v`i%eC4j@^7_X$f8xmIoXc%W--%0vTpz2YBrizBOJBGtbpj0?xdfd
zjt}7b0!p-`)UGU8`<li(CM1!TKg{ac_xV6GaE|o!DiE07r~h79BaRLH&K%%9wfB%@
zXy#09<O#-kWoZXSy3O+(GwUkNslU$coRy_xc;+iw&=ECngJCXV={XN?6~z&}gc~{y
zZod<a at IYkfmq;i~yo&BgKvZrphG2BDXD*Hsi!sn}Xx*uK2fqtIstP at 0XGy#iQT)R~
zd!7bMY>^BJTePZwHQ=}qBtc_U8a(T<BKZh&7&j{r{YP$+LVHj<G;g9ngZwZZ&E`(c
zo78M(WF;DSlGvg_Kid_`a%R(%K812{ffo-!H at jDv<jWhL1(OtEll)1wMZPc8?E8M#
z;wB=YhR*y`$ehRjs1g5JdYis*_#w2qcbomK`{)-1PJ3Mbx8f at 12tK%a>JHp!VGay8
zH&!*Fgs`JU_HY}fZo<pB3~39|V=|oqyWE`~O{zoA{)+p#uHct;iAd+>YH1=f(O5jx
z-f&VN+B#RG;AR2)i6TR7m{(CgyazWtT#%DqRpNliiiPc^Gb7hMp at yVB|AxsB!Kw^P
zbe6l?L|11=5vSJ$VANQmQ(1+=c13BR+qXQ$wjCpK1g`wpY8a$*i{n%ZSNy=(taHVr
z!1GLnB14Fy3h0q%6me)cTo}{_jRQkm>D8rvLuE54(4=AsWW0e5cM9RkHiG>fAcnz`
z`DD2NKGnhJ%UJyBPM67Og-h-_#W}d-IAXS`XZhRHt&Q@?P~~kP0Q30!w_2|sY`wjm
zT-2ab^$SD^)-#2d_YB|j#9UO7bw3ZJ*?TlC3 at mqC3D9H=QILBE8j!O7I!@ODtj$k=
z17~SK at qtt0C$U~Ak~%%Pl+=H{?5fQD;LICtiu9r`gW^gCouMV1_V7eySk%uTSeJ8(
zrlUREu4*hheVP#yYN)K6>}uL1H-jX;d0l&NOKqz;w7R>u_NyUhg}6Vn;*h+Pi2MQl
zt0M90Y3p at 50*E{{y9+ipxAqRo<1K)xk%SvfJkY)-*K;i-SohZBDdInDYcbS))A~ae
zsdi>6vb%!{PjH&MJB+QysxMi1(@c)fHWiBShdtFIOS4?*o+|Weet^%DVTeV%8=@!d
z^vhfsUw{o<Xf}30 at c-};G;loZ;~f5$+Epuu7t46hwi;1qv{NqF{;#b6-?}M-$oOoa
zJ{^~Y*FYWXur~dM*aJidKQWy(Sh(?&nVn*D%7}W=D2w=bWbvRZ_T7-uT})?>W6-rC
zk)9ZR?MdsSjW+de9On)M3&lNqN2n@?m~IEk*lm{FuaKIqbFqy&Q%|%%gKz{VeV~*-
zRrNz+D at cJlGw?Sahpq#18pAR|W_4~7z|?&!{gaa+*%kg$II1OiLvc-XDfWXSr0&*u
zWt?}DhAlr1Jkepo3FcPEa>ICBzT}f}d^IO^j3Y-<K9yl8j4nSz<sFy8ls1FnP$8Mh
z7^{i9{nWZ*$5QwTtAiT^{UN7&0PUnwZ_cNM*D at 1}ET8!ThEU5t+SDTl?Pgo1<)Kwy
zt$j!Iev(_2bO!M<SXJz!a^ygw21>TqQcYKux*CmKeW1q?Q at dh-M)by<FZ}pr8Q&{C
zedHeNfw*bz++j%Ln;^u>7Zf#f6AH<T=Ba;d>kIqys7eMwYV;wqnq*GR4Wh1h)B43?
zcT8yEMwd23%a)2Ue1L#(8n1t63vhoq+eR;wR?B~atS!4nkKGLvhN|{nDbC5*6yV~K
z#U3-4&uVntGWIWAYb0f1tR!D%Eg!PvS!-)=#}JPDnAY+<g9U8opzOFx?C$klK;G_c
zFkeyF<yWcW&yzg_ZJ8xwJ)O>X;18?wg}$t at N*>{LLDX=P^rGf%`&iD_hPX`5V-(3t
zGuRS+`ZxkrR3#H(6!LlzxyH*8Ay?2hQq{N*lLo)~3Pqj$)(-nfEmMkCb$I=`uusgC
zRul+bSy-{@hoyhxeKlGm8oRhzp!b>`Bd at +MQa;eCx?J<7uJe|Bh+O`XqS}ciBQkDu
z9s0=C6c2W5 at RHE*3HfmLrMF<6v*^~La<GYdFQBXrcmd!0R(|7n{I?=K0S`p&c*aWc
zu)N8N!$(ppQyWq1KF*ig8lDUnCQqp0h=462u=N-5Gun&&uHF7(%E9?YJ<9dGG&kR)
zX_t%XRF9!GVWgz0O1`iSY~?)}QCsjpD$`#f+45lq%j5x#)VVg=mvwYZiv|%O+=Ifb
zy8g_Mfv`gNBN(M2O7*gWqKn!cwWaX-s!0pIsLsl^-yxFrt3Lvb*gfNM6P{+_xtJS~
zc%4DRsIq7YL2EIt{kE|Foz#c3_nyk`O8hT5``7nKG6EKiZfY%W{gh!iOM8nNbMM4|
E0p7AR at Bjb+

literal 16837
zcmeHudsLEX*FM at b&2(~_#;i=8shOHIvmh<Q!!&uA#>z2M^GKxvBcc at vDWXokm1*i&
zso}9CGesa1Bt+0oS_&AIpeSHAV#%q75ET!<hsxgf{nq#2x4v(!-&(K#$$Fmqu%CVJ
zeeG*s_xa!U`z~3ydLak|TC(RCuLB^^yfzTX{K*%e1HZs<tLPxmt_yp-b{#wwrIIeV
z{DW_ at rz#}l3-bcZpPywdc5z)$aCd#!`qi7v)~}r1<I;EbhY at 5|!!GdMzb@<p|FV9i
z_2MhY3ua#yU<5CWvf@$pGbywYio+>1?*>L(M{smzGXl$O%G=)>*b}r2nDIY<|FOXT
z+yZS)P3v^C=lAY_nu9=x%j>c-HiEHcpbXZJYp>WxTY*4Va at L-%{lEU{D2B5EGj!*8
z`Tla(69bR-w{Hf4wpe*TP)Lf+$34Lv`PO}pd*_2dimI&M2;%`z`gh;7v7=SM7BB%`
zUS*ybJ#Qlz_jteoLzU?vv6?^o3RnobF$B}ebA+T{VxbiW8?a`nwMaRcJ3;^#zm6n(
zb}S>(;4^Hao`o0tUt)zS?h3gxF2b1$UF{#I$~qOVSU|M$Qs#FCHlxxnPoycB#N}X5
z{*=A$m1dH6ri$My5~pp{UE*zEm)$whuazkYk#r+>xf(Arkh{CJ8dpC9s}g at wOf8u3
zsh>(76(@0KE`+Ewp({Ra(aRwt{nEryg at RZL-+YA?qp%|8Kj^I2-X#|MD4Cv0$<jwt
zAqrn19OWl9NRWo|UPj?LEZSKK#VC-Fhdohe-tkU-`R)&*ldnUn#cPIqhfc{0PeFIJ
zecS|c{xSXiav!zxx(Eox%8nsEFj6u+-KxPj!l<<L=K^Sn{ps|T_s#EQD-hleCC0ed
zNrZf*UeZ4Qm}6HOoIczgUHR(v-V2d{yGTcEg1jI6YUZ~2q~{8BQ<Ae&_LwswXKZug
z^rR#cTEcudss)MTH4nk*SCW5Hc#;VD)_Tn<t2P2- at 8qvU&&O`-!mdqwW<r}hO|Et*
z$dX;$HRY`c5*8Uncv5y&q4~HQY3vf%ZZ(7NwlTP9lV`nAU%ddg%_;AQS!z3PE3wks
zSkgHHnUzha_|Jc{q{>p!NTX;msfyBTARsPhVZ2JetADQ88?@tjdj4n{M+KjMEWKv<
zfb}7Mk!$|+ZaS@&JDo12(VXv)YM0RVs|Yj2NUgQ!cbJ|-eVhrZkn79ohC()HphjN7
z;2z7-3MRbXUlwUR`D2C|2$WW{utD;qHv4QzpW6*oh*y0iXf~RDRR1Kv_!wN7gWVgz
zN~P1%$4zG4k9t<OoZXGc8r%QYvpeBcZ7fgk9=GS+UjAY`xv^!P#9gdq6h8CmFQ05A
zjj08u5B9mBG}%`%kLd61a5?VAo2#11+m_21_!E{FlcKb|u=#HaNtSI|UKtlfuEI7=
zu>>#5Yk%M+U4ClW+|790^Rh~cJ1PzyG0eDyUE8UgJzx#v7kSMdr*URDbze};nX*+g
zU78A`K~o!D7$steEnJEo-_A9C+wGdK)Y2#Cyc`CWcBeX=Ep>McUluU(N+f5=_~oHw
z&}O~hWcjo3hw9@(SveJtI`^vN%L>*{^w1a0%<LCoJEzsW^asbje7BB7An+H9KM%Fb
z#il;3zp3e7+j<K{c3UfH4{2;Xt2BzlVr_uuz$p}cSeSJE>Fq;J4U0ga`k{KFIL5=4
zoxnRO5RSw;tQ{?vlBz84L5kIqxU*PieP(7!66N%}#42fP$>by(QL!A2y|Zu>)qX6P
z`TT1|4Wgo$6+$n+j%pvzlQM{sJN0?{Bn7Pf;$ZD!vG{rA at cD+n1#i4b(>Cqa$!J8E
ziz)0Cl)|}RQ+Cwp;tXEP?jBsl27zu}AGPTzv8<216Jj0NZ{z)0U at Q=5+P>boR)W95
zxIT6=(*b`Y>u{avL>yYnn0JihH(AZg^%0Bw=0^B_RMqE?h_XdTU*}YRe6&}wf0_E1
zG8!Vmy at ej~&9c3Prfv84J_Or!w)}vh3K{==^z7(`USlkm$m)M3;U4hX5 at ZS%@sM-y
zysnlFm>D4>_v+lJKAJUXk%0!@0Ic=L>@RL~0$!AX9$Z7*9_vxYdhkl(6ZrA{y#obA
zTC8ok>#>t)$Xv8vKYD>!4EMOi8hRyx&&{;=i5{{cwu0!&2Y!?+qhx(WjKh8gMC30Q
z#8#98!K#^r$~oZu+1>)v7M33$<{=;*aKV-q`fqb9aHP64r9>#m#PADLwZ*4jRR at Uq
z at Tf{x<15Kb)!Y_N at 2^NctSBXte8gkh=ghqVbC+j?Xgk+{o0}}>R@?NaXTFOPujQGM
zP~m4j=BdMrcK9nO#93ZM%t<sk;Nxyp2xeF6I^8YaMjvt0+PP8FPAGU}a3wDSdlKz1
zXBgFj^eYo56dQ?wxm0x0+*;@F+ at U+ovjU4(MwTv|d;j#oyWwXNE!%>=@GqR3{!-7^
zBVnTveif+Ky5}1|W>J>_bV5*RL=QZK at wx|lHS3Ce88IZ^dV8;3>`cPIqYRVbO0VWY
z>Y{T;Pmy*ikk9}xo_06U{{rxg7%~e^h%p85j3w9tUOHS>;@bU6Vj8B>{1j>n;JAk~
z*Zj%C0Y>w*i|pV3%`%<qdL4y_W5eWhoO*~@9OF^x`kgMDSB)2=`lc2^x_M<S;<QO*
zX>AXC7?C?hNH3W<U{I1N1Ha~*)?z*QCyx!*c1Hlt!3LIspqP(m@%+Jn8~mBPSMiKk
z8A}yQ18uD+-FCe|?3rK^OT8Q}TDB=oS$H0_eaV((MvThV5-nmbygai>ime9reCo at S
zoOMwUZeim)iA87Xwy^K;hsD9O(=_CK%^3(Ye=PCMJI&;UAD-ahz$nllvjB?)YXkXt
zhw2*<QFfHWtmnY4e|y*)S4Sgu-vM!h>1i$LG_-;$q(-vESRu0Uq1~fYr?6eAoicqD
zNCpA2%E~v#+73FVsAOw(J;<&=1SF}SPb2Yv6TNlEb(N7&u#>RF1uxCVZH1E!d5?A`
zT+UAtYq&a%q9PJ+dGB04)pGuu3Lp-&Wt^LLBQ7A?u$UMPspLl_pZfjpQFlc+qM~5p
z at M476!BeoNZ at OgS!lFT=m$HNDjYr at Z1II?B{M{tNK8_K}4gRL>{l4beF1=FceL<>(
zbFU<0>p5<x?DtzzGFo8 at XH(X`8fAqJO+Z&2B!o4#F*XLOe~$nBls0$KV7Rxk1FDz6
z<KlZ-{pG{pR$j|Si3N=N^?lsA9P?A%Kma=2cHb<JL5wzR6E19%Pz;kKRN!$9vXSYZ
zGiLicUy-&$B3ELGI@&;Upe1*9rNbF54?d>H295kIUfK=O&y07I)T`5ON8xK<=GNsS
zpspdiraXn%i`4WSRBYOE^#Usb<NH}P$>r>)*+QcY*~IRcs1nzguOz`i+V5fCNx=Of
zKBWxm(Ca0{1>O!<MUYJQ&8Y|%GL4xNCQAKTLFY6veM;{Vj?rJ{cSe)+!`6_H^Vpe0
zn{x-z+E<#5-LEC13oIesqmn!gqsRC_-aW7#GZ6)K_%y39nwkB`7r|YDR-AMo|IBb1
zPC23A2;n#sV${A&vyz;6h3 at 3iOk<Yj`zlG9c=Yz{;Id%+^p@&1U#VZ!C*stF_7`Dm
z9AL%;LfHfXZAey}Bs#^UedW+- at b!k;*K)gGvj1h51<{7Dg+&X*#v&B|w8kk(@Fo^)
z=xo^(w(OmhS4u)(JXwx>D1=KMaii7;y|G=PUOdPRGmrF+x2a~(X0iIr()(4 at Q7Th7
z{@iWNmLTh`Sn^jBWZrfN&Ni|iCMaPg)2kagd`qR2=o1xo=m}K01siEC6yNe(Ip=(^
zjs$)iXM at DG{#+i_ at mI@1y)Clb5Y}~g)=9 at fLX947m`vVloQyN8Lc#9O95tOpldln0
zv2i&r%5YzE#}lt#5y9IZyRFwzdHGf7n0FRLwpVyI$5QPFyb&|^24 at v}1js^?RTL{A
zk1TF2X5kfAkR6iepZg at m^VdPP3(AfRiyYC3ldGG|=MEVkicKt^NKq_nP~PyezLwo*
zA4k4JS<B3p+NY4mDQoX!zo;!?(vFaUfR$lpv0!gcN=JetG%Z>2tf2u>EjlqA))diI
zj9P_pL{MY-j22drt60m9tT(;0^}{=*H7-tdeXad at PP`)y at fq|W3PL3ct%r5Gxno9!
zjO6F7yV1V{SqJuf9>fR;LLUmU4(a(km{AafMlvEPHMAoRKq+IIytGDei84dz9KW~o
zx#~!{ZgRHWs`qzXG*b{vh*CV at Ez5LJ2Kp|su~EOew)6DOytO+$BtowwuK=4M`d+M9
ze5>$7OvvOnI?aDGTt%RmpF*Q at rQ}$T;^ZUsiJx<_hm|q5tJUY0%K53^>2C8l;Nr(+
zsUy;^-znU)6cf4w9AR;J?7$P(eTspX?Lp7My?v^|iiLxjkP(~hSWzITa)T&j5FPTe
z0pH164uL%$IC+wyeZ#YXbU#krCQ)hd5P!kIT1l(*?w8!NwI9v8Oq&<HBWTyb=>RP*
z>KYq6%xjHJ>yIRt6DkW_(Ky15g?%B2G#fQna_sdZjd<Gp4%SXqFmV(|`TH3Xh9A>Z
z^!qvtjY^o14Kad&NOlZ8v~#kgPh7bYUHl^UnH^idRMP>WoqzH7UzuQWr`wOZvpi;%
ze%b+II6tOM9Tc!bb7uYDW0Wm}FTNd0hrsfh-s$Z~mJfmkMF%96zTr#pHM}H<e@^gU
zq6;tTkJa_P=#ELd2qb-pF#E4b$#Ju(0jioPbP1}9#>`Mr<RMDLj<A9VwA14?mgspk
z7#|}f*eoQyVqG&T>G^&sUVmt_9!ITyZ1Ff1f;q>VfG~4Jt#)}XY~vru*#!N(^LpM;
zqr+_Fdyodi$XyN at WIHN2Znm3eAUQf~$ZMIJR*YeSDjl)+F~;4$o at N%&Sl~<whZIEH
zT?l at _uW$Nn5;&&II86u6q%g$L`mXCUf~2Y6ri~nD$*NX;=7q^!_ol1(vdXv-scO-`
z&U7{I at o|`=FEzHiBTwRoE_p{jv at r%|jc#JfcB$DvEnYN84EtOfqP-s65IOQlP#+8`
zehc60Y)mC14IXho_9eIK&I{rFiRG>_#|m?AuM30a>~#jJ^{asv3%aNa2TT4?ms(y$
z@#{q3zrv1&&p7BNWDG8>ovH=d6($GKms}YwADSf8^-_nMAt=i>E1sK&ZVc(yh=7I9
z5>9Hlv4>Tg^SE#mfc;<_xn~@ilvtN&>k?O4Tis+gniko}+(3<3eUtbi)GXp*A_o>B
zXL4`I0;hFI>u}BwV-X<OItjkr^FkAk33rYY4>_DQzrwGk5ls{Vkb!Tdn5Ev}C4y-y
z8O1y8YpFe(5|V$X{~&z1?tI*y1iiK%L?tDU>Mmhr4OQ8%?Gq5ez!y42Jw16VD!i6Y
z8<hdJV?v{G$KN@>N8j_h#*Y2g at ukfQ^zJ%h&%(jKsmP8cJyafn at fmB9g0<PaUF(sL
z$mu9OETtGDO5ys*jS|7rAg}JJG&+8^P8{s((6emcOI#Lg1<Fd)-*-D#I=u%5G2!Yh
zx8f}pFpeCUE>9Gp!pR`Ot at L>bYC(jrdQIU(4H7mx$uo0c&S)_Fg`TZ!tsPkYS^^Z6
z=<FcK9az@@R8sk3tFUNW<yUH>h=(Df?*$obpAphd;QXhf(l5L2l(5 at 2cso?&=MLYF
zkH)1x6~9ORi#PS(-{rW`W3xoK3z8(#G~z3babt!;p+G+Et!O1#(q2lhpn}Ji30-c~
z^$pnHbgE27&<&{ws+D?LZhrwK9>IA*MK=ZWsGed5R at RqRxf6CL`(?@o7M4goI%zGO
zk&YTt;^<WqXM{6lT`_&_nwjgLK2RG_>g16A at BTH&ekYZ`B~-pWlT at c`bpqh6bS|~W
zn!HhlM`Vf8yKP~I&NU)DN|W2h&6OrhXv$~yCO^>2`T;6vNXQK~Ycc%Wt5L0&VmBAN
zu9Ym-Xci7O`mkvyh)5VT(65GOrAFBmyKch#Ez_TPeQ075vzWT&Jzo7Z>SV-sx>n&N
z`R^Pa4A-i$YD09kG~wi%HpFa}OEDcmRJ*5<>^+L>LWUeZvlZ)jvA7(7%ZpF#078rO
zp-_wu_Ev9)!1x1OFajP0;+Yk>XiyxJR>;E8iT%xn{lbL`3#_5ud0y%%Ew>9UxWe*M
z?2~es7L%qu)YvpA7iT`Ye0$xYe~hBATA6V2^$pS(`=q+je7ud<59yX9cVwpvrs#%b
z1}-C?m%2l8 at ikYnu~|b<-6ZtQ!PL&)$Tb8Gg4Q+VhRF^vz9u>PN2zTF4>UGg at dxa6
z=Xo@|7&u`aaf*pf;yG`&VdMQSzwS9`(ykeLrF1tMc*PyL<=Th0Kpx==BGKPh+2838
zmgng$+ZYd;;RUVB9blgL4TsF!=3v8z4^uIXqMttL?3oRaH`|EaUif^27VPWWKR$X;
z2rn=k1kE0&uNwCE?mtW}im;P-o3%L1A&B=rXi)tQY}=ePwg_w5c9C at CoT??-o6`?)
z4ZMd(#pdJg0PE8~Ri`ZxYABuyK4HQSj?>cv2~iTLkYv=@SWv@>3auHjxcwH0yU#GO
zOgcgg#SdSO3|EgwRN8s6Hxj<pbs-U7bg#LbjHBZ#pP at PcBlwu`*?S{I_Pq6Z`9rrw
zt|-LreDE7lfOloSOElCW0~J{B<n3 at Y|9sP>iExPL1s8TWEd82B7PdLEs|Lk-_ocAN
zs~cN56HmW4UQ1jK(dLXHQv3+tLI3>=kw at A`p-}PXLC%X(BNP)vjES>|)>i1ep`X`k
zYKi^!F=Pt7fcztOtdr6jE}5$0p`wRhk#;V8oePkYON4?MiuAhOO0}Vk|C7m)*UdTd
z$1wT7`L6;eTUqgpwQBQ4*3g{-vwsQBwo4V5JYGH++HU3YL>rq{z|xJI&ofyR^`4Ia
za1U?f7Lw3Jod3qTYT9<;pcI0&^8FZp2VWeX78J4e(LJE+F<y$RGW|2Gn7o4vQ{3aA
zhTkAzm`69K7e^Yas~l<E5W4*3`AFkq_;&EWWwE=HHmfMDlPn}oZBL|O(Hmm8#S=*i
zp;Uk3EzciP`M9iEJktzhBr$(rJ9gT=?iM`czgZwjj1}>i;8`n&`ENIZ{j;%J8+H at 8
zR7yxSOe9E0Iy5c!zka0$|J&j{&OM~ge>0EWRB~4h{Z{8m%+Hm`iY9^-BBC8aW<@z%
z5dfm)H?UVai^w$Z8znYopeMEG=83eodi8&dE{W`qg!tzEJ;O_kzH?zBLI}U0L~*Uz
z+~xJ4D7*h+<U^`3P%9JF9~p-sbFHxIS#X at w!a at Dk|7JbmBy<8pCM}_ at LTA=5ClP3#
zHW5J}T5$t=$7G3#-#39`o$I!+O7|*pu=SxJ6WAfv#8%j-rSb#5w&j0L9H8?XJuXh{
zqTfqVj0(B($P_eC&j68zZ{o>-`Z$wO{)1$%)+Pl#k|jbob+73iHa8vBH+8cfiJavT
z25!B0Y>2A%k&gHw(um3a^}KIkRQ5<MF|hsDx4b|9Z7nGFFZ7w($WlbzO3KT;I?f3%
zaTMY+ah||4zv*p{s=~tC;kuuCG6JoiNtCZ+kDWVNX(32uqsS4rP>4tWWmz7Q{Q at z-
zb#HnDgWIk^k1^#@BU2s at y1$U#$7fHGO1+I~jK$3~c(T%cu)m`-UOPdup&j&o>uM?i
zO>zB0j{X$p|M&jYk#(&WIfW#CujjvIwF)_gr0>7`a?z&C|CVrcfuO`CCfG9gA_Mr0
zz$xnXH*0a8s~O*aANST!vs3{u6GH2D^TbTg>??1Ko!O}?;W<F^J0lJs^L_9bf_v2R
zqppb82o_rp+>QG$Q`duLVibNR-a{?1WuFKybI=v?a9~<zi;FH3V1+_dQo|^Z2GKrh
z`Ci9D%2B>rTdavC{b#zKg3o``8oP8<vcDiX5@?%rC7~^}8ul*+)^nA%n`C)^cu1(J
z4ILtuEK5sNAR7Lj?lTdhs)LXP`eWaMdsJVzJiU{STJiTyjhKfB2Enk;qaLCeo+M*L
z<6ZrPKUOA;*n(-+i1qHH73rO2 at DUsI*!UVw_diSSb`2N$Jw}Oq*t;P5(3EKLU-dse
z6YI$4<24PFu5FBg38|FkR5p=D_n0|B$E7A(J3LIR)doNwH`@I=<)`o<>I|AAN&mF<
z2&Rr#2r=X|^&PMbhvheYZ<ryHy_L_xDvSlZRg&WAJZ=TdvQ55vJ9dBP6ke;lM%)lP
z;}o0*dV8N|gEy3cb+Z7W-8w48#nY>M>OYo*rre_`hhkzBzY{HD(#j@|0ok|z;b`MI
zXZCp8@#t4dPQd&(PSN5ax=czTzL>mwKW?e1Yr+<4!qqFQ<JjH`&#LME=NGn;As;L4
z!UpzG8_%-JF^3X;lDiT;_7)&!VyTwO{vT^y!oza86>^o$p!Eew;!}p4ZJavI>xdRt
zKh<YuH`8RRxIv0VM6!h@>kgcb4>n$#pF8J*Mae2ryRY-S at xPEzGqFnJ3+X=J6hHQ+
zFns$1utA>^;f#q;L~)t`|2tYA|BoQQC#cuS(-}kWBEua$X~v2QSF{-W80ovA=i;l9
zt=!+}eScXz?3`#rT)=KS;27GPDsHFF`66ReG;`tAE-wda)C%<aTSXmQSKSj{($PCd
zp280mab at A#b49++C}`mPH%t<GORyMTTQ&AI2SCwWEKVa2ti`0Ix8mgGRgM8#d7$5Q
zt&n{#axNdovGb&j at PvxwpB3ZCMz&oSa8OPvsv51WknAzNPc7;E(ylU=7+b`fXoiJ+
zhd-z|D|BfL+sFS~#O_OiIVRb*LL&s1S)p`%-29*T=8gC{KanhrHpCG95E^3gaeCif
ztv6Jmcp;S8l{*$nE1P!18q4N3==`uD9CC{B<<n at ewsY!7-D93-jOOe6)eYf~zcH at P
zp0oLlE!cD?i~;C<%|4#`RyW22=$O10q3rO!Zzfj<&%xO`iVK!}g;Ld&-EV(_+)Jrq
zX3OnQlUG*MQAFZfQJ+>Pk7gD*h;I*vaU;5}pj<JIDC#hu!DAIc6RnJF+L6Rh7AlBl
zx>VIIsf~-SlU%KHsjFK;j(b at rX{&R&UAKhNMD`wYj{p8+xn~&dy+{I&tbrZ=&IO|q
z1?=|qg{Iuh`?ijhm6wm*7GM)_(AU!O5?_Vt-TPrFhqY4Iuvwd}aj^W|;KWA}hg1JZ
z>c825Z{{U|E%+_2Iw`=tJ9PmaT_W!>Kyj71)X|OzKbY?B`&!`0hgx6^tFo<NMJrs1
z`946RPE<T5hQ|mRPB at fv)Tmzh+#7))EljzJ4IF~P<lpG442iJ-85;{6a)+3u1IgP_
zq5iP@!5 at LGXyg`8j+kL~k-+J;>=kV_f&ov-g`qDaM}H|R2`x*Gr~lBTXV^V*qv6yS
z8&1IE3F;aW|6m0hXTgt)HcS!wf#%7?F?yeL^kq$K-s0&y%wQ$z%17et7DCU}Y$uf~
z!_GXf&!F@@NHa_QNl{LOA)>DI6(k>3I7kUeKJm50j{K8o+WDr&W2^&;8X?w-DkpKd
zaQk#?%2zT0d$Bfmw3X~_{Nuh74C_vH4XcznVTO6NSQ(%DX7<ZD;HB!zsj_4QT@{r5
zfH?q=4 at z7m`Iwshi+JXARDYb`)mc}dd(BEgS7X;w at lGyrFl^6;%1*a+K-~1ac^ET3
z`=R{>1a>S9p44ii{-Ufw;(P}N5+~eiwNmqXxzBtYuEJ!fa0-Yz%+l+lEzV;TTR}DY
zJ$$P8Hp0b!`lp)7u$a0&K*Lg=vg0s1Nruu3F&$P<?R?l+FB&DUtF~H@|F~tX<iH3F
zsNOufO`J%{GzX#RBc?x2bq=;2qCREki#8Y at rLLD;a4YSY-SA$kU?Lju&JN*(cg&ZI
zgn~S^seDVli86*M9EEuz))Bhl6i|Q2?RAYjT9u{13BZ23=f8nya2KpyWipJu<WcXM
z8PE4^KNFmhl2=LXf0b|Jex=^j2T(%RQ9UDUe!{D=YpC=f8ae`0xn4KT8#yY*W#Il{
ze#*JAA-wCk^4xsdQtLD575^lG?pE|Hz0ZK^l6}<-FBS~c$}*-Z`j(VKlhk?weC7s<
z{hMLpjYikdXuUHiqZ at mHt9T{3t<0AO!eut-;slq9fAVREU#$ix0YU^#{k3r6pyc?t
z1-R8ty>}4y;1;NYKWcl4b&NhVW+oI=O(!cNrG!}Q*<&`Clf}G0gn4f#jwp(R0vqbO
zG}#KZfr?KIgFV_0u#4 at y4ONcTi0EA7>Kpey5|jKq at FY6`Z%L|DQG at DMQgx}u`Nue!
zledvtqd;RkrjQV~dqIb8VzW0Rx>M`fH3F;6L8+C!jG($V0D}q^az`L+BQn^Uo%GEC
z8~>!g#?6f}4DQ*DA8AURD at --fTP|5lhNqJsNiRuaQ-Z(gUb9-QM32((0F&y6;1;k(
z$IbERf8k5F1hK8z+q0UM;~c#aay1nobmwwhPer>%NbK&Igb(#`-1W}!@7Wv^EDG!H
zl>$u~#nrd-6}Kw@^7YYNsjIYMJ7r_ at Fg6<>%0d%?6aOiE>hq+5UeNucte1=G`%{do
zn^w;iseA|)0Giu$z-Xda(`XOoM$_d<F}_g5#25)X7BAyQ!IL~rr89Pw?;-3}Y~r}A
zFcp{Y$$vZq>r?<R<yiqxHgh|HQ!l$Ru}iCquF}h|{o8X;Y<^boXCYg8lPWaKY2Exc
zqJJgz8H*<$AiJvi8VRqJv5ht6<7Eva(X3I`XmcWNKfrUS61W>a1$uEqxb at MV_Ct(a
zE7(jLfwNa+pOIKRvDcu4A!b~|%=&Sqyb+Q#aALn=4{;ve5V1oi;3YQW)0V06kymjR
zpUP~;G9VE+)UCTXdh>d0h_|S=J-0mfl`^&=*ldc-gOD8WwuUIq5uF}%S{&YNN4ZJZ
ztvE|mdPDCwbDOxnwSBT~`2MWmO?Cx9zj6c7AF=e6Ci=`=a&tMV3f}eh2J%e%ZE`Hj
zGtb3g<}?o$v)PLBqb!RXwF2NT{gsTu at FaD5A7MrbkZ^CtIBRteG-9js*zVmSn`Z@;
zzSbR#lO^8)->dg`U;4Ru1+{Qr72AHwW2Lo at b3@|*^e(yIps}}$#A%*kutpCPCpyX~
zoP6P at S3{e-nYmc`TVdY*odmHg1nt~!>_Ij at DstBnKdteEO2iB0;FI6oB(TZlxAFyU
zP~8h&O_d(yD4zDB$1<$6l0%gMEh&fZ7okcg4$%##{UT{ZLo;)dEnA+JNXMM<mr4WU
zUh7onzAo&JtyrD?f-wi#<48bP#C<wU@%hU|{a)%*gdE;- at a$^JFJ!|W*b2&{<^%Mj
z<2AzUy6B^^%%NP3QXLQU9vIRRPvXS*P4yE1z9c at L`Y}vCi(f3)x}$-*(+bY*l?H0R
zfzfdmpRk)tv?|J3m&>c}uv&k^CAfLN;t!%YmRmLvOgDJh6|s&h_CmE$0rRyupdOWM
zC()Q>U`wN|Z`quh^GyR&&eD-Z?NrayT72BOk;%!`ml&TlYh1%;Z=CE#8h9>UNB{Xz
zQ7VzKcth;cRj}TwxCKf8!<~*3H5F|Z<Et2{O)gP&{31cCPU8+0-}%mkMypA{uF$T+
zqk#|8{r<yvF~k=Y2O3$<fvFAUxNZLVh31nM&9GViU|tqEN&S-FU<xYBOf4mNp48~$
z at V)U2Klu15IwY37W%4KbQKsyNX(LZc;(tSJ8o<Kh;V}O`p>R_1g3|=-$v(c7n7oJH
zr{9 at I&T~t_)Nev_57Jk?2zxq}q2Z=54aGt(qBdQe5`xEGKOhZc{{r+v&bAh at Aal%D
z9p9GijGxr-Hg;I8c(n=8ZrQFvZ&cx`EPr9dkI}&53u7Ly;QcCYMV)nQUe1e)Z##U9
z%o3I#{rJK82~wjDIWq3C6YGwf=oAX7spicK|B_r*1qh3N?k;oIwIHEM;#NNnbH-no
zw&mVG5piEM6FW>uQdDmp$UrteH!>NQ^=ZTqpZ>y0Jdx>J>fI8mYQ;ot2XI{DC-(x5
zZyu2B6mMTHGTvM`D$j9&9%@Xs%Wb;M60D<EQ*c=n21&bia<xn5oX4+l#-di8DDO$h
ze|yHY%t_}<+<*XZT+6=l2ICOYR~F$hraho^4?PIG at AD}fukA=sS4|c2_O)9DA3uxq
z?RlQplK3c<<2T(b84Z&{e#imP-!F6VDePS at B~&7L%$$J+Ha6*5 at Z%^KCOip+H2`>=
z<E#vCYz<_-;-1a at 6ac5U0*iWwBb775wMr45t)EHYbcAblB0MLjcMD25<_oOmW3mDK
zB3~*w&ca4fZLXj;C;%N07CuAcZ3m}+g&tAF-s&SPDSh}MJoB`A;)Y!7&^x(n*hxhR
z<+b4mrDzp9Nt95|3LjyKR<$IpNJO7?4rKo<);wYOy#x0?;-2-Mqfp3(pX4qHF)sid
zTH%Iy&67gXD}e}5%>(eEJBH1B0UWAGM+{Z>hq7#Nr_(8Re?Rx^H2>q=rrNz8rxGm{
zFgx8Gbu#2b&4wyY2fmvZ3$E!+Hca+>en^`)Mqsk_0Ni%|h at I1bCZ3CXbCfEr{mn&T
z9+%~#I7vc5MzY2T)Jv{0Cv$s%YM}cvaHNj_Iv{Q#pl(SbF7Q#xGXW&66|AIO;cCb4
z0rd>*{x=`|By%FjECO;qF;|q{*s}HP!yub<-3y_+XP4VmoWElw#pWOBkY+8vq2Y`K
zdvN+>HID#*^HdWX&<d~kljW@#fNEuK`gu8*z`l7-@$3EtRhdSf4%S`}Ek0&h=gdCj
zt#U{)1nr8j-Wcg1`MQ6RZ>cMl#`zi7ZNu)i=q&qA;^SxWT2j#~y+2x)KgyFz3MV#h
zb*sb)fwq=p)npwICI9g+_$Vz1G`mBx)s at iU<8azS?IGTOFX($i<Q9o4#&U19%#M<t
zsZ+I(YRk`|AnQfJ(^x5w1fE?%SxKFt&QM~X<W%gU#cE(VW0`sC7~lH(y<ZWJ0%E71
zY5*?P-?B}g_PUo((j)kzMIqQqc_GV}K7^}xLDb<#Q~P|qN_W*qX7 at F|?WL?cpO-au
zE4(x?XxG$T-X+NP$7N|F<)tI9kh4WE?eg|Y at 6e9ef2>BP>Og5TceYB5H+w1#S`YCF
zMKL0+j}bDnT at u<jy_Q+zFNW`H#B)oNcWqKk_iXHc)=P;jLA`8fecS>G+ZCaW5!d6V
zZ&kV6k}M9&2zfzxGJfwL>RO;}{>dxN$FCfZZpPAQ>ic9|dwRlhHLs86%N`MCLM709
z;!Z#jAQx&T4sPmL)rd#Q8t{kdtHx3~nq?2Er^iV|L`(wFRo6)|s=S54U&a^rO(g at E
zXyFG;w58QP1NE}Hq2w`TrsY at qaFZc>ED8y;yzhM9SfIgJMv-l<>FNMlh!Oj2n{g+W
zyn_;IloT2rh1fr5PANi(o`N#;u!z-Tv90b=nr8f-m-=7y3s`NHQ073fDM7&5KZO)*
z!^n`<-}cn2&4h64*7Avyi;M47Ky;UoP_N>WjrF;W)H}L7g<6=mH|(9y{=nOSPz2uZ
zR6Nmzob{0Bk7+|Y4oY1x)WUFa^^7|1EDJkc(VVM69s1^D>589SNy(@7p#Wa!60s5?
z`wH!P(vt1mi0_jT(pRWasKD#3T`gMx0?Z;h*6LNs3kr=AS*;|zDA_t?K*E?d3v2lF
ztcLK}{eVV9Nt!l_pac4}u}UxFwT_DC_<;@Z1kbq267P4;@t at C4iOUTh9LsN-=;s9p
zvxmg+yc~c;c_MR%=%d~=0JNCfM$92?itG0hq5JG=bwx3p>Uk%#N0r|YKH?#MIwtn&
zzoWtk({8;5n5@=xmKPn at n!l3a|9IvVs`rbz2rF3#NM`!+KG47GvImw|O}D+=Ph3<#
zFvcEYQpMAObj!)rV`t|ge$!Ad1=p^v02-cMQvc4D?<FV3Q<&oqt|;CHhd0oUxPS0m
zvq0xF4ft!whl!SVgBFYTKhtkM&IyTl`1irR*JwvRhNq0$5 at 57gp*GJ2ntGHTD`ccL
z7X>5^4+{fTs2}H+S2Eg5(VdfjqyD0PHwk?;$olu5vtf*eVDzmZYjn at q@bHHRjjKP+
zI@}PB*qy$mG5UFwsg>)O^!$Jg>tI*4@{1c`V0Y+FRQi<@u*QK;&+8lTV at QOToqL=X
z8lq?-j>LKt0`l!#q095;2t|woGoh~5;M~<UhtT_vs6-P_fp+fU)FVp}T~o*Dm>N%8
zbRdNpWBVuT0DZWp^avDaLhf{t$kQ7qo3u-ac6rv~*O!U?`PQMMfEnxWnWR{e?V2En
zJc|=Pl&S!v=iQHh!hyu=2V0yUBUnVRk}BhixiagH_H7FXCvme6?i5tp0#v%asRPyj
zyUKQz`pWg)?N*AD?L0ojzbkb|*sdu7PaZ>EhAujm7+=G!5I1biH6P!74HU%(=L0Q7
zOCU_usa>#IYf47#S}du|19ORYiG*$rnt$BpK7Ad~QF#v4MjUTGzB|5^ThY<5byEh4
zbbDQMHz1ey#GJxWfQT!Q^>i?{O<&}o2+mNLXZ@*D3Mw%(T5UdlfN1nKR#*rkFsCMP
z=@s2E+$YnMPh^bA?NoUUx9LD at 2q&Do37`edL1dHg4&4E8TFjuU8ueav#leE4mjITv
z%L at K#He3-vRKf-26W*r2*GX7lQ#6bQYzA1(yxWrzT>@om;m-EDfgdFTX)C|%E6Np$
zvOD+1+1Q|~!FR*N+%;%S<8l&TVpuc?=(tv>xjWYaQhtASH?3>U6X|v%hWEEP(r8&#
z?mAtHgoU?;MAEd!?`ta5)EO=a1Wg7SwoNa4DQjQ%0PVqFk2ezcTchVuJK!=aH0xdc
zPm{;#r&|`jQ1^<JN%8d7**hRAzbm1Lg;fj at b-qgG?Bj at AY-ZY@Z<*3*3$>(^4ff10
zTuav&jYxxj(I6g+X8eP2V}>8M;Z0oYuQWo-XU*;YHq}Atg1*X{=kVY4BlUI}n=)ff
zU;9zsO2O)^y^heM#@ZjqK^HvIQjeH<ta2b2$(q*2P+siZ3TDUL8&F!S>gu$c0Z?rE
z28m(ECJ7;Er6FipL?dI`{1o;x(Z&??@CqTf1D%2fM2&li8@!FS(H*`<PSM>D{?Xr%
zao9C}qyb-q^o!AM<=#3!N_bJ}ReIOWMQ0 at xto8`ngj;qzzCH>BBVc!r+(G&gLjtvj
z#o~x<VY|Xwskz<laV%Y&78G(kLi at G&f-V!R%^!20?63tSirhw at e#@y>NIxcuh*i6B
z7r*y}wwUJ^B_-A5ef2A at EtGb~6|u5*xCA?8prY%zJI~g+TnpQWjtGJUcI6|wN at x&3
zh(AOJ2&J<zPFaP9G>6KZv5N7Og at Y(>BZd#ukp3Lq^uymk^FW|*-Y`V2nqhl7VoXb>
zfvERx!-GQt{R)(*%|)z8gVJ;LfN*Lzz;mT%H(e72k{l^in;U+7Td`sMk_H3ZL}<ia
zB>zY=jv6XBAyIxR%Qg_Gttb%E=Da*&K7Zym&-+0`0~fdq at jR|ob(53&eb^BoGvYGH
zHwnSBX9YFU)gUVFT>2_<Vz537*&1TQ+y>kg(AuagX7Kl_XBIO^@0h;o{vMO<L07J)
zSly9*NyTLv&c$wAyZLLi^zWSlq at wo_%q#*H4uyt%w-fqvU3Txz5vE3)7#GamA?5&g
z0(v$JlVIte-*FL4rYxS7Di;shd9e)%oH2u!Lwt9U>yMa&IDfuJ_d8rE)xasfdm9LQ
zpx)rRjJj$vfKRI&{gwrk?(LB?WDm<-n^66MW)X2sj3S#5nYB6+P$m4Z)vcek at UK2L
zD`-o)i{$gLj*iieZ-b8DBk07xCT005$t-qQBrjJ-pbJYPscXku+1+}4k63(Sa<;Rj
z4kfQ7FI*8D3Pf^Hyn}uQUTzUF@|l=7v=*57I2Q at 22~jb661sa_ at abb;OGkFXk<KI8
zO;h8qiRT_lw29&af2C|UYy<$Qk%PKaKZEB~OKc00;fkmRFgsPr+sB3#+dm<red~FL
zE7xO+k at KfXko2$A+T(}lt-EJa2i0*O=7u`w9D;&8(Wyr+&FQY!t1bv#pv?ffUH?hV
zKJXp!QkBiQ#xLfi-RQxmLcs~nDDcp4bK?5t+aIMmVqUyGvt&-&-|LenNcF&s1sHwi
zhKh$Iz2h$+l}|UX`Xu0gk^@f6#@ebr>Fnco*F0)*)C~YbeNyS)So(oMIzzZVr+RM}
zl)G-l7z2#lPiw#wKT37SJh(|noZC)O+cIJHp#53HC$;&W=ipb%Nsc+P at T3O^ESH(o
z(!iy#qMy-OLDtbdpNHbf*<V~)3jhsJ(O#R}gTCMQ1nj}@p1YV314!)y72YowDd*O4
z=;sBo9xL$%kLz=K_C4k9x(S|;H0D01rQg)B2*E94-5tM|FsH;X8UWJVqlgqBTYj`E
zXy_4d4-rUS!Ph=+aS*2|o$yjzc)4iZ+%wpeFol#DnCJ9vZlK=RF~kr=REg{1lW3oh
z%WP|_g=o9n(o(OHJ`Q!*3h_8~JtkkHOHL8bnZAB>ib#vGEdv-VUL<?%QS`akyw0-3
z=iCxcegtY@$2msP%|;iKDGoi8f;|OO-|OyB_bqE^^2`%?ZnuUVdPoC1*=?uZe+;pB
zG^GcaM^kwZBG<kAGfu$-Xo59dDZ^o{s3{9z+JtHO44Dv)HaY#R8)P4cRN&fHk|OIj
zFI66($p at -nP=<8pkGc}%!~4gj>7mlN`ENFY4gAy{n4cAnM85~4^WP*@+3ePzK^oHB
zbpPPpmFmecGCQ?l{3ty=|2`X4)8)2JS1IH+{XNFp*Q^BUGEm!28%y*aI<PgeWn0pX
z6AaE);6{TIBF}Xp%bYS2D<{y3Ornhtklr2!)P0-Fl23 at oWEyVCGOFP;dCQEqB3Z~C
zJ5QtmIb2M2dVjA?q#e4J)mwhtEOl6;)8S-7HwKVn+MJa}7II{Z!Nv+bk<9<TxTokR
zc@>JCPNPHsSKr!i5<-E-5U4HUn`J0#t2Ra|%R|gV%R{5Zs|I!LR70VauhF(f>p=?!
zRk~nmHLZlC3XIfvFTi*kC`sO5FBG|K&VT^{NZun*O&?HAE`8$-NiUo*^6+4J&e*g)
z!vPmc0c~CYPq0P5#&8-VwH6 at -kp}KfoE-e#yucMj(-`v06BC`of6V3_F^d?P1i%4e
zbNaUuc1wCua*&Dz^1v&WN8-_WLE6QhF1mA(rRH}4E%B!nR7wdR2H<v<gkC2IsQ{S3
z?55BjHc71*Fk~a;FZW7E0D`Dbi(vyoL^)HEzlz~xk}H|6MIJR}*t61+5~-RUEB0{6
zNR$xL-T-6Sr?mD(Lc at WZ4U}$%^*bKB%JRv}C3KCYS|&Mf;*mjDF0HMq4FyoR`l%a`
zFS`1xI13^kqSc+LBgl?DJq6y4KtbPD*S!Hw1$f-BfGIg3C=wg$Lx)auBIR10FmKmR
znBut9-6?C#_U*$e0Q<ti<pzGM at mEvqKfF0R>qg!Wb%3psO;Sn}LXon7nJsD#_I?fX
za;PwBLGqnCil*XM%f}Y^W1LZ)dq_fVM+{JNif at l(f at v3A7P%QGcUq0t5pgkGJGNk{
z)4I7`YuBtn!*Qtx17Li6JJE1VrUSbUuiR114FeN;?bX{%Cjz*u`Jqo_x{vu at 3jBZf
zld@@D*s||Tih=+6?b!c}@E;3+K;yIhnY)2Z0Nn4Nh2ii0$FKgsaEePH*F~9x?dfUN
QrseMO-tR^I`S9ug2UD6{)Bpeg

diff --git a/lld/docs/ELF/large_sections_pic.png b/lld/docs/ELF/large_sections_pic.png
index 92976b5f78096be9234389ac6dd9669451d13151..3d633ce6c65b727d69488b83e07c8ee729146cd8 100644
GIT binary patch
literal 2880
zcmbW3SyU3*8pq*aU at EDpIhK_}4p}MA6Ph?BsO6NUh#e=KJ>ne2(H!&Sl%`VP6q?#;
zz|)|qWI_t2CTclXf<~Dpl4Up?@4ENpF3-9Tcdg&I_xG~Dr~Uu!o$K!E2o+Nj0{{R}
zXD7s&?H#jSG*R&OD!dXh3IK>hoDsI3$>=Y)cIRt&$z@%ZpQQVH4r6@~_V#q>bqB;G
zUF&eoHDOlH;YBUP{(ZJJakdhsYKtF^<!PDc<>bA~Y7<fN8SZ|fUK!@sKmXJup)L6p
z&89Ox;QLzf7OMUH#<co3pQ*<F4WWwj&lnxg&EoDNut>>&BNIsTLao>*oo|_cNM+zy
z%a{R#LM(`#%66vQJ35_Ek at 6RhJNsNCnU;JoT@<AA-MbmMr67qIBm&>)M;Y!9GJhi=
z8C=p}E2Cx%@KY`46|=L;JJh!R9EdpaPLtx+(^-I at C|$-g-*&P(KQe-6rceO}_*a6s
zwUO3lK?v;|YD?d028UuNuzrXmRrUQ}<CNJk9LW4Ria2V5i84Q(0TdDs1UypJHK`9C
zl8epf9SatUvOibiStkp?>*0oAveB2JXIuAquPH*JYZPNbJ4~ESMa2}6UxkjS>L3jO
z9+HObY+NO8|J9^`O+grKSFOH+^4CM`0~BEx7BsB`zdDbU9M*slv=?*v1JBOtb`v%X
z`#SY*FbH at fr0rwljd7ganjsyBJHjqSsj@LNZHg7k7*ZlcuvEE_R<2ucz9SdP*A4Wo
z$O6t3lD$gr8cwb^mfw3n&gTV7KsIC9Ca8Mif#HR;`#cB*hKzxI at n<Yy&DpqX*jtk~
z_eC?{#pG`jHy*Sj;l}t0T={xDi)kp~bS%s8VEGOdB%J8I0mY_61k6sn(}71F(J_{$
zy3Hb>v*D5PCtYl>WKO#IG;4x-svlZU$yq7fujPrb9Z_2b?T_+Hye-BAFg>(s_M4s(
z>7(7$g8|UD&YRRwmb~!svDxe%`SGnY47e{N at b1O;q~UHM$_KluXR$q`i8nym&rJKE
z at fDa-x9bFNo}$|`dsJOMr%p=sJ<SVrVlFY5m at gH_VAkmpT6T?*n{Iq38(2lZZC at 8$
zut{_9zI43cj^`zv0<!ACf_%?$?Hm{h|Cw7+n^YQC9t4ODmj3Vo*6m4pn*5zVbQO3d
z?4{I`!wp_$ZkGt;2=hk880e1<%ZELs%OX+ZfSR0n77P*F;{60TFjVN>bTpVY!3{i$
zIoI&ID~bd8vX3uf=;2{Rs5++oOpm)vpJkd(`bF#f9ze<==;j^Oarm0Of5ynFet{^)
zHYUIpN^2jam80QG84*48S*lF-Zz^BKoGtnjqlXl{2Hs6^m%rU(Zjsek$y^QolA7DO
zdXq(%O0sLZNjVA4sPAflIyuw<pYH@?qvQIILHu_v*=<1C(AK5oSXkiiTY<CB!%|J&
zX}7MQVjxf1Utv>$OGX<AQqbG5R1a!FreI0#bPYJCrZA`WBGmGQz$~Twvy|SgeDT|%
zAk2`Q4Xw;jMfzlMlx#>NWaAMZATMpddAq?w;~wD^rWkm<)X`;BURpcFo=WZ!Q}jTF
zIfINr5~hiU4r>o)xwq+!T1mc#j&u)?RQ{6WrF37tZY)PST3_kNvcq@<oOW;w{8xyI
zoXkB<$@5dy3$;j%1o-ZRICxmoY;ld6*<*)I|4HR89-WX at VXX$Q(o?Ck<C^q8N<TER
zSKGeV6zmR at UC}z7LgmBCAG%(ZG&BjZwj;GLWbC$&c)2J^A$K4FuKU0_?yQ2fIk6M!
z1wc{BozdlrecRm#avvkZ#m2V&T+5xbR1?A{Ur*<XAi%Ftw)JARcW>*E?xQV7ii3zX
zp&(J;jg#oLPvS}vG}-Vrye}zH&Gu!N#nlC6Ztm`rzL6ee(P;IhLS`4dNbaG%{~#48
z>(@vxS!{StAcn_z>E^ATwrDZniB*vX?O4V>P at _++RiU7UGE<*NFFgiVIH4=4>=^EY
zGNw8xr_DV-x8~x-Ir7z{m#?Wn!5_`-`17ETYQ2IpFoehh2DoqwTb(*eGzz-1Il3Tz
zTOL$?*wi9rvUyOh)ZoIT_*=Brtb)w}oN`L-Txa<5jMOtEn*W<CsV2jx!ul-Zts6V6
z%kRD50^li%lC`=!6NLCOP{N77bY8n?&qTT1E%)L$%T(_ijWfE}21bY{5^O8de at OU1
zX1pfKv$q4*RJOx3+wS?FvI(IB@}k{u{z})^1*@nByz!6gs|1QPYgxdu<|5;je!6>~
z^$B at 4ap?s$2!J&ymKn~CAmSEv?`aFHQ+%v+^t$eH;4Z&iqr}Lje!AvsK=6|+gdDzf
z_VX`A`EB?yN&!cWwJL6e8=4ivddN+kZ~?b`C%6&kw%vORc2i3YYN^eEbh|cGI-P%!
z!4fW(dx1X6J4>Ew3>tCYx8|Ooa(aby;cnkn5EAP(vENFGhFUd*vc)if(!EJ#kEt3a
zOz4e<Lo3#y*3M>gLi0BsEd`oY7bP!GKA&%^bp$mKlJm374*amfNTw`%KP1P$vK|`B
z?k!2EoBkx*-5J3$6=Hq<HTQm_6DZwz2hRzfH`g_C)u5u9JD`Mu5=)O$YAsA=udCJi
zkK}FNnlRrd-W}F`l`)xJE-lsPqy>>S+^Nb)ni6|YYuK2gfsF-IMp|!ua+MP0I9uJ<
z2<$AW=j2r1tgZ&lsBy5S<BG*~X-LI-<X8n|7I{Rs?G9Q;Q!zGth16<ug^J1G^#&8u
z=;&agZaTr63rO*=jtv<htRA4DDr-<S#viXz*j(S5aZU*@+frNKp`+kVlX%Do;HQ&!
zkJQLvyk~#S!dMw!v;Rn0oPljTzgg;X=vNn%tFPNFw8UF`(o$r7=Bjp1MxU|1okZ1w
z`rT;Wex!R+6Td=+b7(q+{hn{8npj5OXk&rU^Nl4vsmH<Yeg)dK_!{hG$%exi)}-rj
z;ZUhMX<|mY!OZcNX=~%&z{oc0(C^>E)=FP94*Z{LXjhD_diDs^$jUFlXylJ(!rWrO
zgHNK+9U*CPtSoW<Tr at F#*AFERUh%X<!+jgLF`-)-HTm(+)+#z!3KkgfM>Sw~t{SKP
z#hek23rhDB0VbY_O&aml$3(Dq@$D1B0UQ1qK!lrdPdt1+Ld%8PX=&wX^)v(JrZZc|
z=`X&~VK$0;bnM(hOn6@&@G}Psu5yxrTIv&I>C?d~47_@;xc+EYduG$^blVA|rFv$w
zf{m3a-?DTU)CYjq%+=XDYVK$!?zjCWdh{<-JUBCH)s`8uUCjzK+=GA>5>FH~+C#K{
zqvMM_eHZ9flHGc4^}6a0F at 1&?7Eo|g+40x5UYS?~#Ekk`M#98>k2yr(o&v{6V5~#U
zYY-Z1gYcgDO|dw^3Q`#Mqjrz^V*`dK9aSmp-C%ayk--Aoj;WNFh1+-uMSFdjuda*!
ztTk-u;GU`u`0BxhJo}<2aq$Q_Vo9#<wqn|o_1(EaXwf3D`YBM?KL=uSYXVcO?))E`
c_iRE4MxlPED$#GYf5rf3dsoDtCo$=N1A5gsi2wiq

literal 16828
zcmeIZc~q0<_BI^#P+OepfQU>MTeTpfq=3w|GPK2tiUeeeG9)P>pac>j1W=E&K&=`K
zqe4+3BoRrNLIPF=m4p}t0uLksDM87k#w0>W_#RX|?YG|b{qeo)_pbG>b^H%ko_pB$
z9<F`uz0dC19k|4FttkWoS at P45e)}Mh1?>>X{3oA(2L2BmZ^3{-cAWUhZ^!<lF>=ut
zO^AV`Zpxbi#tq)DSp4<4)%SP3aNfYV`g_0+Ppnt$@Y%s#@pEk7=i64ctWa-0wJvtU
z at n8=`><j0HI-dH~jBf!`;z3Y(+?*(>!HPZftvX_K8$}jPXuH`GMy1dVJrM-z=it8o
z{r6u9{O?QPV9?;j$r-;5CD!vGklR0p`n9jJU_l`5MVsud+Q*qgAmJ<h{}qxTpAUhc
zE6yCOxeyJ39Q<X~@?BTz7C|7jXYGzxJLBd-a$WZNZ4K?%0<N*)+~+qQ_nSZ<eSXXD
z?*IR{*nz+7Vv&p)<Ff+5?N16+V(CVEdYv3uV0qxh?6&gL{#)#D9p9M_3z0s~$??}a
zXE(N8-F&9s;@PHL-!Dyv$2Py2J%je1o%wRlxNr!3Q$1Us#o~HH2V2l%wPfFJ`NJV^
z>}xTTGiCh6c^P-e2Ya+O3Ieyoj-!0lbZD4uj8W6Z-v}+2WfRj>fCbd8d&mjU$t05x
z#Tshz#lP)&Z+?^Mld0(@W%-p$EoirgS(WI)E0a5<h2)J1yM>~VnlnZeL(j3IzAz*)
z4h&__%Q_W4WoRpP|3>{xsSY9~4;ob4x+H0ew$jNTgxX1NwTLd0P>j*$I}AEd^0mPG
zTTIS>M<GWhWIJI8Q1!IX at N9eRBc&LMEb9~H%+RRQ1jY~A8=~<R)gLIGX3;P!4YQ1A
z^^{rasBWRLeOG$L%#YUP*r}N)=tF4RrO6{wUjim_z^-8SNqsk`F0X@<oN`rA)^+tQ
znjxZ6TQo@>5Eog{;9=LJblz1tA&jcW at Uw^JWfgPlD;2MX at aIv!qXn6m(fRMJ$T?@U
z&<^o(j5K5U2hsPv*j3l>f4 at 7N1L0`pr at AAdlCxE0fHRQ#vgj;TcS0s?v>Fn$ZYAX`
zY%(36N at jNv=qQsU!-YYu(!#u*7`hn#O~l=(nJtoYuF%%cS7*%XAYtzV<rU`~a>lO=
zT>#})<gA`-hC|@VxSivFp^Eo7j?WWtuuQI~1rAR+9H_p(W_3IAtZT^hJ(Q%n$CFKQ
z%%zhvayAonNU|=Tv&Qrwc=uzaZV|6T$!1X+{wNFXR8v~lGXGsE`B?x4T5wid8WiXd
zArt0oZ>p>w>o&}PmmyFZI=OXZEMC!>uE=>x+yV;V1u7?7Q at CcMA0arS;qp}UbqE+6
zRu4JE{aQFu^s84j8a{i}S{j6=!%z&SmD+s|Ug|2@;{*Xp*W3LhPD6WD3!x?OHOSZS
zph7(1M at IRP(=mfh5Zd~y6J<uipH(=LF;iMxsih`<P`wKtq?@=6*(uUEvaSE%j;8J#
zj_3FJ^$;37D-?3CdMGRm0=Flb_Nm_jwyPAzPA!mVJ`SACAkY;Yfl|hY2rr~!E`+LH
zbw{lyk*b6P?NFBm(I*w|m1fNw({w%3C}^+G;FT7{Y4f`k at 6FyU*_?Vf^B}`cbrt2g
zT9_&#`+sYfyjs!56h9~(7+ at +WkS)E1zGrb(PX{YY6_Gm5c0k_?9p`6l2Q2QYy0W|?
zMk4)_+8~@jhDw+^<`z&qMlGK?Lu1dVGGc|Wj8um1G!nTaXDeuCR>L!oS}V{J7<}mY
z>i7PKu($rQQvvKuUZJ8a<!#2^b7vL>62>QM*bN?TjR1n>3BRF_f>OJx%lG=fsjn!N
zL_!<7s>hz>tW_Aq3z1t^U at p}f3GAxuna)6c26Mq%lNN0RkacO`7Xbn<lb{3XhFU at Q
z3L5 at A<$K!brJCR95{i;K)*mVQaD5ZEJlxVGO!xki{hT at PxVmS+ng1wj1C}aavgcgj
z=4%RaH2G#=<XYD1kIpdHBsH9|K9jTNo+wZF!$-e(dmYURb9%)5!Q*0A>Zy;O^x%1l
z^)cI`$wX=2y&%2++)qzN+XESO^z%5eJaf-SSDUmWeK)3brC!4=4HPcD{AmGq4|N0A
z6KZY|9l307f5*S_1qh<5)Lrxf$ecT9(!6nA>jw2*ZbE>tuXyhJ=lNYFMH%7JCjw^P
zwT~|U>Md-1S@~qVw5Aem`P0WkZQbF<&H76H2bUZubbXqS^8fe4{q^f1kldfPd#NvT
z$Du;o=;A_qyMyOu)#vIN3exCS55;Ons+#xBT_KfO*Sj7He>4=Era1WNVzGr?B_$c5
z(uV@(iBBT<qSOc5#uY+43ux9!bNBj18Vee-_;>fjGz|39_jdR^SD8MHyfZ-Py69v4
zYTt19F4xjo)fE++hN+(ufmM9tqbx`DFxLY7>H4{!?ntF^gP^v&Y3&ODapR*5wtt at O
ztFGdXIwRLc56b64AU4fUdVtJNpn12rn$4Zcz4~~gsl+~)@@1L*+?t<JzUgN6G?To9
zPsgi6{E})dk;(4K at zHC*aC`e$B9;RDRpZL4`Gwvv-~WC`CK4fRI&vlXclTe19wyHQ
z)}&mI?pygTHKTbGS1YN0%j at cv{sEzVqfN1OyHh+H6=m`jWL<*zx8~s&0PNbC{&3Ub
zyg1NlwtKjLtqvp8kxGx2hAW%w?DD(39I?$@J=FHm&~+AW3YBA2b(cJiCiqFML>f-!
z#_2qPk`N{hsLPs{wTmI4lb#9L<qy5qW7F`UiI9A9oUn;HnG7d<Tpk}|t6*K3@}7{?
zb;#|ufl%O}wbhl3AgMR`d>#$sa_$W5iE*9!5vUDt?vQ)LYyAX at _%?-XO&*WWE}Gmg
z_0o)WN4MyGE>E(!z6seSld#2$hJ%ot;>jPR0ztNP5wz_Lj9a!%8v_x3mZZ_Qx&olF
z8b+fB4K0M#C&7y^?zy*om*B1yt23}zLyfI4y++-=TyXB;#Obj3-9l#QR}pd70a+$o
zA)ls%1J`Oy`|J~auevAULZ(Jh5=k$bkS!e-Adcy6Rw~5kw?IeGHNH7 at Pj)DsTJjAx
zLfRIfh%5#7k;6><ysggca`BAi<X?b=msnxGmBX;_ny!Zs*)I?#ua*QTnA|4B5lXui
zC81MN(69sGRS;+XZCp|s+<6<q`Cj at nn-9%du0T#F(=kzyup>k=%D0kkv`%!_bbj1r
z at zL!EYoy+|l#7!;OD~dl1_~R_4XhX}^p6x1#5AIq$hP2_4xhgO%($sX_6~9{RS?Ht
zaEV~NOFtYKVql|tU_m!kmnTni(G_Mb^=<Da*<#}8{G&GzXI14H$x^n!^fef4gIa$C
zjq+goy?G%n^g4o;+l at Ne-Fv!l16>@)Ntd1#xZ;Y;!s~lH>CDMzty7uMVzc&9a&NSN
z<l;2`TEGcWo$<Y;*O)EDf5$(6XkHYwRg;|Jc%AmVrTa2%Ok1CGnr+t3^wK{NDD}Ig
z*5r+WgR3aw1u)10$RghCrUi8b1Ip6I`x{t{jh7kn9IRd9pnk(GbcXX<odNk@%nHq~
zy!pc4#YODz7PQ7!&2Mtup+{_PW2HJ4&Ll9#1dZpl2H!P9f*wR7s|6l5Pd|pDEZO40
zx{fUXg(`L`13^S%9xm97&6GE*E~AQ%I<5c#?V4AI+xKJs>i5Pn=HJGRut#11`}bdm
z)i(y8Y4}$I0*k(J$H+=vN!T*x82ZkL-E78zS`G+9>h{f>{*7jkR%$(#O`R5){<Tk4
zFtZuR7ZA<6r at tnd4o6Hy`KDyS&H7VhG!a8+B%?aN<#CPPjXL0Go);KvMQxuX&fFW<
zC>GQnxC5NUH)EsRDl<1u+6xe$!&hMXrYr^LZe=ce+aE4ktZjN#I&h04uB~xGH!zHE
z4kD`Nzl#z~u}GG}4WUdd7IQQ-C{MQO4~nB`?Xm(bw2a)G#Au7EhMtgdqD9`JFZybg
z1<s9+lg?{ZA*wHg at I5`c6p1J@@nxoAtOFicJVM9!%F2pDX_B}|h8`Wz%z=-_Ufc|T
z*jalQd?uziuJPQ%)Bc_zOvG-tdi(v9C+^z-Io#}fCR7trY34aPie1{1sna0v3e*g5
z<|#U|8nPuY&~rf(jlb{Y%Xg)(?UV8MpPt%ZANTu&wIn*I at xhf!UQc&6%<Q42?64Ul
z-Ro($2p=%Lm*G3pLPzL=O0A<LWMZ4?Ti-laj!bRVqF;TtA`jG6TQ94vp)z-ztp93+
zO%zK(`)*O@?H>1g%q)$PZ0=WVU8|0QTVmp>Wd5FUxb;*dJSAbA8|8sDzCL-eD6cJ^
zG1g6}cZ?9Q=)RInAwF_*X>e5j!)X{JuX{Cl){)GbUSFIXcK5Ifj5BzvXwUGPO*Oio
z(5qDn0Yc|<IU|4pji($gYSg?yZ(lQKK<U at w8eNZNA{lun^KE7$UOU=-LR8_{Xh at R|
z3P{iTq(8eoF2U$T3;D;iE>@dCZ at zVSB)8h*w>rW&s-Bbn^^??2VbbLYJHjPY at mIYY
z{54x%1VU#nH-m_~zgTeWt&7#JxsQPIx=0m*vqgQ3TLp%!AJ``jcrGYkg$Wy0A;h2)
zMIoEZh%fto!Q at P>bzLy0 at YHm<*hAgR-C2oQ%MjOGrB*bY8?;ZQ^iwMu&q?f$Q`VH#
zFtsj8tLL_fQ1nw1I-MS8c>%ATWmO~x;hnJvPE^-bv^&-jO&jAexy{)UYAlnuq&V+`
z?E1GeGxqX~hS%@@T$^-i$#1Td-U}j0SJpQ5GV(nTU{n~b5_i at BS8H5v)#TMA-m3wc
zYFuyE<ke0EK1p(+yhQh3_#n}{9o6c1N{+1?=eDT}A$+{mD0yvy8yxJXVnfQy2CfYF
zG~Mw??|JftAm65D{h5hP6^((OMYr-d0m4aYBu at -p9Qxtnw~v4^lCzJYvd;}`c-qf~
zNulKN`xA&KlyFXrbcewBbcDejcXpah1s`x<;w9{>unBa({Np*EG<Pm3g(A0XO^yn1
zJW<M9s-!@C?6B95#35ZwUYW$Dn}}g9HY_C9YlC`>`%9p3D*w at tkGhBZ2t<^UEAHE{
z=TSMyi}UnrZ~O^b)Ms8+eyuJMBl}JEY697kj4Mi at 7pi(VUBiNT>V39hNy at 2RW_O&r
zrtJVCbL8m}5nXR`SmD#UUOlOd7z-3|2=RD6rqb+4x}umI;ygY<i*^MzClHZZL$m;A
z5%Zk^RE^>6?dmscwgmflVUwgrau|}coT`HV-W<sA9p8zU at P3}od7rZ9&Re!{dHLh4
zZ-J-6oP5}qVaFnae$82dahI1PXyq9{Fzgx;i;*WocuRAf)%UmtXJH=fYazbV<khp5
zhK>G%`>XSL83-ZlL1gn$hFvpIR_N{ne71WW^fcinQ3idIiq^Z=GhL;+A6q>mjVPLK
z2TiK6E9z@(G0LF7i>ha-^0ecyoUiJN4rFQnnpydtQ2<R4WpY?^&m}+s<_jBveWM)v
zRGHBeS3c9Kk9vTDW3Ki%<)U5hAkxqqQsoB0xhC=$>3c~PdQgmZ2)z|XVBc%`aiXm`
z-?qlL&CSnqw9#l+X|x-O5g=52hCX at ezh{Eq6BVEZUNhUn{HuvhS}(jaUJ7Pp#TyJ>
zB-4Q~zhVUyzem4i?L9DTl6L5NJ*z{Lgzk5sU1seGtrj6XABjD{&hc$&=<Ur>(@^z_
z#%?Q at rpK8B%c*q#8$}?M@}&Co3I8yY!@PDa&-BR^L at 3%K)v?ZT#z{Q at G7jYr%2W{B
zaxjTqa&@Bg`4q9HpElM4bueo;@A9%&-#`V`BPG-vpIW at cZYyp)5DuNCR^FeuU1h=S
z6}a`fEwf?rd-e at 3OKYPI3`PePewK(h3WJ2bj#QZo`BYU8p$4DVP}eJqm6*I at R<e=P
zY*bek8diyO<Ros&9SEN)nk8;#wV=zqeVjY(tbV?iP+j@^L<H|SX*@7;g}2Y|w at 81%
zX1Yy>J&JDn_~LZdK{Z!t&vA(6`Az4>?Qb<|fS)nhp*o+~9!{?XOI=AP&oV}9!WpMe
zc<e?+GL}>$NDjGOkrmc%`&rJq-W7jMGy>^OL#=wRGDn+~<LTo{ET*Uz&qR3!g)R5S
zPNH;TmJk-`(7XJXQT!SBmk#EAkpmTZq7y%Tl)!D&vW3h;`wVW9T4BS!c~L=^WY!{}
zv^gJe_fh|elH`O+f2)ejF*GAimJ39>U~)=2rXEBN4{9uiLZCTj3dzWbfb?DY3dMLI
z7fZ(c8LBJmA^Oy at Zf4Vcxg}pJqKBRQ9Ln$=u?HA+gsm^p at 0qO6Rx3uXkyf=i0)idT
z^gd-sX1P95tNTXKEiwEm&8aY>kBY9MVcP2g*BdnhL-x1mB^g+TE(@9brNSVwzkn8w
z=M>;-_m(b<nu+ODa_S8}>72u6otoXL3g_qtZ-o_x=3bTN9m-#gtuPR_{O)hbT6l?r
zm?hiZBeVp0cftR;KgGU<mTpP88Phf)2rzwEV6zlt0`b{zHGm;bx_-1HU0cI#%d at oD
z`ayj_yY=*)%2fD#X$gnqxU6c|$NuxHq^_(@>PJc;QU#a$q^MHM?p`@l at 2Bs+SgB1l
zqJ&Fj#>qVHU<<rF9k+79T>NpKReSm`nlRs-XUuXR^$Tt=L6}{Z5i4CR@*aPf<)dbE
z1<{es0StoVvb()@+FN-$&B6PhpYs~Rvp;)RCzyKk1$j{*NH#owS133)Ojblknz6=`
zz^rXIuf#3lE4CvSLO(SN at f+4_OZ>ki at 5B8|y@$vHE=cClVjB_J=+T-wBr==i4yP-&
z38oD1xatbC`)=}RC-FS7+gy-+Zv(>QD2T*4!dJWzxPbA+D`=uAA>I|qEh(AYfmd8)
zqoJn5MCd<7*J1Js{@}3Y&(vzdRANUXK>0i-`E33Cqmq9pKn&~1JTLGPyqX5;Zy<h=
zrjZ+w*_S6n8M;%QpxFOkkCnG*IIdDNx|4u`hUK~H34)kGL!}6QQr(SGLEvq8_NH7N
z??Y4q9inpjg^bNgWt0}9 at zVFy7-mCb&$hsFUJ0rBo%}|cALEC~jpRi*OxT5nLw%9X
zr{lZHlRq=c!`jNgOsy at meBja?gt{P_6bK2r5fpL%134GVYH&gt8_<;ctTszUsn{G*
zwwii|`b{_frP6(~x(+oCNs$4Md6kA%a~&WaViJ9 at H)A}5{&9CP>vY2IbFkL#5>Is#
zs?)|GiP7&R2O`C56^kXMWXa3uw!Mt<bV|(Nu2PFAVg5 at WAwM&fAsKC`FJAKxMg8RV
zKIrZL#Gh#Vb#8iR-fTWj$)B~8zj^S3nC{}qY((d~KRu?X++Yx7!Vk9hm)a6}vs8I|
z?&%ZEfz?#L>m3LO$B^ut*NUHgnvZ_S%c at qK5^vlTQC at m^pv=7$Z`dr-*ypRRG#^z(
zxNiXP`D>ZwY;;=`W2_fnpe1<SK>Ld10iV5pkh%C8&K|7*&8kpNi(aq3LQ`DkHbUDT
zdeyRGwv<lpm0lv>%T&<8cz`u<z2o?jN>j8p{_p<hE|7G-59yhS8Gn?uUi~uM{tW-O
zj3fpjMZ&x?AXiql at bO9?-&mbB>3ce9)-`+*F}mJSyE#`SWcDsjmV8AHj`#U4kq{>x
zCr2W)f6Kr#j%NhSYxU?*X7z;AIjhNuxPL*uziG2HoQ<g)U(icoHTd$ad><2>+s=(R
zOVxqJ+i0qi)dbGUT1brbtb=lSU#9^5RUaZ!egM)&K at UcPyb5PLO)=w|=wv$FyX~J(
z(eR+m<dtOwCYcF{is&mbCu*Yw*?rcZg_*Te{^4`)0#?>kz72q;EUB%*5a<}`7v!6M
z1YKj##lV{&jf_#(&U9zFMI7>0dkV6}rI{G{qklZ=l~PY&mr4N&Ew2yh^w<g*t03D3
z4!)|H at kwE?jM8zg3AIkqgR1m$`frm5q@{J=oye+EmUSY#*91L)?);|?$X5uaZsIUy
z)v=6x&l>GxEsfp%InBBhL~o;%0dLzgupbKnO*1fIkZ{^$fNej~$4<?oQB&(^rC<F+
zP%vBr%F|tPxF at E*J*PC|Fk?WHO(<3C|Kgq%oO^D39pH9et4_2?gY(|>5x{J^YCwG6
z&oid_+;eq0X7S%*{%lhHKm4ao^3r+Gd3-GsYWoi_uWIwqv8GhtjxM64jdH1-d9_9V
za7235_ol-^etIRb(>&beAHG^AIku|3aH+|wV;`Z=$5^HT0WeHzM%E{En}g^mFu}M%
z-O80Y2lJ-0Ra0Y?#G4$wifk=7_mW&3Usf_H<Sv3PdlYpWU)u2xhuWKw#^6ltVpO~h
zA{V4#z}mqnvMrKB$~aI+$Lm7(MkQa)fD2*1Dhzo&^mKfTnAzrw-3PKIa0G|ke3(cU
z{nH6HQsT4CFjC#(=)n;(zN5?p%%95(M!KIMWdLUg9hv;aTV6}UX$|oBi)hx^)19E4
zZV%>zn8_}Lmw(VZPp>;o1}hx(_=59&!RD4sI1^oN)_yu*uy-<(r3!!ZJC~nXUg(gU
z1I3PW-3gc~lCO|mV9j*$_>b5Y(!@KdvGTKEUaLJXDUUb)!3u_}28*E*8 at C(JklAYq
zoCR4 at ZaNgt^YT&K3P}Dl6?lHC$t$kEb0gPlotjS$_GdMk9wC9mC+P1MfDkLX7 at 9yU
zYYt=Jf0P+|=!h6{bFef*FvTFfHsTk%MLiYjwPF;pr6lD6NTXq-43r_FUfwHVegQLl
zbDv{6Tpyr^790E at RFj2Bn_eOevh0I1on2hSS`-g5o?k^A(VpNgga$tz+5jwm9&Q%L
z#J;}D5jTbf7T+yp&v=Fem7x!)Yau>h6~SM11?iTa==K8OCeFfLgp7g-TrByDb5s~p
z|7bHvbIt;1P+M4koT~-?{nADtUQgv+22-s~tQ=`S%F<a8WERyW5bAL{lwp78N{y&#
zR at C?xJ~IPK&!UJG(a<;PR9xnk!U-Q?`3UzBS*7ve4}A-;L)X>cpHrgqUO0Ynv%mB{
zmsP=2!Vc~4LZ#SZNJqRKQ{nVKNY-sPbdzVe=9P{oXjRg&pUEMyV4;(xpT2?e^eyyg
zxrNA~u=n{=qHgJ<bjby<uleA6vIfV}$i5e<zUk#FfnVqJi at 6D;F!r{@GAugG<9*Dj
z{TUcAJ;tr1>3(o~TJcsBk>v)k*u+9!mIs(2{mgsVcL6hFJ&eQ&Cy0{F(~a4N=iHqw
zaLF|m9dTUpj2TM1)C?j9mXC1ztpr*6saLNB*(wkG)o<oZ7pRHTd6A2eHl-N^#(-#9
zLfLXftuUxNxulW`2p3l1p3umHb(ssBjQc7~pLXFf=_xZrQ7Rdw>)AbMt^g7%?_jnK
z<<^oK;p>6LuiRT2?o~K4X)56g*}xm^`buK?f3`A>Yb4QQzQQ(g+x&{}QYzDojzH3I
zUhJ=A`CW$DRMCU at kASu2+k6o=ptzZERO(1pA$^J_Z=#CV^wtg|zI(tqH3w^Jz6EKG
z$J74OKe!t!*lrP)YYowiDvF_sRy?q3YAtD&bDssxH9S`w<$uYv at cM+eBjzOG(GMQ)
ze?_m5JX6dTvgn6$=5#r+41A=DnkChVaWx>1?OIc_gpxQ~1GLw;-l<taZK%o6y3}s`
zV5+xgvZ27Xug5Ln2e-JU%KP^2-00_-c`JWiP30M}jRIBSQE at BZKH_VT+q`}8gBIL1
zvf>!VL7zl;o`?C{-num7Ms#CLoDM9CVTgOAO!715@~+l(SRL04dQ(Ew#YWIMr!qc5
z+4o*{VW6Hi|LBZD)$hFltLKJ5HwG4qh+&}qIy#R>w_NEqg7jC?hl?Ma`8IbM4P=P!
zK|2vjTTF++lFUcOfJBAVp8TGufISo5w)hB&dIv}uIB7_<(FZH+uZQ?-#+IX?=WeD|
zuRoHAI3isxAocg*CB+$;Dj*^5CAWV{*;&ckA9D at AjF%dxvm+12mtCGb2rAmd=*IZ`
zMTVv}k_>%y{zqA*XgEq?WvMLUWKV4_b>Kc&p#M?IBg5m%E)87F*d^@}5z_;bs>z)*
zN+8AtgB(d^atkUHTcX+miERk`95d>d;>WDTs)C6&w7-7Q=`aMRXmTIJhaD!JAVU?L
z;sqoB;Wzpl#{(P^Dc_g6<E4wXZO%>UC({08s#Zkn>oYN3j>ocz($i!$$QmpBqI5Bd
zJ)9Rc!9FA~@#zy7D~{*=eI-^=uK~eWf4C!2IGjB%iuJ_|i~)_)cdwx4X78nAK*vQI
z at 6&bKtWk)w=k1nVDvG8j at RLfW7L`t*FIFQ0A&|6*k=!f28T8)3U`zOqZMF(P8xv_=
z7!p)!Tb6NzQPu5x9tS6u9iTzBxabLu+z{s((&W#Zz3)d?;%%wH%HJpB85S9?`TrqR
z4yqDi4O1^{JIyOftp}ZQ`Q*v(g}6j%x*)%AQiM{y201iNsI-$@9_Ua~Ufzt9zP=8L
z=}waS*sGN&%irp@{f(d^gh5+EFLMxCUjYa17{ElnwT6!`6FqS!2#rr?tK&XcsVA9#
zAEZ-MpPRf&MS!MMErhRb-JG<lVej7-(!)F#3zb~+wM^lPvFv%%fKuIza7!~X(DZVs
zx-oh%1y^41(nnPydQv?<t0C at fdVp|sbdJ1io4OChN~<^iZLOWce4J6ao`5Ml3xf#r
z at 6BuknG59nneR@Syh?)U{@^~SG;7r5;Z`exol{;a9qOU~mR+s%Ojw$SyTI2u=X|Lc
z8u55Oo(Fow7TpbvKhCm1gpK!Eff?8?Lk|hJnte176z;MB8mI`pkj-Ghs$-kF)e7@=
z&C-cQ6>OC!OLc-QL&R7s&Qt>5wpfuT_uzv|ouX>qiF=u$HLr-7(sN+(>{5#!MY3e2
zui9rFoIdn!{=)cX&Z%!d=0j-gNWZSmlW76t8DSS$PRy>iwVTS^JpdhMf`NC)6FJ0l
zNX^oB^Yxf2&M98^TvQ at hvfR!!ti(I|kGCtR^h40OY_^xvq5Oi(@0dV5A7BwRE=jOC
z9~Z&v7hTNAk-mCu(iiUnQpOkOAQ}v$_AC`v;~x9Y8R`LWn@<ReV$DLH!Iktp>o5;z
z_JZ8B>!;Pa`n~P2sZ!(UqT0t1Altig4xWHCcg#A#y{plhS)YPdpzV~uxqoYg#NGbn
zLUTHl31EpS$(C7<*FO`Ur;&!j+IlAzEVY?i1N2 at Z8|vq@*sHw*5>8CK=`io^+|?I4
z<IomwX{fG>fyM<dW&SQ(a?!P=zrK8Pr`uNV(>Rqx#(*_v#b*Ae4?J+_owdN4uEipb
zH45%jabR9nloTtX=a4co7(X<s_|D}8xZo<-Ci%k>8lFD}Rmnx_QLe+E at aOXLb3&S}
zNnG3)_;v5zpUx|vglC*e^`6QUa7~BH5jGZ>mj*+H8O^r4q>iQfOhn}KhqhuXxk0Q3
zLb|TRU44by3C&rfK=#6id-&PG_+?$6-YfHh=ovERQik%~pYuJu)F)8&&-st16Qn<b
z;9v7X<_~qqox$}O&7<|NMdO|La(=x&-&L&#!l#rjm7)-df at 1eBlw5xSI4~O<S&B2-
z!|R-T<!2Uzos{U~h}nHTM0a5E7zj`XsTLh7KN-63hUqZ;!R_0QE at F_(Iij0P7EI}u
zkc&IsJV<iHg8AI<%~<K5_qyco3%l>@F<5zD$4-!j*qSJrNZcr2=^XqhYb!__7$P3@
z1y(pVv(tnf!2WqzKvNx9ozKCw(W;(=F6JBe-2~ZvssKSiADH5nBeVNis+9r~41OEG
zj4%iHdov3}=aIYfv`eM1{q<)WA9{JHZOJNx(M^4v>+KwN9=3R9lbX!^Nq}(Z0;^nh
zx8}ba9PQYhSKn9wY#}uVGw at Gk{A*LwniHPD(kG2w(^v-nxU4MYl*I^p4kh*mTo7dn
z-=N737o2wOQX~=CsNyYbXW+u98)(VX!`wXR_z+R|yZupg-<x-P^#N}+FgL=&qpkmH
z at ew|Kfy9+NU2Il99fMPR+wlH+<6bfr>;a3IHx#D&T<BfTyVL)Pd2vmY_tm+;&%loE
z+Mzf|e1KB at -dBrpjHXrH3H{#tD=dZUkCU)dM%QOP4$x>|ds*M5oQK`&1~uul7A#Y?
zhY=LUsF>2ppQJyqRH#Ifu8=G_<0^}kG|Ptb&lIOCMtODNpKwr~6-##k_G4LG)}fW#
zH(-mozVTv9YQJHRbU<Kwy@*W{QH9R}v>Mo+;;>L#?`k2;<S=FvtoTfClIk_N6s!yv
zRt-Ln5Qv+NX$<mEi>g|1PBOJ9Z=VUyF^pa%C{QS?t*@cKO*bU)5LP#fKk0;Pro2!7
zD<<GOPrBydc0A+xgsOtQ4CGVBp-%iEPi$#;ws2U}ARv0DGt-P1GD`>4Tr~($Dwyy9
zyWUQBtZp2vgr;iNq9p}YOCH*MdGD9o6V^%(nv5badL`ae+W&U*&c2a@|9Qazk;i#W
z0(l&{)FOKDbBz(h`wTYn_IDI(pK!y^DUZFpfK(wsojTb6f^#bGlYlZnbmOe*_Dake
zfrRcbM3Oxd%F5i`fqhbsf+mun&$GM`eE7R=1>i>q=TKuto+#qf^doL`hk4(%{OZYj
zU at o5DR$WC)??`4Zis(Yntrp^|H5 at L5eu(|auYu4Ix7U~|-7vbSYde8a|8Lt>nA4I>
zWc|K2T0;v=x9gFYer?|;MFATO&?K!)<cmz~Yw!_nPUcDbYLj_NjyI5$!kg-ot9p1K
z^kmQFXcGr7h$22CMleKp8Bvs((kPZtbw_1HaV8yaV~OAm-hF`%UpD8Uffsd=o?C?7
zUCaeo#r-HxXJI!NEPXJ!GiMvHYP-J+sZSY7?##C&vouz$bW(C at btF>OXTeJEOD=7W
zM5_8MTGLmjU{1M&uznCKpD=^o+J*B$)cMhX(P64%oFhXIhh`xsQEEyCi7Zd`byN^p
zQVe!LV4OSU96|<Is_b4!!ycEl4pWnJ^lO*8e#Ct^(6=9Af|5H7B9br2cz*|+?+S&t
zn3X`g>V8kj3ZuKWXQCP9tX^sZ{ZRc!bwCTj3e>Yo%ll&FVkb+*i()jg+oQ!5D at OT_
zXOb%egyCWkbC!@Tkv1h6zep{~P6=Q_3uhR;W5E)z(h8&v2>DJ)+qyI^yN-Qu@!>4{
zT=a(5O9WFXq at 27%M?yO#S%=g31yG$r6w-x6FC2mAD+!p|l<N&<p}x_M*aGe%=b7Tk
zWT~%nLHCdy_LvBt0^+*!PVxDc at ctkEhE~vE6-pDyhDJc!LvQuTW6kQEl%g<`BbYzZ
zk{I7Km>0NWqa^H~@q7h~uj7|^0|7zH<bcgH(Y-e{1ruBmaAoqyHm`EL7%Wr)7E?u|
ziz5G4LOZCaff#o%;!>w at 0S?Ctls>}Ue};aoi{1>#<IQ$eiEXLACl)C=mDQ!E(a;Sr
zm;q<tN|55^)HO6C%}7mnqAuG(Pf*?r(4Wtz#s_Yu?)s7(JIDJK+vmy*PwR>UW&EOE
zN2ixQZQo!EQ4dt%U=N<IXY$UnJl7N9tX1_XqjiyiD=-Dx+mXc~p*yCH+_NAr)7_x&
z&cpt|@a=jH&)+3#q93yVnCAeY^QJExiDT&YQhZg<h_o at T)8pw{G(F26I8bk}Ya|5=
z5x>+Ec6WI>NY%!P%L=r-Zwrt4x?h42TT$21 at ORLCY~!5@*W1A7p}Aor#CPxh{I>!$
z$NEodY4Yl)(T+3`%5b2bO$<dD_A;QzwzZ0~(@T^n)#tXw8Arjokw{$^egTTm2_rg{
z*9C}vnYAp_oMrm_5;T}Qy+axm)M#^iJRtI$+o1 at x5D?xz at WC2SFexAsj#*0~4^8mV
zev!!p9ZGdl8 at df_!kH0)$ppH2eOk;~1=6uGsYv>LXR_H%7c`ue+O`E)`qZ}D%N^Ur
zP1!7JL1 at g^hQ|A1vJO=&Wzau)I|BX at N_C}gDGyp7eU0*CQS%<glHU^hw7;S1^Ca9X
zuTw#X_=S^)7}ga*yj6W22f{?eK(J&PxPeDlfAiY|s=CN}McCu%bcS!a%1^JZjjJ(k
z#~Q05!>Ww(#8b_<cV#UaCHkuQM;pY?SWydT&(M_l?<&b)JDD}cJ<W{eQm-Fm>y4WM
zJUZkLB%<unWU7=<$5 at ocd)0?WhrP^%Hz5|!KmlFD4<n3=(rq{yzq;EZJCp%-cARF3
z`Nm7AoR at V@8XFyriwRVOK>y}qwMu at aS(Bj>W88+#VpO~{BRBd-x)Rb<W#mk!qeuq9
zzJQk`i*^e1_iP#W1z%~JyJR8$cF75Fm!a_p!1xAbSxDRfz>|i)BF(6s3eRelI_+Nl
zWvdIEQ<_hHoVOK6X<|n**3)YqdVd4Jk52z8tq5u~w7jFr(q~p-PH|2d4$V1z-gca<
z^mW_A)~!IQ&MCgk9OItFj%;<fk<r?VkfXzw%%Rg?4#|xO#`DH=!}h1pH(zEJHi;c*
zu^IL^o(OMSefrT6dEcEEjRD2hVl&KvG{<sULQio<#@ki;wddwA<qZ#<Y<fiK=Q&^Y
z0%eKn4TxY~hhb_%Et7f!BAFw7h;6-`&ps`fA at 3V_qT<WfFolAj)9>%IX6_H%(wq9y
z<9Ib`7eBw-W6g~r;pUHiwSE6DM7fQH;=+rS0Se+cfBJ~@CAlDhb7 at kDvP_Kr7TZ!4
z>DJSuFM2TB*ZZC-p>D;=vR;Nj-PXdx at 212jTPTKJE(;voFH0xu5wz8q3{614Dbd?W
zW4=l=?yP==GK6)B$i8#u!(6E&@VLU*8PfK02lYboM#S#!EMIj8cR{6LXlG%v_qxa`
z`uL7{t<7@*EfLIbMk}l at rS*W_Dy8eOYVJyB+Y7KS+uYTSWYD2ErOAqtsyJd47$P3b
zq4`LRTntrTMET1z-6N$N$SW%`EukhytnV?_*L!38m7awq=|f*e(&=tb#iqkDKbb!B
zwBC+QKrDSUv`&2ur8Df6Zax9he;)ABD&=Gsx8ZK+)F%qgtTUN61UuH!24(6~{iGeU
z<t<C<y6ixy3M%ABty4eaLY>DIoREfCc*^A~ro&;#Y%(}PaF5HcD4p>N>FS;F2H0 at 9
zQXeXHAP4D`dI}hkB1PUB<U92m<K|C<YobHG2<V*z;Y?uhk|C4}E8Oz1w;h;$cU4i~
zIhQAQFpjsHj!^rBmI+|LSrEA^4dc=^qvbj|7pi~>uNN(JoT02aQ at T-*|EIl%J+<hZ
zdFRtp$Z>AgI-vZ3!DQh-iRb>z!~>~jl?7|zS5Fjl?347>#v0TFk?(<0 at DACBBDbu@
zoYH+O8V8zcm6UIu5SjmGn~v-YDhK=0uB%u{QeE8SnC$%f^s^y$-rd;#$8owLaxg;a
z%(;DRf;bXUq(2L`FRDm=2ks$F{qINA?uQ6>Df+?2jK;Cl*#zL%G{=)1{Nh5N!U(fh
zzJlzS(nZlh1L&7i0ghyeDfj at 8tGU3}FS`T?$oO?r(c{!r%PEaf^P*JpEjRONQxfsG
zN6UmpKyv3Jp8J+H$EeCY7EM)?={n^kj#0{aU-^WrJTitlx!a&VxX-UvoC*eANov<6
ze1Z`@1kx`NPp28&f=W!9i`cpqae`hnS<D@;FxWI&4DA461?1oliJvtgju(2mB4cJZ
z-#0JoUQ8rd((`N&mix>|xLuW)fA at u1UhdV=`>I at jqU30!w*lTDH~+rF_pcsSyJq)c
zwq at 4VO?D*wNtCL>c5t>8&v;n+kfx9eaK~u)Y^MRH_d0;6n*inTyRjSPnJV<W4|3>^
zH;n~cGC?PD1Mn$>=*ss8I-VHz0<dnuoh at _ozyD_UnLf8=FPV;Epk!4J6&PnNjf<~f
zj}OA{M42cE6^2%RyqM%pWzqA0EUNy7pB`+u(1`TuC1(G$**fq3Y~v+l!!7Y-t@;@H
z3;9v9JRrnxGo7@});0(^Ndj)y_^yoXx+E)`f>Mq*cEdPuX$5FDHM#5zQ2B$qr_&LU
zGpBYNxcWds;JdqI#R<w=5c)#4?oA)!MOK>aRsS*9sD2w*@@_qO7GSNL>%6{ieFZF0
zH@!Z&WNw0~e}3Y^=kx at cJLmSixkm2D`+3ec13Ybz>%aXt`qc2-O6T&tDk#G3_*`%N
zd5{mBr7=#Xe_HBzS#icMjQV)trv~~(9y_IZ<ePa;wF~BsusYpO`WM&GX}<Kgxuq7d
zzDI;f8!EL6u75mx|MM-ECKD0*Tg05XBdl)MqWlk=-COwc+#tZZ#1907F3h at a|EG at o
zlY1;<dpp9JJNk?@cJpsM1U*)+Nl4)O-sL}~?|*8XYmDD~buQnx|FpxC5wfn+$X-_c
z at f6{E0uesN?uU9fPIK+-Cb-w!YO-aXll<h|>F-8EK|F8PVGeehf0znem*1836&7 at -
z&T|r-2E4%*^Aa#U{4@!c9Q?4=1>5oZq|HakKv<<))OWaQ=;;eI-rQ8hn(dp_N^WI`
zxyQ#7K(vRI+>KEDOCK<O|K+17+V5=n9fSq*$SDcky-Wu?Sc4-rOZsP}c5LV?ti0*S
z5?Dk<_v2aXKIo6{o?Zt!%JnQ)|ND=VEvPxkuAJK!%8 at bOB}binhEx_$7QZ&pJ_5xC
zA%%8+)yqvWYY*L?RgVtyt4*>oc{K^zssp={_i;Jl1=u^Iv-&(&yT?zSH~%OWq*Nfe
zY>-2FgL-gpuqEeC>zL^<G+s%bJSe>kRt^i#jx8Dn`%+I$V8Q93!%_ixeTz)^uyrG#
zdOeBCvFS_`b{A#rkrD-*$czx_22uL^b6?3XX!tr}dEFgwHII;Hz~}-_Do~tn`WJ_)
z!0u+=w7uHM%||^*GP_-`B7sbX91!=4!k~X at Vh)>i`0~8G0le)ccNc))noP8qHNtRq
z&}qBa6tLr at m&NDzgV60AjSYtgYgNdK(tAU?22>Xxy`gz?<G-d>M-LJ+F=M9D`jvr-
z^K&D8b$5=;i|Q(rVR=K^(v8}Zd7M4+4ESUrI0}{|8VAo=AHPLtsHb;hX at qiUB78rX
z6wVF>p1A at xq=fkqg!pDCp>54<mGBXl4dr*YLe&bCFMS^?wGjL|6(yB|69z)hL5=aS
z*+9AqOVBwwzd!j(@ae#Fqn&*Zw0OOG2~KvU(^AZ8)1_|+mFzA(l3duqSv0&JYWosE
zV{0>!@0OD#DqvOnY<ueLq+)CWIHv{1nMHCiANhqcku`Q;-gL3Rl>(-Cq7r?Kl>%8(
zuWyZ-=cOkmKSMic^f3KTm0JI~;m7cSCWuj_#PXC{!w#X3Lv9K{%x(v(dG?uY;%I#y
zjcPnlj&^%NZuE1w)@g|nfzg<`(&hdA1J0effjAO;wjoH(ZGvn`xuCT<Y}UwhP+M18
zZww7w4Yu?H5Q>lL at z6T3LwWDCuYlwy<kuc}p4x%(Rn-gfceEUqUKDxr&uML5S5;Uy
z at 0U=^^#D9)minBX(ew-HToDTIVYSXSDKep0_K8S;bTp;nty85L-+<3eDV+?!2Unf@
z>$IQ#fMzl|sIlW7)K><e2h=0vLcd~@GGbe|2?rsSfMa^z$kXPt4DEZV%~&nRAn;lH
z_riJhDYDd-yH~t>+36+w;ErT*!!FM`>Hd$*fzD0o{C^LXGQmpx=O5}B|N8^6|6Sp~
y5`eVNNNlWD%nIW3sTp8pz<)*Ze}M$9{%iNw$Gf5xvHID={^Y;gkM_gC<NpsmdvKos

diff --git a/lld/docs/index.rst b/lld/docs/index.rst
index f5f9802fd974e6..637e74c70c985b 100644
--- a/lld/docs/index.rst
+++ b/lld/docs/index.rst
@@ -166,8 +166,8 @@ document soon.
    error_handling_script
    Partitions
    ReleaseNotes
+   ELF/large_sections
    ELF/linker_script
    ELF/start-stop-gc
    ELF/warn_backrefs
-   ELF/large_sections
    MachO/index



More information about the llvm-commits mailing list