!"##$%&'(#)*#"+',$#-'./%#*)0#12 34 56)%'7'8*$9:)% ;"*:$/%<'=)4'>?@'>AAB

./C4*$&-#'>AAB'56)%'7'8*$9:)%D'7EE'F$&-#:'F":"*6"+D'

G

!"#$%&'(&)'*+%*+, H)3E"'/I'./%#"%#:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD> JK*C/:"'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL M$0"%:$%&'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL N$:0E)$O"*:'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL J*"*"PK$:$#":DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDL N/,%E/)+$%&'./%#*)0#12DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD1 QK$E+$%&'#-"'./%#*)0#12'M$3*)*4DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDR .*")#$%&'#-"'J*/S"0#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDR 7++$%&'(/K*0"'./+"')%+'M$3*)*$":DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDB ./%I$&K*$%&'#-"'QK$E+'J)#-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD? .*")#$%&'#-"'M$3*)*4'27F'T$E"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG> U:$%&'./%#*)0#12DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG1 .*")#$%&'#-"'J*/S"0#DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG1 7++$%&'M$3*)*$":DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG1 ./%I$&K*$%&'#-"'QK$E+'J)#-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG1 V*$#$%&')%'WX)OCE"'J*/&*)ODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDGB H-"'=4Q")%'.E)::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDGB H-"'=)$%'.E)::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG? FK%%$%&'#-"'WX)OCE"'J*/&*)ODDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDG?

>

-./0',%& H-$:'+/0KO"%#')$O:'#/'+":0*$3"'-/,'#/'&"##$%&':#)*#"+',$#-'./%#*)0#12@')'#//E'#-)#':KCC/*#:'+":$&%' 34'0/%#*)0#'C*/&*)OO$%&'$%'2)6)'Y')%+'E)#"*D

123%*,2*4& H-$:'+/0KO"%#'$:'E$0"%:"+'K%+"*')'.*")#$6"'./OO/%:'7##*$3K#$/%Z[/%0/OO"*0$)EZ(-)*"'7E$\"'LDA' M$0"%:"D'

52,3$"26%/,& H-/K&-'5'-)6"'+/%"'O4'3":#'#/')6/$+'$#@'#-$:'+/0KO"%#'O$&-#'0/%#)$%'"**/*:D'5'0)%%/#'3"'-"E+' *":C/%:$3E"'I/*')%4'"II"0#:'0)K:"+@'+$*"0#E4'/*'$%+$*"0#E4@'34'#-"'$%I/*O)#$/%'$%'#-$:'+/0KO"%#']'4/K' )*"'K:$%&'$#'/%'4/K*'/,%'*$:\D' (K3O$##$%&')%4':K&&":#$/%:@'/*':$O$E)*@'#-"'$%I/*O)#$/%':K3O$##"+'3"0/O":'O4'C*/C"*#4')%+'4/K' &$6"'O"'#-"'*$&-#'#/'K:"'#-"'$%I/*O)#$/%'$%',-)#"6"*',)4'5'I$%+':K$#)3E"@',$#-/K#'0/OC"%:)#$%&'4/K' $%')%4',)4D' 7EE'#*)+"O)*\:'$%'#-$:'+/0KO"%#')*"'C*/C"*#$":'/I'#-"$*'*":C"0#$6"'/,%"*')%+'+/'%/#'$OCE4' "%+/*:"O"%#'/I')%4'\$%+D' H-$:'+/0KO"%#'-):'3""%',*$##"%'$%'O4':C)*"'#$O"')%+'-):'%/'0/%%"0#$/%',-)#:/"6"*',$#-'O4' "OCE/4"*D'

-/%/%7.2,2+%, 7EE'+"6"E/CO"%#'$%'#-$:'+/0KO"%#',):'+/%"'K:$%&'W0E$C:"'LDLD>',$#-'7:C"0#2'+"6"E/CO"%#'#//E:' GDYD>@',-$0-'K:":'7:C"0#2'GDRDAD

L

5'8*$'"92*4&)'*+/"3+:; !/'#/'#-"'./%#*)0#12',"3ZC)&"')%+'+/,%E/)+'#-"'E)#":#'*"E"):"D'5%'O4'0):"'$#'$:'./%#*)0#12Y'ADBAD U%C)0\'#-"')*0-$6"')%+'#-*/,'),)4'#-"'./%#*)0#12'E$3*)*4'I$E"'%)O"+'^0/%#*)0#1SYDS)*_D

H-"'E/0)#$/%'/I'#-"'./%#*)0#12'E$3*)*4'I$E"'$%'#-"'K%C)0\"+'./%#*)0#12'+$:#*$3K#$/%D

