x
108
parameter (or
(or (unit %default)
(or (pair %send mutez address) (pair %sendTokens nat address)))
(or (address %setAdministratorContract)
(or (option %setDelegate key_hash) (address %setGovernorContract))));
storage (pair (address %administratorContractAddress)
(pair (address %governorContractAddress) (address %tokenContractAddress)));
code { DUP ;
CDR ;
SWAP ;
CAR ;
IF_LEFT
{ IF_LEFT
{ DROP ; NIL operation }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
{ CDR ; CAR } ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 4 ; FAILWITH } ;
DUP ;
CDR ;
CONTRACT unit ;
{ IF_NONE { UNIT ; FAILWITH } {} } ;
NIL operation ;
SWAP ;
DIG 2 ;
CAR ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ SWAP ;
DUP ;
DUG 2 ;
{ CDR ; CAR } ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 4 ; FAILWITH } ;
NIL operation ;
DIG 2 ;
DUP ;
DUG 3 ;
{ CDR ; CDR } ;
CONTRACT %transfer (pair (address %from)
(pair (address %to) (nat %value))) ;
{ IF_NONE { UNIT ; FAILWITH } {} } ;
PUSH mutez 0 ;
DIG 3 ;
DUP ;
CAR ;
SWAP ;
CDR ;
PAIR %to %value ;
SELF ;
ADDRESS ;
PAIR %from ;
TRANSFER_TOKENS ;
CONS } } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
{ CDR ; CAR } ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 4 ; FAILWITH } ;
SWAP ;
CDR ;
SWAP ;
PAIR ;
NIL operation }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 8 ; FAILWITH } ;
SET_DELEGATE ;
NIL operation ;
SWAP ;
CONS }
{ SWAP ;
DUP ;
DUG 2 ;
{ CDR ; CAR } ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH int 4 ; FAILWITH } ;
SWAP ;
DUP ;
CAR ;
SWAP ;
{ CDR ; CDR } ;
DIG 2 ;
PAIR ;
SWAP ;
PAIR ;
NIL operation } } } ;
PAIR }