More Related Content
Similar to design and implementation of the ext2 filesystem on linux
Similar to design and implementation of the ext2 filesystem on linux (20)
design and implementation of the ext2 filesystem on linux
- 1. ./75'5+6;'7,/67859(1/7.+*/38.+64)++*/3-74,8.+/67898).38+63'8/43'1=2547/9243/39
'##%!#(($#$($# ,(# !'-'(
.- $($#'(()( !''! !'%#
$$'$'')''('#'(()($#$!$- !(-('$()#
(%#+#*'(-$ #) !'(')
#($)($#
/39/7'!3/1/0+45+6'8/3-7=78+2;./).693743 )42598+678;'7/251+2+38+*,/678'7
+8+37/43848.+/3/45+6'8/3-7=78+2$ '3+3('92 %'3*/87,/678:+67/437/3)19*+*7955468,468.+
/3/,/1+7=78+2431= .+/3/,/1+7=78+2)438'/378;47+6/4971/2/8'8/437(14)0'**6+77+7'6+7846+*/3
(/8/38+-+678.978.+2'/2'1,/1+7=78+27/+/76+786/)8+*84 2+-'(=8+7'3**/6+)846/+7)438'/3,/+*
7/++386/+7'3*8.+2'/2'1,/1+3'2+/7 ).'6')8+67
#+.':+*+7/-3+*'3*/251+2+38+*8;43+;,/1+7=78+278.'8'6+/3)19*+*/38.+78'3*'6*/390+63+1
.+7+,/1+7=78+27)'11+*8+3*+*/1+=78+28,7'3*+)43*8+3*+*/1+=78+28 ,7
6'/7+8.+1/2/8'8/437'3*'**3+;,+'896+7
38./75'5+6;+*+7)6/(+8.+./7846=4,/39,/1+7=78+27#+(6/+,1=/3864*9)+8.+,93*'2+38'1)43)+587
/251+2+38+*/3!3/,/1+7=78+27#+56+7+388.+/251+2+38'8/434,8.+/689'1/1+=78+21'=+6/3/39
'3*;+*+8'/18.++)43*8+3*+*/1+=78+20+63+1)4*+'3*97+624*+84417'78;+56+7+38
5+6,462'3)+2+'796+2+3872'*+43/39'3*,/1+7=78+27'3*;+)43)19*+;/8.8.+)966+3878'8974,
8 ,7'3*8.+,9896+*/6+)8/437
'($-$#),!'-'('
3/87:+6=+'61=*'=7/39;'7)6477*+:+145+*93*+68.+/3/45+6'8/3-7=78+28;'7+'7/+6847.'6+
*/707(+8;++38.+8;47=78+278.'384*+7/-3'3+;,/1+7=78+274/397 46:'1*7*+)/*+*84/251+2+38
7955468,468.+/3/,/1+7=78+2/3/39 .+/3/,/1+7=78+2;'7'3+,,/)/+38'3*6+1'8/:+1=(9-,6++
5/+)+4,74,8;'6+
4;+:+68.+6+786/)8/437/38.+*+7/-34,8.+/3/,/1+7=78+2;+6+8441/2/8/3-745+451+78'68+*8./30/3-
'3*;460/3-438.+/251+2+38'8/434,3+;,/1+7=78+27/3/39
346*+684+'7+8.+'**/8/434,3+;,/1+7=78+27/3848.+/390+63+1'/689'1/1+=78+21'=+6
;'7*+:+145+* .+1'=+6;'7/3/8/'11=;6/88+3(=.6/764:+3'34'3*1'8+66+;6/88+3(=/397
46:'1*7(+,46+/8;'7/38+-6'8+*/3848.+/390+63+18/7*+7)6/(+*/3 .+/689'1/1+=78+2
,8+68.+/38+-6'8/434,8.+/38.+0+63+1'3+;,/1+7=78+2)'11+*8.+8+3*+*/1+=78+2;'7
/251+2+38+*/356/1 '3*'**+*84/39) ./73+;,/1+7=78+26+24:+*8.+8;4(/-/3/
1/2/8'8/437/872'/2'17/+;'7 -/-'(=8+7'3*8.+2'/2'1,/1+3'2+7/+;'7 ).'6')8+678;'7'3
/2564:+2+384:+68.+/3/,/1+7=78+2(98742+564(1+27;+6+78/1156+7+38/3/8 .+6+;'7347955468,46
8.+7+5'6'8+'))+77/34*+24*/,/)'8/43'3**'8'24*/,/)'8/438/2+78'257 .+,/1+7=78+297+*1/30+*1/787
840++586')04,,6++(14)07'3*/34*+7'3*8./7564*9)+*('*5+6,462'3)+7'78.+,/1+7=78+2;'797+*8.+
1/787(+)'2+937468+*'3*8.+,/1+7=78+2(+)'2+,6'-2+38+*
- 2. 6%5)63216)727,)6)352/)067:21):*-/)67)06:)5)5)/)%6)(-1/3,%9)56-21-1%18%5 7,)
!-%*-/)667)0%1(7,))'21(;7)1()(-/)67)0,)!-%*-/)667)0:%6,)%9-/%6)(217,)-1-;
*-/)667)0.)51)/'2()%1(21/%(()(%*):-03529)0)17629)57,-6*-/)667)0%6-'%//-73529-()(/21+
*-/)1%0)66833257*25-++)53%57-7-216%1(6833257*257,)7,5))7-0)67%03617,)27,)5,%1(;7*6:%6
%6)(217,);7*6'2():-7,0%15)25+%1-=%7-216%1(0%1-03529)0)1767,%())1()6-+1)(:-7,
)92/87-21-10-1(%1('217%-1)(63%')*25*8785)-03529)0)1767:-//)()6'5-)(:-7,025)()7%-/6-1
,))'21(;7)1()(-/)67)0
,)17,)7:21):*-/)667)06:)5)*-5675)/)%6)(7,)3529-()()66)17-%//7,)6%0)*)%785)68)72-76
0-1-0%/()6-+1!-%*6:%6025)67%/)7,%1;7*667,)*-/)667)06:)5)86)(025):-()/8+6:)5)
*-;)(-1;7*6%1(/2762*-03529)0)176%1(1):*)%785)6:)5)-17)+5%7)(;7*6-612:9)567%/)%1(
,%6)'20)7,)()*%'7267%1(%5(-18;*-/)667)0
,-67%/)'217%-16%6800%52*7,)*)%785)63529-()(7,)(-**)5)17*-/)667)06
!
!
' ' ' '
2 2 )6 )6
2 2 )6 2
! 2 2 )6 2
)6 2 )6
9)5-18;*-/)667)0-03/)0)176%%6-'6)72*'20021'21')376()5-9%7)(*5207,)1-;23)5%7-1+
667)0#%', $*-/)6%5)5)35)6)17)(-12()6(-5)'725-)6%5)6-03/*-/)6'217%-1-1+%/-672*)175-)6
%1(()9-')6'%1)%'')66)(5)48)67-1+2163)'-%/*-/)6
%',*-/)-65)35)6)17)(%6758'785)'%//)(%1-12()%',-12()'217%-167,)()6'5-37-212*7,)*-/)*-/)
73)%'')665-+,762:1)567-0)67%0366-=)32-17)5672(%7%/2'.6,)%((5)66)62*(%7%/2'.6%//2'%7)(
72%*-/)%5)6725)(-1-76-12() ,)1%86)55)48)676%123)5%7-21217,)*-/)7,).)51)/'2()'219)576
7,)'855)172**6)772%/2'.180)586)67,-6180)5%6%1-1();-17,)/2'.%((5)66)67%/)%1(5)%(625
:5-7)67,)3,6-'%//2'.,-6*-+85)5)35)6)1767,)6758'785)2*%1-12()
- 3. ! ! % !
% !% %
% ! !
!
! %!%!! !
! %
$% #
! # %
% %# ! !
#!
! !
%%!# %
% % %
% %
- 4. *+0$!.'%* +(%*'/!4%/0/%*)+/0*%4%(!/5/0!)/5)+(%(%*'/.!/%),(5%(!/3$%$+*0%*
%(!*)!$!*0$!'!.*!(!*+1*0!.//5)+(%(%*' 1.%*#,0$*)!0+%*+ !+*2!./%+*%0.!,(!/
0$!*)!+0$!(%*'5%0/+*0!*0/%!0$!*)!+0$!0.#!0%(!* .!/0.0/0$!,0$*)!%*0!.,.!00%+*
%*!/5)+(%(%*' +!/*+0,+%*00+*%*+ !%0%/,+//%(!0+.!0!.+//%(!/5/0!)//5)+(%(%*'/
5)+(%(%*'/*,+%*00+*505,!+%(!!2!*+**+*!4%/0!*0%(!/5)+(%(%*'/.!2!.51/!1(
!1/!0$!5 +*0$2!0$!(%)%00%+*///+%0! 0+$. (%*'/+3!2!.0$!51/!/+)! %/'/,!
((+0! +.0$!%.%*+ !* 0$!%. 0(+'/* 1/!*+2!.$! %*0$!,0$*)!0+%*+ !+*2!./%+*
!1/!0$!'!.*!($/0+.!/0.00$!*)!%*0!.,.!00%+*3$!*%0!*+1*0!.//5)+(%(%*'
**%4(%'!+,!.0%*#/5/0!)/ !2%!/*!!//! 2%/,!%(%(!/ !2%!/,!%(%(! +!/*+01/!
*5/,!+*0$!%(!/5/0!)0%/+*(5*!//,+%*00+0$! !2%! .%2!.
3+05,!/+/,!%(%(!/!4%/0$.0!.* (+'/,!%(%(!/$!+.)!.((+3/+,!.0%+*/%*
$.0!.)+ !3$%(!0$!(0!..!-1%.!/ 00+!3.%00!*%*(+')+ !2%0$!1!.$!1*0%+*/
$!**.!-1!/0%/) !+*/,!%(%(!%0%/+.3. ! 0+,/!1 + !2%! .%2!./,!%(%(!%/
.!!.!*! 5)+.*1)!.3$%$% !*0%%!/0$! !2%!05,!* )%*+.*1)!.3$%$% !*0%%!/0$!
1*%0
$!%*14'!.*!(+*0%*/%.01(%(!5/0!)(5!.3$%$%/1/! 1.%*#/5/0!)((/0%*#+*%(!/$!
%/*%* %.!0%+*(5!.3$%$$* (!/0$!%(!+.%!*0! /5/0!)((/* ((/0$!*!!//.51*0%+*/%*
0$!,$5/%(%(!/5/0!)+ !0+ +0$!
$%/%* %.!0%+*)!$*%/)%/.!-1!*0(51/! %**%4(%'!+,!.0%*#/5/0!)/0+!/!0$!%*0!#.0%+** 0$!
1/!+/!2!.(%(!/5/0!)05,!/(!%)* !(06!.
$!*,.+!//%//1!/%(!+.%!*0! /5/0!)((0$!'!.*!(((/1*0%+*+*0%*! %*0$!$%/
1*0%+*$* (!/0$!/0.101.!%* !,!* !*0)*%,1(0%+*/* .! %.!0/0$!((0+1*0%+*+*0%*! %*0$!
,$5/%(%(!/5/0!)+ !3$%$%/.!/,+*/%(!+.$* (%*#0$!/0.101.! !,!* !*0+,!.0%+*/%(!/5/0!)
+ !1/!/0$!1!.$!1*0%+*/0+.!-1!/0+* !2%!/$%//$!)!%/%((1/0.0! %*0$%/%#1.!
- 5. !! !!#% % ! !! ! !
! !!! ! % !
$ ! % !!% !! ! !!
!!%! ! % !!%!! !! % !!%
!!!!! % ! !!!
!!! ! ! !
!! !# !! % ! !!! !!
% ! !! ! ! !! !% % !!
! % ! !! # !! !!!#%
% !!% ! !! #%!% % !#!!
!%!% % ! !! !! % ! !
$! ! ! % !!!
$!!% ! %! ! !
!! ! !! !! #%!%
% !! !! ! !! !! !!%
! ! ! !!! $%!
- 6. ##!,+51#+#')#601#*0 ##+#0'%+#+'*-)#*#+1#1,$'50,*#-/, )#*0-/#0#+1'+1#
$'/0151#+#')#601#*2/%,)401,-/,3'#-,4#/$2)$')#0601#*4'!'*-)#*#+10+'5$')#
0#*+1'!0+,$$#/03+!#$#12/#0
$!,2/0#4#4+1#1,51 $01,3##5!#))#+1-#/$,/*+!##)0,4+1#1,-/,3'#3#/6/, 201
$')#0601#*'+,/#/1,/#2!#1#/'0(,$1),00'+'+1#+0'3#20#01 21+,1)#0151 $01,'+!)2#
-/,3'0',+$,/#51#+0',+01,)),420#/01, #+#$'1$/,*+#4$#12/#04'1,21/#$,/*11'+%1#'/$')#0601#*
#51 $002--,/1001+/+'5$')#16-#0 /#%2)/$')#0'/#!1,/'#0#3'!#0-#!')$')#0+06* ,)'!
)'+(0
51 $0'0 )#1,*+%#$')#0601#*0!/#1#,+/#))6 '%-/1'1',+0')#1#,/'%'+)(#/+#)!,#/#01/'!1#
1#*5'*)$')#0601#*0'7#1, /#!#+14,/('+1#)6#/3#/'0#1'0)'*'11, 20'1'0
+,4-,00' )#1,20# '%'0(04'1,211#+##,$!/#1'+%*+6-/1'1',+0
51 $0-/,3'#0),+%$')#+*#0120#03/' )#)#+%1'/#!1,/6#+1/'#0#*5'*)$')#+*#0'7#'0
!/!1#/0'0)'*'1!,2) ##51#+#1, '$+###
51 $0/#0#/3#00,*# ),!(0$,/1#02-#/20#/,/*))6 ,$1# ),!(0/#/#0#/3#'0)),40
1#*'+'01/1,/1,/#!,3#/#0')6$/,*0'121',+04#/#20#/-/,!#00#0$'))2-$')#0601#*0
+'1',+1,1#01+/+'5$#12/#051 $002--,/100,*##51#+0',+04'!/#+,1202))6-/#0#+1'+
+'5$')#0601#*0
')#11/' 21#0)),41#20#/01,*,'$61#(#/+#) #3',/4#+!1'+%,+0#1,$$')#0+#!+0#1
11/' 21#0,+$')#,/,+'/#!1,/6+1#)1#/!0#+#4$')#0!/#1#'+1#'/#!1,/6'+#/'11#0#
11/' 21#0
,/601#*#)#0# 0#*+1'!0!+ #0#)#!1#1*,2+11'*#*,2+1,-1',+)),401#
*'+'01/1,/1,!,,0#1#$')#!/#1',+0#*+1'!0+$')#0601#**,2+1#4'10#*+1'!0$')#0/#
!/#1#4'11#0*#%/,2-'01#'/-/#+1'/#!1,/6601#*0#*+1'!0/# '1*,/#!,*-)#5 '$
'/#!1,/601#0#1%' '10#1+#4$')#0'+#/'11#%/,2-',$1#'/#!1,/6+02 '/#!1,/'#0'+#/'11#
%/,2-'+1#0#1%' '1'+1#,1#/!0#$')#0+02 '/#!1,/'#0/#!/#1#4'11#-/'*/6%/,2-',$
1#!))'+%-/,!#00
)'(#06+!/,+,202-1#0!+ #20#'+51 $0*,2+1,-1',+)),401#*'+'01/1,/1,/#.2#01
11*#11'+,#0 '1*- ),!(0'+'/#!1 ),!(0+'/#!1,/6 ),!(0 #4/'11#+06+!/,+,20)6,+1#
'0(4#+1#6/#*,'$'#'0!+ #20#$2)1,*'+1'+01/'!1*#11!,+0'01#+!6 211'0)#01,
-,,/-#/$,/*+!#0!12))61'0$#12/#'0+,1+,/*))620#0'+!#'+'1',+1,1#-#/$,/*+!#),00
00,!'1#4'120'+%06+!/,+,202-1#0,$1#*#11'1!+!20#!,//2-1',+'+1#20#/14'!
4'))+,1 #$)%%# 61#$')#0601#*!#!(#/
- 7. 73 2!++.623(%!$,)-)231!3.13.#(..2%3(%+.')#!++.#*2)9%6(%-#1%!3)-'3(%)+%2823%,+.#*2)9%2
#!-38/)#!++8% !-$ 83%22)-')'+.#*2)9%2#!-2/%%$4/2)-#%%6%1
1%04%232!-$3(42%6%1$)2*(%!$2%%*2-%%$3.%$.-%3.!##%22!)+%-3(%.3(%1(!-$)'+.#*2
6!23%,.1%$)2*2/!#%.-3(%!5%1!'%3(%+!23+.#*!++.#!3%$3.!)+%)2.-+8(!+4++2.!2+.#*2'%3
)''%1,.1%2/!#%)26!23%$)-3(%+!23+.#*.%!#()+%-!$$)3).-,.23.3(%!$5!-3!'%2.+!1'%1
+.#*2)9%2!1%.3!)-%$873 )+%2823%,2/1%!++.#!3).-3%#(-)04%22%%2%#3).-%1.1,!-#%
./3),)9!3).-2
73 2),/+%,%-32!2328,.+)#+)-*2!2328,.+)#+)-*$.%2-.342%!-8$!3!+.#*.-3(%)+%2823%,
(%3!1'%3-!,%)2-.323.1%$)-!$!3!+.#*43)-3(%)-.$%)32%+()2/.+)#8#!-2!5%2.,%$)2*2/!#%
-.$!3!+.#*-%%$23.%!++.#!3%$!-$2/%%$24/+)-*./%1!3).-23(%1%)2-.-%%$3.1%!$!$!3!+.#*
6(%-!##%22)-'24#(!+)-*#.412%3(%2/!#%!5!)+!+%)-3(%)-.$%)2+),)3%$2.-.3%5%18+)-*#!-%
),/+%,%-3%$!2!!2328,.+)#+)-*(%,!7),!+2)9%.3(%3!1'%3-!,%)-!!2328,.+)#+)-*)2
#(!1!#3%12%/+!-3.%73%-$3()22#(%,%3.2,!++)+%2)-3(%-%!14341%
73 2*%%/231!#*.3(%)+%2823%,23!3%2/%#)!+)%+$)-3(%24/%1+.#*)242%$83(%*%1-%+#.$%3.
)-$)#!3%3(%23!342.3(%)+%2823%,(%-!)+%2823%,)2,.4-3%$)-1%!$61)3%,.$%)3223!3%)22%33.
.3+%!-(%-)3)24-,.4-3%$.11%,.4-3%$)-1%!$.-+8,.$%)3223!3%)21%2%33. +%!-3..3
3),%3(%)+%2823%,#(%#*%142%23()2)-.1,!3).-3.$%#)$%)!)+%2823%,,423%#(%#*%$(%*%1-%+#.$%
!+2.1%#.1$2%11.12)-3()2)%+$(%-!-)-#.-2)23%-#8)2$%3%#3%$83(%*%1-%+#.$%3(%)+%2823%,)2
,!1*%$!2 11.-%.42(%)+%2823%,#(%#*%13%2323()23..1#%3(%#(%#*.3(%)+%2823%,1%'!1$+%22.
)32!//!1%-3+8#+%!-23!3%
+6!822*)//)-')+%2823%,#(%#*2,!82.,%3),%2%$!-'%1.422.73 2/1.5)$%236.6!823..1#%
#(%#*2!31%'4+!1)-3%15!+2,.4-3#.4-3%1)2,!)-3!)-%$)-3(%24/%1+.#*!#(3),%3(%)+%2823%,)2
,.4-3%$)-1%!$61)3%,.$%3()2#.4-3%1)2)-#1%,%-3%$(%-)31%!#(%2!,!7),!+5!+4%!+2.1%#.1$%$)-
3(%24/%1+.#*3(%)+%2823%,#(%#*%1.1#%23(%#(%#*%5%-)3(%)+%2823%,)2 +%!-+!23#(%#*3),%
!-$!,!7),!+#(%#*)-3%15!+!1%!+2.,!)-3!)-%$)-3(%24/%1+.#*(%2%36.)%+$2!++.63(%
!$,)-)231!3.13.1%04%23/%1).$)#!+#(%#*2(%-3(%,!7),!+#(%#*)-3%15!+(!2%%-1%!#(%$3(%#(%#*%1
)'-.1%23(%)+%2823%,23!3%!-$.1#%2!)+%2823%,#(%#*73 2.%123..+23.34-%3(%)+%2823%,%(!5).1
(%/1.'1!,#!-%42%$3.,.$)8
3(%%11.1%(!5).1(%-!-)-#.-2)23%-#8)2$%3%#3%$83(%*%1-%+#.$%3(%)+%2823%,)2,!1*%$!2
11.-%.42!-$.-%.3(%3(1%%.++.6)-'!#3).-2#!-%$.-%#.-3)-4%-.1,!+%7%#43).-1%,.4-3
3(%)+%2823%,)-1%!$.-+8,.$%3.!5.)$#.114/3)-'3(%)+%2823%,,!*%3(%*%1-%+/!-)#!-$1%..3
3.14-3(%)+%2823%,#(%#*%1
3(%,!7),!+,.4-3#.4-3
3(%,!7),!+#(%#*)-3%15!+
3(%-4,%1.+.')#!++.#*21%2%15%$.13(%24/%142%1
.4-3./3).-2#!-!+2.%42%$3.#(!-'%3(%*%1-%+%11.1%(!5).1
-!331)43%!++.623(%42%123.1%04%232%#41%$%+%3).-.-)+%2(%-24#(!)+%)2$%+%3%$1!-$.,$!3!)2
61)33%-)-3(%$)2*+.#*2/1%5).42+8!++.#!3%$3.3(%)+%()2/1%5%-32,!+)#).42/%./+%1.,'!)-)-'
!##%223.3(%/1%5).42#.-3%-3.3(%)+%842)-'!$)2*%$)3.1
!23-%638/%2.)+%2)-2/)1%$1.,3(% )+%2823%,(!5%1%#%-3+8%%-!$$%$3.73 2
,,43!+%)+%2#!-.-+8%1%!$-..$8#!-61)3%.1$%+%3%3(%,()2#!-%42%$3./1.3%#32%-2)3)5%
#.-)'41!3).-)+%2//%-$.-+8)+%2#!-%./%-%$)-61)3%,.$%43$!3!)2!+6!82!//%-$%$!33(%%-$
.3(%)+%)*%),,43!+%)+%23(%8#!--.3%$%+%3%$.11%-!,%$()2)2%2/%#)!++842%4+.1+.')+%2
6()#(#!-.-+8'1.6
- 8. +(2+;5,$.5647674(1):6 ),.(5;56(/5+$5%((056410*.;,0).7(0('%;6+(.$;1761)6+(),.(5;56(/
75,- #),.(5;56(/,5/$'(721)%.1-*41725.1-*41725$4($0$.1*17561
5;.,0'(4*4172519(8(4%.1-*41725$4(0166,('616+(2+;5,$..$;1761)6+(%.1-5106+(',5-
5,0(/1'(40'4,8(56(0'61%(126,/,(')145(37(06,$.$(55$0'+,'(6+(,42+;5,$.*(1/(64;616+(
12(4$6,0*5;56(/
+(2+;5,$.5647674(1)$),.(5;56(/,54(24(5(06(',06+,56$%.(
116
(614
.1-
4172
.1-
4172
.1-
4172
$+%.1-*4172106$,05$4('70'$0612;1)47,$.),.(5;56(/10641.,0)14/$6,105572(4%.1-$0'6+(
),.(5;56(/'(54,26145$0'$.51106$,05$2$461)6+(),.(5;56(/$%.1-%,6/$2$0,01'(%,6/$2$2,((1)
6+(,01'(6$%.($0''$6$%.1-5 +(5647674(1)$%.1-*4172,54(24(5(06(',06+,56$%.(
72(4
.1-
'(54,26145
.1-
,6/$2
01'(
,6/$2
01'(
$%.(
$6$
.1-5
!5,0*%.1-*41725,5$%,*9,0,06(4/51)4(.,$%,.,6;5,0(6+(10641.5647674(5$4(4(2.,$6(',0($+
%.1-*4172,6,5($5;614(18(4)41/$),.(5;56(/9+(4(6+(572(4%.1-+$5%((0144726(' +,55647674(
$.51+(.2561*(6*11'2(4)14/$0(5%;4('7,0*6+(',56$0(%(69((06+(,01'(6$%.($0'6+('$6$%.1-5
,6,52155,%.(614('7(6+(',5-+($'5((-5'74,0*10),.(5
0:6 )5',4(614,(5$4(/$0$*('$5.,0-('.,5651)8$4,$%.(.(0*6+(064,(5$+(064;106$,056+(,01'(
07/%(46+((064;.(0*6+6+(),.(0$/($0',65.(0*6+;75,0*8$4,$%.(.(0*6+(064,(5,6,52155,%.(61
,/2.(/(06.10*),.(0$/(59,6+1769$56,0*',5-52$(,0',4(614,(5 +(5647674(1)$',4(614;(064;,5
5+190,06+,56$%.(
,01'(07/%(4 (064;.(0*6+ 0$/(.(0*6+ ),.(0$/(
5$0(:$/2.( +(0(:66$%.(4(24(5(0656+(5647674(1)$',4(614;106$,0,0*6+4((),.(5
$0'
,
,
,
+(:6 )5-(40(.1'(106$,05/$0;2(4)14/$0(126,/,$6,1059+,+6(0'61,/2418(52(('9+(0
4($',0*$0'94,6,0*),.(5
:6 )56$-(5$'8$06$*(1)6+(%7))(4$+(/$0$*(/(06%;2(4)14/,0*4($'$+($'59+(0$%.1-+$561%(
4($'6+(-(40(.1'(4(37(5656+(105(8(4$.106,*7175%.1-5 +,59$;,664,(561(0574(6+$66+(0(:6
%.1-614($'9,..$.4($';%(.1$'(',0616+(%7))(4$+(($'$+($'5$4(014/$..;2(4)14/(''74,0*
5(37(06,$.4($'510),.(5$0':6 )5(:6(0'56+(/61',4(614;4($'5(,6+(4(:2.,,64($'5 $..5
14,/2.,,610(5 -(40(.',4(614;.11-72
:6 )5$.51106$,05/$0;$..1$6,10126,/,$6,105.1-*41725$4(75('61.756(461*(6+(44(.$6(',01'(5
$0''$6$6+(-(40(.1'($.9$;564,(561$..1$6('$6$%.1-5)14$),.(,06+(5$/(*4172$5,65,01'( +,5,5
- 9. $)/ ) /*- 0 /# $.# . .( 2# )/# -) '- .)$)* )$/./'*.
# )2-$/$)//*!$' 3/ !.+- ''*/ .0+/* % )/'*.2# )''*/$)) 2'*
- ''*/$*)#$/-/ .- -*0) 1 )*)1 -4!0''!$' .4./ (.#$.+- ''*/$*)#$ 1 .**2-$/
+ -!*-() .0) -# 14'*/'.*''*2.*)/$0*0.'*./* ''*/ /*!$' ./#0.$/.+ .0+
/# !0/0- . ,0 )/$'- .
# . /2*''*/$*)*+/$($5/$*).+-*0 1 -4**'*'$/4*!
- '/ !$' ./#-*0#'*-*0+.
- '/ '*./#-*0#/# $/.'0./ -$)*!'*''*/$*).
*''*20. -(* +-*-(./*()$+0'/ /# *)/-*'./-0/0- .*!)3/ !$' .4./ (/# '$ 3/ !.'$--4
2. 1 '*+ #$.'$--4+-*1$ .-*0/$) .2#$#) 0. /* 3($) )(*$!4/# /*!)3/
!$' .4./ (4 ..$)/# !$' .4./ ($- /'4/#-*0#/# +#4.$' 1$
# 3/ !.'$--42. .$) /*''*2(3$('* - 0. /#-*0#/# 0. *!.*!/2- ./-/$*)
/ #)$,0 .*- 3(+' . 1 -'$!! - )/$/ -/*-.- +-*1$ +-*-().$(+'4+..$)!0)/$*)/*
2#$#2$'' '' !*- #'*$))$)* )*/# -$/ -/*-!0)/$*)
''*2.)0. -+-*1$ !0)/$*)/* '' !*- #!$' $)$- /*-4
)4*!/# 3/ !.0/$'$/$ . ) 0. /# 3/ !.'$--4
#$.- /'4.$(+'$!$ ./# ($)/$)) *!/# . 0/$'$/$ ..$) )4#) ./*- !' /) 2! /0- .$)/#
3/ !$' .4./ (!*-(/) *)'4 ( $)*) +' $)/# 3/ !.'$--4#$.* - 0. '.*- .0'/.$)
.('' -$)-$ ..$) /# 3/ !.'$--4) 0$'/..#- '$--4$(
0. /# $)/ -! .*!/# 3/ !.'$--4- .*./-/) ) -') 2+-*-(.2#$#- ,0$- $- /
../*/# 3/ !.!$' .4./ ()1 -4 .$'4 2-$// )*- 3(+' /# 3/ !.'$--42.0. 0-$)
/# +*-/*!/# 0(+)- ./*- 0+0/$'$/$ . -4! 2#) .2 - ) /*+//# .
/**'./*$)03*)'4! 2!$' .4./ ( + ) )/!0)/$*).#/* - +' 4''./*/# 3/ !.'$--4
# 3/ !.'$--4+-*1$ . ../*. 1 -''.. .*!*+ -/$*).# !$-./'..- /# !$' .4./ (*-$ )/
*+ -/$*).+-*-()*+ ))'*. !$' .4./ (- )2-$/ /# $/(+.)- / ) 2
!$' .4./ (*)/# $.0)/$*).- '.*1$'' /*()$+0'/ /# !$' .4./ (.'*.'$./
# . *)'..*!*+ -/$*).!! /$- /*-$ .'' -*!/# 3/ !.'$--4)- / ) 3+)
$- /*-$ ..2 ''.)- (*1 $- /*-4 )/-$ .0)/$*).- '.*+-*1$ /**/#- .*'1
+/#)( /*)$)* )0( -)/* / -($) +/#)( *!)$)* $1 )$/.$)* )0( -
# !$)''..*!*+ -/$*).- *-$ )/ -*0)$)* ./$.+*..$' /*.)/# $)* /' - )2-$/
$)* .).)/#-*0#''*!/# '*.$))$)* ''*/$*)) ''*/$*)-*0/$) .- '.*
1$'' )''*20. -(* +-*-(./*''*/ )!- '*.)$)* .
*2 -!0'() ( )//**'.#1 ) 1 '*+ !*-3/ !.# . 0/$'$/$ .- 0. /*- / (*$!4)
*-- /)4$)*).$./ )$ .$)3/ !$' .4./ (.# +-*-($.0. /*$)$/$'$5 +-/$/$*)/*
*)/$)) (+/43/ !$' .4./ (
- 10. ,) 463+6%1'%2)97)(8313(-*=8,)*-0)7=78)14%6%1)8)677)40%-2)(-27)'8-32
$$(:%2')(8 *7*)%896)7-8'%2',%2+)8,))6636),%:-368,)1%-1%013928'39288,)1%-1%0',)'/
-28)6:%0%2(8,)291)63*03+-'%003'/76)7)6:)(*368,)794)697)6
,)1378-28)6)78-2+8330-7463%0=8,)*-0)7=78)1',)'/)6-7-28)2()(836)4%-6*-0)7=78)1
-2'327-78)2'-)7%*8)6%292'0)%27,98(3;23*8,)7=78)1 ,)36-+-2%0:)67-323*;%7%7)(32
-297 36:%0(7*7'/463+6%1*368,)-2-*-0)7=78)13;):)68,)'966)28:)67-323*;%7
6);6-88)2*6317'6%8',97-2+8,)8 *70-6%6=%2(-719',*%78)6%2('%2'366)'8136)*-0)7=78)1
-2'327-78)2'-)78,%28,)36-+-2%0:)67-32
,)463+6%1-7()7-+2)(83692%759-'/0=%74377-0)-2')*-0)7=78)1',)'/)678)2(83)(-7/
392(8,-7;%7(32)=348-1--2+8,)%0+36-8,1797)(=738,%8*-0)7=78)17869'896)7%6)238
6)4)%8)(0=%'')77)(*6318,)(-7/2%((-8-328,)36()6-2;,-',-23()7%2((-6)'836-)7%6)',)'/)(%6)
7368)(=03'/291)6836)(9')8,)%139283*8-1)-2(-7/7))/7%2=3*8,)7)-()%7;)6)36-+-2%00=
)4036)(=-2%%2(16%8, #%08,39+,8,)=,%:)7-2')))2*968,)66)*-2)(=8,)%98,367
24%77 -8)6%8)73:)6%003*8,)-23()7-28,)*-0)7=78)1%2(4)6*3617',)'/73:)6)%',-23()%7%2
92'322)'8)(3.)'8-28,)*-0)7=78)1 ,%8-78,)7)',)'/7(32386)59-6)%2='6377',)'/78338,)6
*-0)7=78)13.)'87%140)73*79',',)'/7-2'09()1%/-2+796)8,)*-0)13()-70)+%0%2(8,%8%003*8,)
03'/7-28,)-23()%6):%0-(03'/291)6796-2+4%77 -81%47-2(-'%8-2+;,-',03'/7%2(-23()7%6)
-297)%6)'314-0)(
*238-')7(%8%03'/7;,-',%6)'0%-1)(=136)8,%232)-23()-8-2:3/)74%77)7 8,639+,
836)730:)8,)7)'32*0-'87)-8,)6='032-2+8,)7,%6)(03'/7738,%8)%',-23(),%7-873;2'34=3*8,)
7,%6)(03'/36=()%003'%8-2+32)36136)3*8,)-23()7
%77 8%/)78,)032+)788-1)83))'98)7-2')%003*8,)-23()7,%:)83)6)%(-2831)136=%2(',)'/)(
36)(9')8,) 8-1)2)')77%6=-2*9896)4%77)7'6-8-'%0*-0)7=78)1-2*361%8-32-7'%',)(-21)136= ,)
1378-14368%28)%140)3*8,-78)',2-59)-78,)03'%8-3232(-7/3*%003*8,)(-6)'836=03'/7328,)
*-0)7=78)1 ,-73:-%8)78,)2))(836)6)%(8,)(-6)'836=-23()77869'896)7(96-2+4%77 8338%-28,-7
-2*361%8-32
%77 ',)'/7(-6)'836-)7%792'322)'8)(3.)'87-2')(-6)'836=)286-)7(323874%2(-7/03'/7)%',
(-6)'836=03'/'%2)',)'/)(-2(-:-(9%00=;-8,3986)*)6)2')8338,)6(-6)'836=03'/7 ,-7%003;7
837368%003*8,)(-6)'836=03'/7=03'/291)6%2(',)'/(-6)'836=03'/7-2%7')2(-2+36()68,97
()'6)%7-2+(-7/7))/8-1) ,)(-6)'836=03'/7%6)',)'/)(831%/)796)8,%88,)(-6)'836=)286-)7%6):%0-(
%2('328%-26)*)6)2')783-23()291)67;,-',%6)-297)%7()8)61-2)(=4%77
368,)*-678(-6)'836=03'/-2)%',(-6)'836=-23()8,)$%2($)286-)7%6)',)'/)(831%/)796)8,)=
)-78%2(8,%88,)-23()291)6*368,)$)286=1%8',)78,)'966)28(-6)'836= ,)-23()291)6*368,)$
)286=-7238',)'/)(928-04%77
%77 %073'%',)7-2*361%8-32'32')62-2+8,)4%6)28(-6)'836=-2;,-',)%',(-6)'836=-70-2/)(*%
(-6)'836=-76)*)6)2')(=136)8,%232)(-6)'836=8,)7)'32(6)*)6)2')3*8,)(-6)'836=-786)%8)(%7%2
-00)+%0,%6(0-2/%2(-8-76)13:)(
8-7238);368,=83238)8,%8%88,))2(3*4%77 2)%60=%003*8,)(-7/ ;,-',2))(7834)6*361-7
'3140)8)2*361%8-326)59-6)(=4%77)7 %2(%6)'%',)(-21)136=,)2')8,)6)1%-2-2+4%77)73*
%6)0%6+)0=!392(%2(8%/)0)778,%2 3*8,)838%06922-2+8-1)3*
24%77 8,)(-6)'836='322)'8-:-8=-7',)'/)(86%')78,)4%8,3*)%',(-6)'836=%'/838,)6338
97-2+-2*361%8-328,%8;%7'%',)((96-2+4%77 88,-78-1)8,)$)286=*36)%',(-6)'836=-7%073
- 11. +(-('51/$-(463(,5,47$.,'0:',3(513,(48+,+$0015%(53$('%$-515+(3115$3(.,0-('515+(
',3(513:
02$44 +(-45+(3()(3(0(16054)13$..,01'(4%:,5(3$5,0*17(3$..5+(,01'(4$0'1/2$3,0*
5+(.,0-160548+,+8(3($+(',02$44 $*$,045,05(30$.1605(341/265(''63,0*2$44(4 $0'
0:60'(.(5('),.(48,5+$;(31.,0-1605,4$.41.,0-('515+( ',3(513:'63,0*5+,42$44
,0$..:,02$44 +(-45+(7$.,',5:1)5+(),.(4:45(/46//$3:,0)13/$5,1051/2$3(45+(%.1-
$0',01'(%,5/$248+,+8(3(1045365(''63,0*5+(23(7,1642$44(4$*$,0455+($56$.%,5/$24105+(
),.(4:45(/$0'133(545+(10',4-12,(4,)0((44$3:
+(),.(4:45(/'(%6**(3,4$015+(364()6.511. ,4$218(3)6.231*3$/8+,+$0%(64('51
(9$/,0($0'+$0*(5+(45$5(1)$),.(4:45(/$4,$..:,52317,'(4$0,05(3$5,7(,05(3)$(515+(95 )4
.,%3$3:1//$0'45:2('%:5+(64(3$3(53$04.$5(',051$..4515+(.,%3$3:3165,0(4
$0%(64('51(9$/,0(5+(,05(30$.4536563(41)$),.(4:45(//$06$..:3(2$,3$133625('
),.(4:45(/133($5(5(45$4(4)13 !0)13560$5(.:5+,4231*3$/$0%('$0*(3164,),5,464('%:
2(12.(8+1'1015-0188+$55+(:$3('1,0*,5,47(3:($4:51'(4531:$),.(4:45(/8,5+5+,4511.135+,4
3($410 12(04),.(4:5(/4)133($'10.:$(44%:'()$6.5 +(64(3/645(92.,,5.:42(,):5+(
).$*,013'(35164( 5112(0$),.(4:45(/)133($'8,5($(44
(+$7(360%(0+/$3-451/($463(),.(4:45(/2(3)13/$0(4(0+/$3-4+$7(%((0/$'(10$/,''.(
(0'%$4('10$, # 231(441364,0* 1)/(/13:$0'581 ',4-4 +(5(454
8(3(3601095 )4$0'#,$)4,069 $0'105+($45),.(4:45(/,0$4:0+310164$0'
4:0+310164/1'(3(( .2+$%$4('105+( ,5(',453,%65,10
(+$7(360581',))(3(05%(0+/$3-4 +(100,(%(0+/$3-5(45442(('10$%,*),.(5+(),.(4,;(
8$44(551'63,0*5+(5(454583,5(4'$5$515+(),.(64,0*+$3$5(3%$4('3(83,5(45+(105(0541)
5+(8+1.(),.(83,5(4'$5$64,0*%.1-%$4('3($'45+(),.(64,0*+$3$5(3$0'%.1-$0'4((-4
,0515+(),.( +(0'3(8(0+/$3-8$4'(7(.12('$5$30(**,((..10!0,7(34,5:$0'+$4%((064('$5
5+(!0,7(34,5:1)(3-(.(:51%(0+/$3-$0'53604,0),7(2+$4(4,53($5(4$',3(513:
+,(3$3+:/$-(4$12:1)5+('$5$3(634,7(.:(9$/,0(5+(45$5641)(7(3:),.((9$/,0((7(3:%:5(1)
(7(3:),.($0'1/2,.(4(7(3$.1)5+(),.(4
+(3(46.541)5+(100,(%(0+/$3-$3(23(4(05(',05+,45$%.(
4:0
:0
95 )4
#,$)4
+(3(46.54$3(7(3:*11',0%.1-13,(05('95 )41652(3)13/415+(3),.(4:45(/4 +,4,4.($3.:$
- 12. *-5-.1:6.:0-67:141@):165915+3;,-,15:0-)336+):16586;:15-9%81:-9)8-.)9:*-+);9-,):)19=81::-515
+3;9:-846,- -),9)8-.)9:*-+);9-+65:1/;6;9*36+290)-*--5)336+):-,:6:0-.13-0;9:0-8-1956
0-),9--2*-:=--5:=68-),9)5,:0-8-),)0-),67:141@):1659+)5*-.;33?;9-,
5:0-6:0-80)5,7-8.684)5+-19*-::-815:0-8--!67-8):15/9?9:-415+0)8)+:-8681-5:-,01919
786*)*3?,;-:6:0-.)+::0):8--!)5,15;,656:;9-:0-9)4-9:,1686;:15-915:0-188-97-+:1-
31*8)81-9:9--49:0):8--!0)9)468-67:141@-,+0)8)+:-831*8)8?)5,1:97-8.684)5+-19*-::-8
!
0-8-9;3:96.:0-5,8-=*-5+04)82)8-78-9-5:-,15:019:)*3-
!9?5+
!!?5+
: .9
1).9
0-8-9;3:96.:0-:=6.189:7)99-9906=:0):15;*-5-.1:9.8641:9)9?5+08656;94-:),):)57)99-9
)5, ,18-+:681-9)5,.13-9)8-+8-):-,)5,!9?5+08656;93?=81:-9156,-9)5,,18-+:68?-5:81-90-8-19
)5)564)3?:06;/0--515)9?5+08656;946,-:0-7-8.684)5+-;5,-8!197668%-9;97-+::0)::0-
)9?5+08656;99;7768:;5,-88--!1956:.;33?1473-4-5:-,
57)99 :0-15;)5,!:14-9)8--8?91413)801919)*1/786/8-99)/)159::0-9)4-*-5+04)828;5
91465:09)/6%013-!;9-,:66;:7-8.68415;*?).)+:686. 15:019:-9::0-),,1:1656.).13-
5)4-+)+0-15:0-$!0)9.1-,:0197-8.684)5+-786*3-4
57)99-9 )5, 15;19.)9:-8:0)58--!4)153?*-+);9-1:;9-9)5;51.1-,*;..-8+)+0-
4)5)/-4-5:0-*;..-8+)+0-97)+-+)5/86==0-55--,-,)5,;9-468-4-468?:0)5:0-65-15
8--!=01+0;9-9).1-,91@-*;..-8+)+0-647)819656.:0-: .9)5,1).98-9;3:9906=9:0)::0-
67:141@):165915+3;,-,15: .9)8-8-)33?;9-.;3:0-7-8.684)5+-/)15*-:=--5: .9)5,1).919)86;5,
0-!-+65,:-5,-,13-!?9:-419786*)*3?:0-469:=1,-3?;9-,.13-9?9:-415:0-15;+644;51:?:
7861,-99:)5,)8,#51.13-9-4)5:1+9)5,),)5+-,.-):;8-968-6-8:0)529:6:0-67:141@):1659
15+3;,-,15:0-2-85-3+6,-1:1986*;9:)5,6..-89-+-33-5:7-8.684)5+-
!15+-: .90)9*--5,-91/5-,=1:0-63;:16515415,1:+65:)15906629:0):+)5*-;9-,:6),,5-=
.-):;8-9!64-7-673-)8-=68215/65-:-591659:6:0-+;88-5:.13-9?9:-4)++-99+65:863319:9+65.68415/:6
:0-6919-4)5:1+9' (;5,-3-:-)5,65:0-.3?.13-+6478-99165
: .9=)9.189:,--367-,)5,15:-/8):-,15:0-15;2-85-3)5,1956=)+:1-3?*-15/768:-,:66:0-8
67-8):15/9?9:-495: .99-8-88;5515/65:676.:0-#;8,0)9*--51473-4-5:-,-673-)8-
)396=68215/65)5: .9768:15:0-!9-8-88;5515/65:676.:0-)+041+862-85-3'++-::)
()5,15:0-$!)67-8):15/9?9:-4)9:*;:56:3-)9:: .919)514768:)5:7)8:6.:0-)91
67-8):15/9?9:-4')8, (+;88-5:3?;5,-8,--3674-5:*?65-6.:0-);:0689
- 13. $30A= 150;806.9/0,8/=9963,?0-008@;4==0879=6B-B=30,=39;91=34:,:0;#9709=30;:09:60
3,?0,69.98=;4-=0/=9=30/0?069:708=91A= 104=30;-B220=48280@10,=;09;-B08/482:,=.30
'0@,8==9=3,85=300.98=;4-=9;19;=304;306:
*..0==,,% +..0==,,;98'9695B96-,34/$0?,84,8,8/
)982,.30@0;80698/,=4989;%(0?069:708=8*(#'!+( ,
-* (' *'80
*,.3 +,.3 +#!'( ,)*,#'!/+,!;08=4.0,66
*48,,8/7;,=3 +48,,8/!7;,=3,=0;1.519;#%84A8*(#'!+( ,
#',* (' *',8,;B
*,;/,% +,;/9770648#,B;,,8/D?06$30#(6=4#0;?0; :0;,=482
#B=078(*$+()('#*($*'%'(%(!/ (* #+,*#-,/+,+80
* + (*,(*,%)*,#'!/+,',* (* ()-,*
'.#*('',+ * ,8=4==09160.=;4.,6,8/60.=;984.824800;8.
*6047,8 +#6047,889/08;.34=0.=;019;6=4:60460#B=07$B:048#8%(8
*(#'!+( ,-* (' *':,20 80
*.4.5,% +.4.5'9B#01160;,8/,-;B,=460#B=0719;%(
*'+,#('+(' ()-,*/+,+ 2=
*#06=C0;,% +#06=C0;9=4..4.5,8/#=,064887:60708=,=49891,92
#=;.=;0/460#B=0719;%(8*(#'!+( , #',* (' *',8,;B
*$,808-,7 +$,808-,7)*,#'!/+,+ +#!'')%',,#('!;08=4.0,66
$3,85=94.3,069389819;$4C4824=9;4248,66B19;048=300;806,.50;4/0