V-4'#-*/,'),)4'#-"'./%#*)0#12'E$3*)*4` H-"'6"*:$/%'/I'./%#*)0#12'5'+/,%E/)+"+@'./%#*)0#12Y'ADBA@',):')CC)*"%#E4'0/OC$E"+',$#-'7:C"0#2' GDY@',-$0-'*"&*"#IKEE4'$:'$%0/OC)#$3E"',$#-'7:C"0#2'GDR@',-$0-'5')O'K:$%&@')#'#-"'#$O"'/I',*$#$%&'#-$:' +/0KO"%#D

1

W**/*:'E$\"'#-"'I/EE/,$%&',$EE'/00K*@',-"%'#*4$%&'#/'K:"'#-"'/*$&$%)E'E$3*)*4<

W**/*'/00K*$%&',-"%'#*4$%&'#/'K:"'#-"'/*$&$%)E'./%#*)0#12Y'ADBA'E$3*)*4',$#-'7:C"0#2'GDRD

(/@'$%'/*+"*'#/'K:"'./%#*)0#12@',"'-)6"'#/'3K$E+')'%",'6"*:$/%'/I'#-"'E$3*)*4D

Y

<.2$92*4&+=%&)'*+/"3+:;&12#/"/> Q"I/*"',"'0)%')0#K)EE4'K:"'./%#*)0#12@',"'%""+'#/'3K$E+'#-"'./%#*)0#12'E$3*)*4D'H-$:',$EE'3"'+/%"' K:$%&'W0E$C:"@'#/'O)\"'#-"'C*/0"::'"):$"*D

!"#$%&'()%*#)+",-#.% T$*:#',"'OK:#'0*")#"')'C*/S"0#'$%'W0E$C:"D'($%0"'./%#*)0#12'0/%#)$%:')'%KO3"*'/I'):C"0#:@',"'0*")#"' )%'7:C"0#2'C*/S"0#D'!/'#/'#-"'T$E"'O"%K@':"E"0#'#-"'[",'O"%K'$#"O')%+'#-"%':"E"0#'J*/S"0#'$%'#-"' :K3ZO"%K'#-)#')CC")*:D

T$*:#':#"C'$%'0*")#$%&'#-"'C*/S"0#'I/*'3K$E+$%&'#-"'./%#*)0#12'E$3*)*4']':"E"0#$%&'#-"'C*/S"0#'#4C"D

("E"0#'#-"'7:C"0#2'J*/S"0#'#4C"@'):':-/,%'$%'#-"'C$0#K*"')3/6"')%+'#-"%'0E$0\'#-"'["X#'3K##/%D

R

7#'#-$:':#)&"@',"'0)%'%)O"'#-"'C*/S"0#')%+'0/%I$&K*"'#-"'2)6)'6"*:$/%'$#'K:":D'5'0-//:"'#/'%)O"'#-"' C*/S"0#'^./%#*)0#12Y_')%+'K:"'#-"'+"I)KE#'2)6)'6"*:$/%D

("0/%+':#"C'/I'0*")#$%&'#-"'W0E$C:"'C*/S"0#'I/*'3K$E+$%&'#-"'./%#*)0#12'E$3*)*4D

.E$0\'#-"'T$%$:-'3K##/%D H-"'C*/S"0#'0*")#$/%'$:'%/,'I$%$:-"+@'#-"'%"X#':#"C'$:'#/')++':/K*0"'0/+"')%+'E$3*)*$":'#/'#-"'C*/S"0#D

a

/00&'()1,2".#)!,0#)$'0)3&4"$" V"'OK:#'%/,'E")6"'W0E$C:"'I/*')',-$E"@'$%'/*+"*'#/'0/C4'#-"':/K*0"'0/+"')%+'#-"'E$3*)*$":'I*/O'#-"' ./%#*)0#12'+$:#*$3K#$/%'+$*"0#/*4'#/'#-"'W0E$C:"'C*/S"0#'SK:#'0*")#"+D (#)*#'34'E/0)#$%&'#-"'C*/S"0#'+$*"0#/*@'K:K)EE4'E/0)#"+'$%'#-"'W0E$C:"',/*\:C)0"D'5%'#-$:'+$*"0#/*4@' 0*")#"')'%",'+$*"0#/*4'%)O"+'^E$3_D T*/O'#-"'+$*"0#/*4'$%'#-"'./%#*)0#12'+$:#*$3K#$/%':-/,%'$%'#-"'C$0#K*"'3"E/,@'0/C4')EE'/I'#-"'27F' I$E":'#/'#-"'^E$3_'+$*"0#/*4',"'SK:#'0*")#"+'$%'#-"'C*/S"0#D

