x
196
{ parameter (or
(or (unit %default)
(or (address %propose_administrator) (address %remove_administrator)))
(or (unit %set_administrator)
(or (pair %set_slippage_ratio (nat %numerator) (nat %denominator))
(list %set_symbol_relation_path (pair (address %oracle)
(pair (string %symbol)
(bool %inversed))))))) ;
storage (pair (big_map %administrators address int)
(pair (pair %slippage_ratio (nat %numerator) (nat %denominator))
(list %symbol_relation_path (pair (address %oracle)
(pair (string %symbol)
(bool %inversed)))))) ;
code { LAMBDA
(pair unit
(pair (big_map address int)
(pair (pair nat nat) (list (pair address (pair string bool))))))
(pair unit
(pair (big_map address int)
(pair (pair nat nat) (list (pair address (pair string bool))))))
{ CDR ;
DUP ;
CAR ;
PUSH int 1 ;
SWAP ;
SENDER ;
GET ;
IF_NONE { PUSH int 21 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 401 ; FAILWITH } ;
UNIT ;
PAIR } ;
SWAP ;
UNPAIR ;
IF_LEFT
{ IF_LEFT
{ DROP ;
SWAP ;
DROP ;
NIL operation ;
SENDER ;
CONTRACT unit ;
IF_NONE { PUSH int 125 ; FAILWITH } {} ;
AMOUNT ;
UNIT ;
TRANSFER_TOKENS ;
CONS }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
DUP ;
CAR ;
PUSH (option int) (Some 0) ;
DIG 3 ;
UPDATE ;
UPDATE 1 }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
DUP ;
CAR ;
NONE int ;
DIG 3 ;
UPDATE ;
UPDATE 1 } ;
NIL operation } }
{ IF_LEFT
{ DROP ;
SWAP ;
DROP ;
AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DUP ;
CAR ;
PUSH int 0 ;
SWAP ;
SENDER ;
GET ;
IF_NONE { PUSH int 46 ; FAILWITH } {} ;
COMPARE ;
EQ ;
IF {} { PUSH int 405 ; FAILWITH } ;
DUP ;
CAR ;
PUSH (option int) (Some 1) ;
SENDER ;
UPDATE ;
UPDATE 1 }
{ IF_LEFT
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
SWAP ;
UPDATE 3 }
{ AMOUNT ;
PUSH mutez 0 ;
COMPARE ;
EQ ;
IF {} { AMOUNT ; FAILWITH } ;
DIG 2 ;
UNIT ;
SWAP ;
DIG 3 ;
DIG 2 ;
PAIR ;
EXEC ;
CDR ;
SWAP ;
UPDATE 4 } } ;
NIL operation } ;
PAIR } ;
view "get_min_out" nat nat
{ UNPAIR ;
PUSH nat 1000000 ;
DUP 3 ;
GET 4 ;
ITER { DUP ;
GET 4 ;
PUSH bool False ;
COMPARE ;
EQ ;
IF
{ PUSH nat 1000000 ;
SWAP ;
DUP ;
CAR ;
SWAP ;
GET 3 ;
VIEW "get_price" nat ;
IF_NONE { PUSH int 502 ; FAILWITH } {} ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 150 ; FAILWITH } { CAR } }
{ DUP ;
CAR ;
SWAP ;
GET 3 ;
VIEW "get_price" nat ;
IF_NONE { PUSH int 502 ; FAILWITH } {} ;
PUSH nat 1000000 ;
DIG 2 ;
MUL ;
EDIV ;
IF_NONE { PUSH int 152 ; FAILWITH } { CAR } } } ;
DUP 3 ;
GET 3 ;
CDR ;
PUSH nat 1000000000000000000 ;
MUL ;
DIG 3 ;
GET 3 ;
CAR ;
DIG 2 ;
PUSH nat 1000000000000 ;
DIG 4 ;
MUL ;
MUL ;
MUL ;
EDIV ;
IF_NONE { PUSH int 155 ; FAILWITH } { CAR } } }