x
691
{ parameter (or
(or
(or (address %add_manager)
(or
(pair %balance_of
(list %requests (pair (address %owner) (nat %token_id)))
(contract %callback (list (pair
(pair %request (address %owner)
(nat %token_id))
(nat %balance)))))
(list %burn (pair (address %from_)
(pair (nat %token_id) (nat %amount))))))
(or (map %create_token string bytes)
(or
(pair %lock (bool %metadata) (pair (bool %mint) (nat %token_id)))
(pair %mint (list %mint_items (pair (nat %amount) (address %to_)))
(nat %token_id)))))
(or
(or (address %remove_manager)
(or (address %set_administrator)
(big_map %set_metadata string bytes)))
(or
(list %transfer (pair (address %from_)
(list %txs (pair (address %to_)
(pair (nat %token_id)
(nat %amount))))))
(or
(list %update_operators (or
(pair %add_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))
(pair %remove_operator (address %owner)
(pair
(address %operator)
(nat %token_id)))))
(list %update_token_metadata (pair (nat %token_id)
(map %token_info string bytes))))))) ;
storage (pair
(pair (pair (address %administrator) (nat %last_token_id))
(pair (big_map %ledger (pair address nat) nat)
(big_map %locked nat (pair (bool %metadata) (bool %mint)))))
(pair
(pair (big_map %managers address unit) (big_map %metadata string bytes))
(pair
(big_map %operators
(pair (address %owner) (pair (address %operator) (nat %token_id)))
unit)
(pair (big_map %supply nat nat)
(big_map %token_metadata nat
(pair (nat %token_id)
(map %token_info string bytes))))))) ;
code { UNPAIR ;
IF_LEFT
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
PUSH (option unit) (Some Unit) ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
SWAP ;
PAIR ;
NIL operation }
{ IF_LEFT
{ NIL operation ;
DUP ;
DUP 3 ;
CDR ;
PUSH mutez 0 ;
DUP 5 ;
CAR ;
MAP { DUP 7 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP 7 ;
CAR ;
GET 3 ;
SWAP ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 3 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SWAP ;
PAIR } ;
DIG 4 ;
DROP ;
DIG 4 ;
DROP ;
TRANSFER_TOKENS ;
CONS }
{ DUP ;
ITER { DUP 3 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
MEM ;
IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 3 ;
GET 5 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
SENDER ;
DUP 4 ;
CAR ;
PAIR 3 ;
MEM } ;
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
DUP 3 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP 5 ;
GET 4 ;
DIG 7 ;
CAR ;
GET 3 ;
DIG 6 ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 8 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SUB ;
ISNAT ;
IF_NONE
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ; FAILWITH }
{} ;
SOME ;
DIG 5 ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 7 ;
CAR ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 2 ;
DUP ;
GET 4 ;
DUP 4 ;
GET 7 ;
DUP 3 ;
GET 3 ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SUB ;
ISNAT ;
IF_NONE
{ DIG 2 ;
DUP ;
GET 7 ;
PUSH (option nat) (Some 0) ;
DIG 3 ;
GET 3 ;
UPDATE ;
UPDATE 7 ;
SWAP }
{ DIG 3 ;
DUP ;
GET 7 ;
DIG 2 ;
SOME ;
DIG 3 ;
GET 3 ;
UPDATE ;
UPDATE 7 ;
SWAP } } ;
DROP ;
NIL operation } } }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
PUSH nat 1 ;
DUP 3 ;
CAR ;
CAR ;
CDR ;
ADD ;
DIG 2 ;
DUP ;
GET 8 ;
DIG 3 ;
DUP 4 ;
PAIR ;
SOME ;
DUP 4 ;
UPDATE ;
UPDATE 8 ;
DUP ;
GET 7 ;
PUSH (option nat) (Some 0) ;
DIG 3 ;
UPDATE ;
UPDATE 7 ;
UNPAIR ;
UNPAIR ;
UNPAIR ;
SWAP ;
PUSH nat 1 ;
ADD ;
SWAP ;
PAIR ;
PAIR ;
PAIR }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
GET 4 ;
MEM ;
IF {} { PUSH string "OE_TOKEN_MISSING" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
GET 4 ;
GET ;
IF_NONE { PUSH (pair bool bool) (Pair False False) } {} ;
DUP ;
CAR ;
IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; CAR } ;
UPDATE 1 ;
DUP ;
CDR ;
IF { PUSH bool True } { SWAP ; DUP ; DUG 2 ; GET 3 } ;
UPDATE 2 ;
DIG 2 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
SWAP ;
DIG 4 ;
SOME ;
DIG 5 ;
GET 4 ;
UPDATE ;
SWAP ;
PAIR ;
SWAP ;
PAIR ;
PAIR }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MEM ;
IF {} { PUSH string "OE_TOKEN_N_EXTIST" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
MEM ;
IF
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
CDR ;
GET ;
IF_NONE { PUSH int 135 ; FAILWITH } {} ;
CDR ;
NOT }
{ PUSH bool True } ;
IF {} { PUSH string "OE_MINT_LOCKED" ; FAILWITH } ;
PUSH nat 0 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
ITER { DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP 5 ;
CAR ;
DIG 8 ;
CAR ;
GET 3 ;
DUP 9 ;
CDR ;
DUP 8 ;
CDR ;
PAIR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
ADD ;
SOME ;
DUP 8 ;
CDR ;
DUP 7 ;
CDR ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 3 ;
CAR ;
ADD } ;
DUP 3 ;
GET 7 ;
DUP 3 ;
CDR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
DIG 3 ;
DUP ;
GET 7 ;
DIG 3 ;
DIG 3 ;
ADD ;
SOME ;
DIG 3 ;
CDR ;
UPDATE ;
UPDATE 7 } } ;
NIL operation } }
{ IF_LEFT
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
UNPAIR ;
NONE unit ;
DIG 5 ;
UPDATE ;
PAIR ;
PAIR ;
SWAP ;
PAIR }
{ IF_LEFT
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
UNPAIR ;
CDR ;
DIG 3 ;
PAIR ;
PAIR ;
PAIR }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
SWAP ;
UNPAIR ;
SWAP ;
UNPAIR ;
CAR ;
DIG 3 ;
SWAP ;
PAIR ;
PAIR ;
SWAP ;
PAIR } } }
{ IF_LEFT
{ DUP ;
ITER { DUP ;
CDR ;
ITER { DUP 4 ;
GET 8 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
MEM ;
IF
{}
{ PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ DUP 4 ;
GET 5 ;
SWAP ;
DUP ;
DUG 2 ;
GET 3 ;
SENDER ;
DUP 5 ;
CAR ;
PAIR 3 ;
MEM } ;
IF {} { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
DUP ;
GET 4 ;
PUSH nat 0 ;
COMPARE ;
LT ;
IF
{ DUP 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP 5 ;
GET 4 ;
DIG 8 ;
CAR ;
GET 3 ;
DUP 7 ;
GET 3 ;
DUP 9 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
SUB ;
ISNAT ;
IF_NONE
{ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
FAILWITH }
{} ;
SOME ;
DUP 6 ;
GET 3 ;
DUP 8 ;
CAR ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUP ;
DUG 4 ;
UNPAIR ;
UNPAIR ;
SWAP ;
UNPAIR ;
DUP 5 ;
GET 4 ;
DIG 8 ;
CAR ;
GET 3 ;
DIG 6 ;
DUP ;
GET 3 ;
SWAP ;
DUP ;
DUG 8 ;
CAR ;
PAIR ;
GET ;
IF_NONE { PUSH nat 0 } {} ;
ADD ;
SOME ;
DIG 5 ;
DUP ;
GET 3 ;
SWAP ;
CAR ;
PAIR ;
UPDATE ;
PAIR ;
SWAP ;
PAIR ;
PAIR ;
DUG 2 }
{ DROP } } ;
DROP } ;
DROP }
{ IF_LEFT
{ DUP ;
ITER { IF_LEFT
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
DIG 2 ;
DUP ;
GET 5 ;
PUSH (option unit) (Some Unit) ;
DIG 3 ;
UPDATE ;
UPDATE 5 ;
SWAP }
{ DUP ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
DIG 2 ;
DUP ;
GET 5 ;
NONE unit ;
DIG 3 ;
UPDATE ;
UPDATE 5 ;
SWAP } } ;
DROP }
{ SWAP ;
DUP ;
DUG 2 ;
CAR ;
CAR ;
CAR ;
SENDER ;
COMPARE ;
EQ ;
IF
{ PUSH bool True }
{ SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; SENDER ; MEM } ;
IF {} { PUSH string "FA2_NOT_MANAGER" ; FAILWITH } ;
DUP ;
ITER { DUP 3 ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
MEM ;
IF
{ DUP 3 ;
CAR ;
GET 4 ;
SWAP ;
DUP ;
DUG 2 ;
CAR ;
GET ;
IF_NONE { PUSH int 71 ; FAILWITH } {} ;
CAR ;
NOT }
{ PUSH bool True } ;
IF {} { PUSH string "OE_TOKEN_LOCKED" ; FAILWITH } ;
DIG 2 ;
DUP ;
GET 8 ;
DIG 2 ;
DUP ;
CDR ;
SWAP ;
DUP ;
DUG 4 ;
CAR ;
PAIR ;
SOME ;
DIG 3 ;
CAR ;
UPDATE ;
UPDATE 8 ;
SWAP } ;
DROP } } } ;
NIL operation } ;
PAIR } ;
view "get_last_token_id" unit nat { CDR ; CAR ; CAR ; CDR } }