M/0)#$/%'/I'#-"'E$3*)*$":'*"PK$*"+'#/'3K$E+'#-"'./%#*)0#12'E$3*)*4'$%'#-"'./%#*)0#12'+$:#*$3K#$/%'+$*"0#/*4D

["X#'0/C4'#-"'0/%#"%#:'/I'#-"'^:*0_'I/E+"*@'E/0)#"+'$OO"+$)#"E4'3"E/,'#-"'^E$3_'I/E+"*'$%'#-"')3/6"' C$0#K*"@'#/'#-"'^:*0_'I/E+"*'$%'#-"'W0E$C:"'C*/S"0#D

B

5I',"'%/,'&/'3)0\'#/'W0E$C:"@':"E"0#'#-"'C*/S"0#')%+'C*"::'#-"'TY'\"4@'$%'/*+"*'#/'*"I*":-'#-"'C*/S"0#' 0/%#"%#:@'#-"'C*/S"0#':-/KE+'%/,'E//\:':/O"#-$%&'E$\"'#-$:'$%'#-"'J*/S"0#'3*/,:"*<

H-"'./%#*)0#12'E$3*)*4'C*/S"0#'$%'W0E$C:"')I#"*'-)6$%&')++"+'#-"'E$3*)*$":')%+'#-"':/K*0"'0/+"D

7:'0)%'3"':""%@'#-"*"')*"'0/OC$E)#$/%'"**/*:']'#-$:'$:'3"0)K:"'#-"'E$3*)*$":'-)6"%b#'3""%')++"+'#/'#-"' 2)6)'3K$E+'C)#-'4"#D

!,'6&(2"&'()%*#)72&80)+$%* F$&-#Z0E$0\'/%'#-"'C*/S"0#'%)O"')%+':"E"0#'QK$E+'J)#-'$%'#-"'O"%K'#-)#')CC")*:')%+'#-"%'./%I$&K*"' QK$E+'J)#-'$%'#-"':K3ZO"%KD

Q*$%&$%&'KC'#-"'QK$E+'J)#-'0/%I$&K*)#$/%'+$)E/&'I/*'#-"'./%#*)0#12'E$3*)*4'C*/S"0#'$%'W0E$C:"D

?

5%'#-"',$%+/,'#-)#')CC")*:@'0E$0\'#-"'7++'27F:'3K##/%'/%'#-"'*$&-#D 7%/#-"*',$%+/,')CC")*:@'$%',-$0-',"'0)%':"E"0#'#-"'27F'I$E":'#/')++'#/'#-"'3K$E+'C)#-D'cC"%'#-"' ./%#*)0#12'E$3*)*4'C*/S"0#')%+'#-"'^E$3_'I/E+"*',$#-$%'#-"'C*/S"0#D'H-"%':"E"0#')EE'#-"'E$3*)*4'I$E":'4/K' SK:#'0/C$"+'$%#/'#-"'C*/S"0#D'H-"'*":KE#':-/KE+'E//\'E$\"'#-$:<

("E"0#$%&'#-"'27F'I$E":'#/')++'#/'#-"'./%#*)0#12'E$3*)*4'C*/S"0#b:'3K$E+'C)#-D

V-"%'I$%$:-"+@'0E$0\'#-"'c8'3K##/%D

GA

H-"'2)6)'QK$E+'J)#-',$%+/,':-/KE+'%/,'E//\':/O"#-$%&'E$\"'#-$:<

2)6)'QK$E+'J)#-',$%+/,')I#"*'-)6$%&')++"+'#-"'*"PK$*"+'E$3*)*$":'#/'#-"'./%#*)0#12'E$3*)*4'C*/S"0#D

.E$0\'#-"'c8'3K##/%D H-"'C*/S"0#':-/KE+'%/,'0/OC$E"',$#-/K#')%4'"**/*:D

GG

!"#$%&'()%*#)3&4"$"9):&8# ("E"0#'#-"'./%#*)0#12'E$3*)*4'C*/S"0#'$%'#-"'W0E$C:"'C*/S"0#'3*/,:"*'34'0E$0\$%&'/%'$#'/%0"D 5%'#-"'T$E"'O"%K@':"E"0#'#-"'WXC/*#'O"%K'$#"O']')',$%+/,')EE/,$%&'4/K'#/':"E"0#',-)#'#/'"XC/*#' :-/KE+')CC")*@'E//\$%&'E$\"'#-$:<

T$*:#':#"C'$%'0*")#$%&'#-"'./%#*)0#12'E$3*)*4']':"E"0#$%&'"XC/*#'#/'27F'I$E"D

.E$0\'#-"'["X#'3K##/%D

G>

5%'#-"'I/EE/,$%&',$%+/,',"',$EE':"E"0#'#-"'*":/K*0":'#-)#')*"'#/'3"'"XC/*#"+'#/'#-"'./%#*)0#12' E$3*)*4D

("E"0#$%&'#-"'*":/K*0":'#/'3"'"XC/*#"+'#/'#-"'./%#*)0#12'E$3*)*4D ! ! ! ! !

Q"&$%'34'+"Z:"E"0#$%&'#-"'D0E)::C)#-')%+'DC*/S"0#'*":/K*0":'/%'#-"'*$&-#D .E$0\'/%'#-"':O)EE'#*$)%&E"'#/'#-"'E"I#'/I'#-"'./%#*)0#12'E$3*)*4'C*/S"0#':/'4/K'0)%':""'#-"' ^:*0_')%+'^E$3_'I/E+"*:D N"Z:"E"0#'#-"'^E$3_'I/E+"*@'):':-/,%'$%'#-"'C$0#K*"D ("E"0#'#-"'+":#$%)#$/%',-"*"'#-"'./%#*)0#12'E$3*)*4'I$E"',$EE'3"':)6"+')%+',-)#'%)O"'$#',$EE' -)6"'34'K:$%&'#-"'Q*/,:"'3K##/%'/%'#-"'E"I#D .E$0\'#-"'T$%$:-'3K##/%'#/'0*")#"'#-"'E$3*)*4D GL

W0E$C:"',$EE'0/OCE)$%')3/K#':/O"'"**/*@'3K#'#-$:',$EE'%/#')II"0#'#-"'*":KE#'/I'#-"'3K$E+']'SK:#'0E$0\'#-"' c8'3K##/%'$%'#-"'"**/*'+$)E/&'#/'0/%#$%K"D [/,',"')*"'*")+4'#/'K:"'./%#*)0#12d

?,2*4&)'*+/"3+:; [/,',"',$EE',*$#"')':O)EE'C*/&*)O'#-)#'K:":'./%#*)0#12@'$%'/*+"*'#/'&"#')'&E$OC:"'/I'-/,'$#',/*\:D H-$:'"X)OCE"'$:'34'%/'O")%:'"X-)K:#$6"')%+':-/KE+'%/#':"*6"'):'O/*"'#-)%')'6"*4'3*$"I'$%#*/+K0#$/%' #/':/O"'/I'#-"'I")#K*":'/I'./%#*)0#12D

!"#$%&'()%*#)+",-#.% 5%'#-"':)O"',)4'):',"'+$+',-"%'0*")#$%&'#-"'C*/S"0#'I/*'#-"'./%#*)0#12'E$3*)*4'+":0*$3"+')3/6"@' 0*")#"')'%",'7:C"0#2'C*/S"0#@'3K#'&$6"'$#')%/#-"*'%)O"D'5'0-/:"'#-"'%)O"'^T$*:#./%#*)0#12WX)OCE"_D

/00&'()3&4"$" M")6"'W0E$C:"'I/*')'O/O"%#'#/'0*")#"')'^E$3_'+$*"0#/*4'$%'#-"'"X)OCE"'C*/&*)O'C*/S"0#'+$*"0#/*4')%+' #-"%'0/C4'#-"'*"PK$*"+'E$3*)*$":@'):'+":0*$3"+'$%')3/6"D'H-"'./%#*)0#12'E$3*)*4',"'0*")#"+'OK:#')E:/' 3"'0/C$"+'#/'#-"'C*/S"0#'^E$3_'+$*"0#/*4D e)6$%&'0/OCE"#"+'#-$:':#"C@'#-"'^E$3_'+$*"0#/*4':-/KE+'%/,'0/%#)$%'#-"'$#"O:'):':-/,%'$%'#-"' I/EE/,$%&'C$0#K*"<

H-"'"X)OCE"'C*/&*)O'^E$3_'+$*"0#/*4',$#-')EE'#-"'*"PK$*"+'E$3*)*$":'$%'CE)0"D

H-"'./%#*)0#12'E$3*)*4'5'3K$E#'$:'%)O"+'^0/%#*)0#1SDS)*_'$%'#-"')3/6"'C$0#K*"D

!,'6&(2"&'()%*#)72&80)+$%* ["X#',"'*"#K*%'#/'W0E$C:"')%+')++'#-"'E$3*)*$":',"'SK:#'0/C$"+'$%#/'#-"'^E$3_'+$*"0#/*4'#/'#-"'C*/S"0#D' H-"'C*/0"+K*"'I/*')++$%&'E$3*)*$":'#/')'C*/S"0#',):'+":0*$3"+'$%'#-"':"0#$/%'./%I$&K*$%&'#-"'QK$E+' J)#-')3/6"D H-"'*":KE#':-/KE+'3"'#-"':)O"@',$#-'#-"')++$#$/%'/I'#-"'./%#*)0#12'E$3*)*4'27FD

G1

5%')++$#$/%'#/')++$%&'#-"'E$3*)*$":'#/'#-"'2)6)'3K$E+'C)#-@',"')E:/'-)6"'#/')++'#-"'./%#*)0#12'E$3*)*4' #/'#-"'7:C"0#2''$%ZC)#-D H-$:'$:'+/%"'34'*$&-#Z0E$0\$%&'/%'#-"'"X)OCE"'C*/&*)O'C*/S"0#'$%'#-"'W0E$C:"'C*/S"0#'3*/,:"*')%+' :"E"0#$%&'J*/C"*#$":D'H-"%':"E"0#'#-"'7:C"0#2'QK$E+'$#"O'$%'#-"'E$:#'/%'#-"'E"I#D'H-"',$%+/,':-/KE+' %/,'E//\'E$\"'#-$:<

./%I$&K*$%&'#-"'7:C"0#2'$%ZC)#-'$%'W0E$C:"'I/*'#-"'"X)OCE"'C*/&*)O'C*/S"0#D

GY

.E$0\'#-"'7++'27F:'3K##/%'/%'#-"'*$&-#D'5%'#-"',$%+/,'#-)#')CC")*:@'"XC)%+'#-"'"X)OCE"'C*/S"0#' %/+"'34'0E$0\$%&'#-"':O)EE'#*$)%&E"'#/'#-"'E"I#'/I'#-"'%)O"')%+'#-"%'"XC)%+'#-"'^E$3_'+$*"0#/*4'$%'#-"' "X)OCE"'C*/&*)O'C*/S"0#D'H-"',$%+/,':-/KE+'%/,'E//\'E$\"'#-$:<

7++$%&'#-"'./%#*)0#12'E$3*)*4'#/'#-"'7:C"0#2'$%ZC)#-'/I'#-"'"X)OCE"'C*/&*)O'C*/S"0#']':"E"0#$%&'#-"'E$3*)*4D

("E"0#'#-"'./%#*)0#12'E$3*)*4')%+'0E$0\'#-"'c8'3K##/%D

GR

H-"'*"O)$%$%&',$%+/,':-/KE+'%/,'E//\'E$\"'#-$:<

./%I$&K*$%&'#-"'7:C"0#2''$%ZC)#-'$%'W0E$C:"'I/*'#-"'"X)OCE"'C*/&*)O'C*/S"0#D H-"'./%#*)0#12'E$3*)*4'-):'3""%')++"+'#/'#-"'7:C"0#2'$%ZC)#-D

[/#"'#-)#'#-"'./%#*)0#12'E$3*)*4':-/KE+'3"')++"+'#/'#-"'$%ZC)#-@'%/#'#-"'7:C"0#'J)#-d .E$0\'#-"'c8'3K##/%D

Ga

;"&%&'()$')<=$>?8#)+",("$> T$%)EE4@',"'0)%':#)*#',*$#$%&'#-"'"X)OCE"'C*/&*)O@',-$0-'SK:#'0/%:$:#:'/I'#,/'0E)::":f')'0E)::',$#-' :/O"'C*/C"*#$":'#-)#'0)%'3"':"#')%+'*"#*$"6"+')%+')'O)$%'0E)::',-$0-'0*")#":')%+'K:":'#-"'C*"6$/K:' 0E)::D

!=%&@><%"*&)$",, T$*:#@'#-"'0E)::'0/%#)$%$%&'#-"'C*/C"*#$":< package com.ivan; import org.contract4j5.contract.Contract; import org.contract4j5.contract.Invar; import org.contract4j5.contract.Pre; @Contract public class MyBean { /** Some count that must be within a certain range. */ @Invar(value="mCount > 0 && mCount < 20", message="Count must be between 1 and 20") private int mCount = 1; /** A string that can't be set to null or the empty string. */ private String mString = "default"; public int getCount() { return mCount; } public void setCount(int inCount) { mCount = inCount; } public String getString() { return mString; }

}

@Pre(value="inString != null && inString.size() > 0") public void setString(String inString) { mString = inString; }

H-"'!"#$%&'0E)::'/I'#-"'"X)OCE"'C*/&*)O'#-)#'K:":'./%#*)0#12D

5%'#-$:'0E)::@'#-"*"')*"')'%KO3"*'/I'./%#*)0#12')%%/#)#$/%:D'7'6"*4'3*$"I'$%#*/+K0#$/%',$EE'3"'&$6"%' I/*'")0-@'CE"):"'*"I"*'#/'#-"'./%#*)0#12',"3':$#"'I/*'O/*"'0/OCE"#"'+/0KO"%#)#$/%D ! g./%#*)0# 7EE'0E)::":')%+'$%#"*I)0":'#-)#'+"0E)*":'/%"'/*'O/*"'0/%#*)0#:'OK:#'3"')%%/#)#"+',$#-'#-$:' )%%/#)#$/%D'5I'%/#@'#-"'0/%#*)0#:',$EE'3"'$&%/*"+D ! g5%6)*h6)EK"i_O./K%#'j'A'kk'O./K%#'l'>A_'O"::)&"i_./K%#'OK:#'3"'3"#,""%'G')%+' >A_m H-$:')%%/#)#$/%'+"0E)*":'#-"'0/%#*)0#'I/*'#-"'O./K%#'$%:#)%0"'6)*$)3E"')%+':C"0$I$":'#-"' O"::)&"'#-)#',$EE'3"'&$6"%'$I'#-$:'0/%#*)0#'$:'3*/\"%D ! gJ*"h6)EK"in$%(#*$%&'di'%KEE'kk'$%(#*$%&D:$9"hm'j'Anm H-$:')%%/#)#$/%'+"0E)*":')'C*"Z0/%+$#$/%'0/%#*)0#'#/'#-"''$()(*+&,'O"#-/+@',-$0-':)4:'#-)#' #-"':KCCE$"+':#*$%&'OK:#'%/#'3"'%KEE')%+'OK:#'%/#'3"')%'"OC#4':#*$%&D

GB

!=%&@"2*&)$",, H-"'!%+&'0E)::'0*")#":')%'$%:#)%0"'/I'#-"'!"#$%&'0E)::')%+'#*$":'#/':"#':/O"'6)EK":'#-)#',$EE'6$/E)#"' #-"'0/%#*)0#:'#-)#',"*"':C"0$I$"+D package com.ivan; public class Main { public static void main(String[] inArgs) { MyBean theBean = new MyBean(); System.out.println("BEFORE"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString()); theBean.setCount(25); theBean.setString("");

}

}

System.out.println("\nAFTER"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString());

H-"'!%+&'0E)::'/I'#-"'"X)OCE"'C*/&*)O'#-)#'K:":'./%#*)0#12D

@2''&'()%*#)<=$>?8#)+",("$> [/':C"0$)E'C*"C)*)#$/%:')*"'%""+"+'$%'/*+"*'#/'*K%'#-"'"X)OCE"'C*/&*)O@'SK:#'*$&-#Z0E$0\'/%'#-"' C*/S"0#')%+':"E"0#'FK%'7:')%+'#-"%'7:C"0#2o2)6)'7CCE$0)#$/%@'):':-/,%'$%'#-"'I/EE/,$%&'C$0#K*"D

FK%%$%&'#-"'"X)OCE"'C*/&*)OD

G?

5%'#-$:'I$*:#'6"*:$/%@'#-"'C*/&*)O',$EE'&"%"*)#"'#-"'I/EE/,$%&'0/%:/E"'/K#CK#< BEFORE Count = 1 String = default [FATAL] DefaultContractEnforcer: *** Contract Failure (MyBean.java:41): Invar test "mCount > 0 && mCount < 20" for "com.ivan.MyBean" failed. Count must be between 1 and 20 [failure cause = null] Exception in thread "main" org.contract4j5.errors.ContractError: *** Contract Failure (MyBean.java:41): Invar test "mCount > 0 && mCount < 20" for "com.ivan.MyBean" failed. Count must be between 1 and 20 [failure cause = null] at org.contract4j5.enforcer.ContractEnforcerHelper.makeContractError(ContractEnforcerHelper .java:183) at org.contract4j5.enforcer.defaultimpl.DefaultContractEnforcer.finishFailureHandling(Defau ltContractEnforcer.java:29) at org.contract4j5.enforcer.ContractEnforcerHelper.handleFailure(ContractEnforcerHelper.jav a:110) at org.contract4j5.enforcer.ContractEnforcerHelper.invokeTest(ContractEnforcerHelper.java:9 2) at com.ivan.MyBean.mCount_aroundBody5$advice(MyBean.java:190) at com.ivan.MyBean.setCount(MyBean.java:41) at com.ivan.Main.main(Main.java:34)

./%:/E"'/K#CK#'I*/O'#-"'I$*:#')##"OC#')#'*K%%$%&'#-"'"X)OCE"'C*/&*)O'K:$%&'./%#*)0#12D

V"'0)%':""'#-)#'#-"'+"I)KE#'6)EK":'/I'#-"')##*$3K#":'$%'#-"'$%:#)%0"'/I'#-"'!"#$%&'0E)::')*"'C*$%#"+' /%#/'#-"'0/%:/E"@'3K#'#-"%')%'"X0"C#$/%'/00K*:D'V-"%'./%#*)0#12'+"#"0#:')'3*")0-'/I')'0/%#*)0#@'#-"' C*/&*)O',$EE'$OO"+$)#"E4'3"':#/CC"+')%+')'O"::)&"':C"0$I4$%&',-$0-'0/%#*)0#',):'3*/\"%'/K#CK#' #/'#-"'0/%:/E"D' [/#"'#-"'-$&-E$&-#"+'#"X#@',-$0-'$:'#-"'O"::)&"'#-)#',"'"%#"*"+'$%'#-"'0/%#*)0#D 7E:/'%/#"'#-)#'#-"'E$%"'%KO3"*:'$%'#-"')3/6"'0/%:/E"'/K#CK#'+/'%/#'O)#0-'#-"'E$%"'%KO3"*:'$%'#-"' C*"6$/K:':/K*0"'I$E"D'H-$:':$%0"'O/:#'0/OO"%#:'-)6"'3""%'*"O/6"+'I*/O'#-"':/K*0"'0/+"@'#/' 0/%:"*6"':C)0"'$%'#-$:'+/0KO"%#D H/'*"0#$I4'#-"'0/%#*)0#'3*")0-@'#-"'C)*)O"#"*'/I'#-"''$(-./&('O"#-/+'$:'0-)%&"+'#/'G?D'H-"'0%+&1 O"#-/+'$%'#-"'!%+&'0E)::',$EE'%/,'E//\'E$\"'#-$:< ... public static void main(String[] inArgs) { MyBean theBean = new MyBean(); System.out.println("BEFORE"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString()); theBean.setCount(19); theBean.setString("");

} ...

System.out.println("\nAFTER"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString());

H-"'O/+$I$"+'0%+&'O"#-/+'/I'#-"'!%+&'0E)::D

>A

5I',"'#*4'#/'*K%'#-"'"X)OCE"'C*/&*)O'/%0"')&)$%@'$#',$EE'%/,'&"%"*)#"'#-"'I/EE/,$%&'0/%:/E"'/K#CK#< BEFORE Count = 1 String = default [FATAL] DefaultContractEnforcer: *** Contract Failure (MyBean.java:50): Pre test "inString != null && inString.size() > 0" for "setString" failed. [failure cause = null] Exception in thread "main" org.contract4j5.errors.ContractError: *** Contract Failure (MyBean.java:50): Pre test "inString != null && inString.size() > 0" for "setString" failed. [failure cause = null] at org.contract4j5.enforcer.ContractEnforcerHelper.makeContractError(ContractEnforcerHelper .java:183) at org.contract4j5.enforcer.defaultimpl.DefaultContractEnforcer.finishFailureHandling(Defau ltContractEnforcer.java:29) at org.contract4j5.enforcer.ContractEnforcerHelper.handleFailure(ContractEnforcerHelper.jav a:110) at org.contract4j5.enforcer.ContractEnforcerHelper.invokeTest(ContractEnforcerHelper.java:9 2) at org.contract4j5.aspects.MethodBoundaryConditions.ajc$before$org_contract4j5_aspects_Meth odBoundaryConditions$1$d79ef325(MethodBoundaryConditions.aj:121) at com.ivan.MyBean.setString(MyBean.java:52) at com.ivan.Main.main(Main.java:35)

./%:/E"'/K#CK#'I*/O'#-"':"0/%+')##"OC#')#'*K%%$%&'#-"'"X)OCE"'C*/&*)O'K:$%&'./%#*)0#12D

H-$:'#$O"@'%/':C"0$)E'O"::)&"'$:'+$:CE)4"+@':$%0"'%/'O"::)&"',):'+"I$%"+'I/*'#-"'0/%#*)0#'#-)#'-):' 3""%'3*/\"%'#-$:'#$O"D'V"'0)%@'-/,"6"*@':""'#-)#'#-"'0/%#*)0#'3*/\"%'$:'I/*'#-"''$()(*+&,'O"#-/+'$%' #-"'!"#$%&'0E)::D c%0"')&)$%',"'O/+$I4'#-"'0%+&'O"#-/+'/I'#-"'!%+&'0E)::@':/'#-)#'#-"'C)*)O"#"*'#/'#-"''$()(*+&,1 O"#-/+'+/":'%/#'3*")\'#-"'0/%#*)0#'I/*'#-"'O"#-/+D'H-"'0%+&'O"#-/+'%/,'E//\:'E$\"'#-$:< ... public static void main(String[] inArgs) { MyBean theBean = new MyBean(); System.out.println("BEFORE"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString()); theBean.setCount(19); theBean.setString("test");

} ...

System.out.println("\nAFTER"); System.out.println("Count = " + theBean.getCount()); System.out.println("String = " + theBean.getString());

H-"'O/+$I$"+'0%+&'O"#-/+'/I'#-"'!%+&'0E)::D

7'I$%)E')##"OC#')#'*K%%$%&'#-"'"X)OCE"'C*/&*)O'%/,'*"%+"*:'#-"'I/EE/,$%&'0/%:/E"'/K#CK#< BEFORE Count = 1 String = default AFTER Count = 19 String = test

./%:/E"'/K#CK#'I*/O'#-"'#-$*+')##"OC#')#'*K%%$%&'#-"'"X)OCE"'C*/&*)O'K:$%&'./%#*)0#12D

[/'0/%#*)0#:')*"'3*/\"%')%+'#-"'"X)OCE"'C*/&*)O'0)%'"X"0K#"'%/*O)EE4D

>G

Getting Started with Contract4J

Go to the Contract4J web-page and download the latest release. In my case it is ... Selecting the JAR files to add to the Contract4J library project's build path.

768KB Sizes 2 Downloads 337 Views

Recommend Documents

Getting Started with Contract4J
are using it on your own risk. Submitting any suggestions, or similar, the ... Go to the Contract4J web-page and download the latest release. In my case it is ... Selecting the JAR files to add to the Contract4J library project's build path.

Getting Started with CodeXL - GitHub
10. Source Code View . ..... APU, a recent version of Radeon Software, and the OpenCL APP SDK. This document describes ...... lel_Processing_OpenCL_Programming_Guide-rev-2.7.pdf. For GPU ... trademarks of their respective companies.

Getting Started with Go - GitHub
Jul 23, 2015 - The majority of my experience is in PHP. I ventured into Ruby, ... Compiled, Statically Typed, Concurrent, Imperative language. Originally ...

Getting Started with Project-Based Learning
and meet the immediate needs of your students rather than being in permanent crisis-mode trying to ... help us master the bigger thing step by step. Through ...

Getting Started with Protege-Frames
Jun 6, 2006 - To create a new project later, select File | New Project.... 2. Click Create ... The internal Protege system classes :THING and .... the left, at the top of the Class Hierarchy area) to delete the class, and then clicking on :THING and.

getting started with html
Aug 28, 2009 - Figure 1: A simple web page. Example 2.1. We create a minimal page. This and other examples can be created in a simple editor such as ...

Getting Started with Transact-SQL Labs - GitHub
The SQL Server Database Engine is a complex software product. For your systems to achieve optimum performance, you need to have a knowledge of Database Engine architecture, understand how query design affects performance, and be able to implement eff

Getting Started with Transact-SQL Labs - GitHub
An online video presentation. • A hands-on ... prerequisite software or making any required configuration changes. ... comfortable configuring service accounts).

Getting Started with MediaFire.pdf
Page 3 of 8. Page 3 of 8. Getting Started with MediaFire.pdf. Getting Started with MediaFire.pdf. Open. Extract. Open with. Sign In. Main menu. Page 1 of 8.

Getting Started with Transact-SQL Labs - GitHub
Create a list of all customer contact names that includes the title, first name, middle ... Customers may provide adventure Works with an email address, a phone ...

Getting Started with Transact-SQL Labs - GitHub
challenges in the Lab Solution folder for this module. ... and customer ID. ... Note: Support for Sequence objects was added to Azure SQL Database in version 12 ...

Getting Started with Transact-SQL Labs - GitHub
In this lab, you will use SELECT queries to retrieve, sort, and filter data from the AdventureWorksLT database. Before starting this lab, you should view Module 2 ...

Getting Started With LATEX
The enumerate environment is opened with a \begin{enumerate} command and closed with an \end{enumerate} command. Within the environment, each item to be enumerated is preceded by an \item command. Highlighted text. Boldfaced text is produced with a \

Getting Started with Transact-SQL Labs - GitHub
SQL Database, a cloud-based relational database service. This is the .... Page 5 .... local network or computer that's preventing the connection. If you're using a ...

Getting Started with LATEX
LATEX is a computer program for typesetting documents. It takes a ..... within the text of a paragraph one should place a $ sign before and after the formula,.

Getting Started with Google AdWords
Google AdWords is an online advertising program that allows anyone to advertise on. Google.com and its network of partner websites. You can use text, image, ...