x
1182
parameter (or (or (or (nat %addOut) (pair %buy (nat %amt) (option %upline address))) (or (address %changeAdmin) (unit %start))) (or (or (pair %updateConfig (pair (pair (option %buyers_whitelist_enabled bool) (option %exch_price nat)) (pair (option %happy_time_bonus_permil nat) (option %happy_time_duration_hours nat))) (pair (pair (option %max_tokens_per_addr nat) (option %paused bool)) (option %referal_permil nat))) (or %updateWhitelist (set %addBuyers address) (set %deleteBuyers address))) (or (nat %withdrawIn) (nat %withdrawOut))));storage (pair (pair (pair (pair (address %admin) (big_map %buyers address nat)) (pair (set %buyers_whitelist address) (pair %config (pair (pair (bool %buyers_whitelist_enabled) (nat %exch_price)) (pair (nat %happy_time_bonus_permil) (nat %happy_time_duration_hours))) (pair (pair (nat %max_tokens_per_addr) (bool %paused)) (nat %referal_permil))))) (pair (pair (nat %in_balance) (or %in_token (or (address %fa12) (pair %fa2 address nat)) (unit %tz))) (pair (nat %out_balance) (or %out_token (or (address %fa12) (pair %fa2 address nat)) (unit %tz))))) (pair (pair (nat %referal_bonus) (nat %sold)) (option %started_at timestamp)));code { LAMBDA (pair (pair (pair nat address) (pair address address)) nat) operation { DUP ; CAR ; CDR ; CDR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; DUP 4 ; CAR ; CAR ; CDR ; NIL (pair address (pair nat nat)) ; DUP 6 ; CAR ; CDR ; CAR ; DUP 7 ; CDR ; DIG 7 ; CAR ; CAR ; CAR ; SWAP ; PAIR ; SWAP ; PAIR ; CONS ; SWAP ; PAIR ; CONS ; TRANSFER_TOKENS } ; LAMBDA (pair (pair address address) (pair address nat)) operation { UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; DIG 2 ; CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH string "FA12_TOKEN_NOT_FOUND" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; DIG 3 ; PAIR ; DIG 3 ; PAIR ; TRANSFER_TOKENS } ; SWAP ; DUP ; DUG 2 ; SWAP ; DUP ; DUG 2 ; PAIR ; LAMBDA (pair (pair (lambda (pair (pair address address) (pair address nat)) operation) (lambda (pair (pair (pair nat address) (pair address address)) nat) operation)) (pair (pair (or (or address (pair address nat)) unit) address) (pair nat (list operation)))) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; SWAP ; DIG 2 ; IF_LEFT { IF_LEFT { DIG 5 ; DROP ; DIG 2 ; DIG 3 ; PAIR ; SELF_ADDRESS ; DIG 2 ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC } { DIG 4 ; DROP ; UNPAIR ; DIG 4 ; PAIR ; SELF_ADDRESS ; DIG 4 ; PAIR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC } } { DIG 4 ; DIG 5 ; DROP 3 ; DIG 2 ; CONTRACT unit ; IF_NONE { PUSH string "bad address for get_contract" ; FAILWITH } {} ; PUSH mutez 1 ; DIG 3 ; MUL ; UNIT ; TRANSFER_TOKENS } ; CONS } ; SWAP ; APPLY ; DUG 2 ; PAIR ; LAMBDA (pair (pair (lambda (pair (pair address address) (pair address nat)) operation) (lambda (pair (pair (pair nat address) (pair address address)) nat) operation)) (pair (pair (or (or address (pair address nat)) unit) address) (pair nat (list operation)))) (list operation) { UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; UNPAIR ; DIG 2 ; UNPAIR ; DIG 2 ; IF_LEFT { IF_LEFT { DIG 5 ; DROP ; DUG 2 ; SELF_ADDRESS ; PAIR ; DIG 3 ; DIG 3 ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; CONS } { DIG 4 ; DROP ; UNPAIR ; DIG 3 ; DUG 2 ; SELF_ADDRESS ; PAIR ; DIG 4 ; DIG 4 ; PAIR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; CONS } } { DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 ; PUSH mutez 1 ; SWAP ; MUL ; AMOUNT ; COMPARE ; NEQ ; IF { PUSH string "WRONG_TEZOS_AMT_RECEIVED" ; FAILWITH } {} } } ; SWAP ; APPLY ; DIG 2 ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { DIG 3 ; DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; DUP 5 ; CAR ; CDR ; CDR ; CAR ; ADD ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; NIL operation ; DIG 3 ; PAIR ; SENDER ; DIG 3 ; CAR ; CDR ; CDR ; CDR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; PAIR } { UNPAIR ; DUP 3 ; CAR ; CAR ; CDR ; CDR ; CDR ; CAR ; CDR ; IF { PUSH string "SC_PAUSED" ; FAILWITH } {} ; DUP 3 ; CAR ; CAR ; CDR ; CAR ; SENDER ; MEM ; NOT ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; CAR ; CAR ; CAR ; AND ; IF { PUSH string "SC_NOT_IN_WHITELIST" ; FAILWITH } {} ; DUP 3 ; SENDER ; SWAP ; CAR ; CAR ; CAR ; CDR ; SWAP ; GET ; IF_NONE { PUSH nat 0 } {} ; DUP 4 ; DUP 3 ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; CDR ; CAR ; CAR ; CDR ; SWAP ; MUL ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; IF_NONE { DROP 2 ; PUSH string "SC_NOT_STARTED" ; FAILWITH } { DUP 3 ; CAR ; CAR ; CDR ; CDR ; CAR ; CDR ; CDR ; PUSH nat 3600 ; DIG 2 ; NOW ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; COMPARE ; LE ; IF { PUSH nat 1000 ; DIG 2 ; CAR ; CAR ; CDR ; CDR ; CAR ; CDR ; CAR ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR ; ADD } { SWAP ; DROP } } ; DUP 5 ; CAR ; CAR ; CDR ; CDR ; CDR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; DUP 4 ; ADD ; COMPARE ; GT ; PUSH nat 0 ; DUP 7 ; CAR ; CAR ; CDR ; CDR ; CDR ; CAR ; CAR ; COMPARE ; GT ; AND ; IF { PUSH string "SC_MAX_AMOUNT_REACHED" ; FAILWITH } {} ; DUP 4 ; IF_NONE { PUSH nat 0 } { PUSH nat 0 ; DUP 7 ; CAR ; CAR ; CDR ; CDR ; CDR ; CDR ; COMPARE ; GT ; SENDER ; DIG 2 ; COMPARE ; NEQ ; AND ; IF { PUSH nat 1000 ; DUP 6 ; CAR ; CAR ; CDR ; CDR ; CDR ; CDR ; DUP 3 ; MUL ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } { PUSH nat 0 } } ; SWAP ; DUP ; DUG 2 ; DIG 3 ; ADD ; DUP 6 ; CDR ; DUP 7 ; CAR ; CDR ; DUP 8 ; CAR ; CAR ; CDR ; DUP 9 ; CAR ; CAR ; CAR ; CDR ; DIG 4 ; SOME ; SENDER ; UPDATE ; DIG 8 ; CAR ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; DUP 7 ; DUP 5 ; CAR ; CDR ; CAR ; CAR ; ADD ; PAIR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CDR ; DUP 4 ; DUP 6 ; DUP 5 ; CAR ; CDR ; CDR ; CAR ; SUB ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; PAIR ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; CDR ; CDR ; DUP 4 ; DUP 3 ; CDR ; CAR ; CDR ; ADD ; DUP 3 ; CDR ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; NIL operation ; DIG 4 ; PAIR ; SENDER ; DUP 3 ; CAR ; CDR ; CAR ; CDR ; PAIR ; PAIR ; DIG 5 ; SWAP ; EXEC ; DIG 4 ; IF_NONE { DIG 2 ; DROP ; PAIR } { DUP 3 ; CDR ; CDR ; DUP 4 ; CDR ; CAR ; CDR ; DUP 6 ; DUP 6 ; CDR ; CAR ; CAR ; ADD ; PAIR ; PAIR ; DIG 3 ; CAR ; PAIR ; PUSH nat 0 ; DUP 5 ; COMPARE ; GT ; IF { DIG 2 ; DIG 3 ; PAIR ; DUG 2 ; DUP ; DUG 3 ; CAR ; CDR ; CDR ; CDR ; PAIR ; PAIR ; DUP 4 ; SWAP ; EXEC } { SWAP ; DIG 3 ; DROP 2 ; SWAP } ; PAIR } ; UNPAIR ; DIG 2 ; PAIR ; SENDER ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; PAIR } } { DIG 2 ; DIG 3 ; DROP 2 ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; DIG 4 ; CAR ; CAR ; CAR ; CDR ; DIG 4 ; PAIR ; PAIR ; PAIR ; PAIR ; NIL operation ; PAIR } { DROP ; DUP ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; NONE timestamp ; SWAP ; DUP ; DUG 2 ; CDR ; CDR ; COMPARE ; NEQ ; IF { PUSH string "SC_ALREADY_STARTED" ; FAILWITH } {} ; NOW ; SOME ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; NIL operation ; PAIR } } } { DIG 2 ; DROP ; IF_LEFT { DIG 2 ; DROP ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; DUP ; CDR ; CDR ; IF_NONE { SWAP } { DUP 3 ; CDR ; DUP 4 ; CAR ; CDR ; DUP 5 ; CAR ; CAR ; CDR ; CDR ; DIG 3 ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; PAIR ; SWAP ; CAR ; PAIR ; DUP 5 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 4 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CDR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; DIG 5 ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; DIG 4 ; DUP 3 ; CAR ; CDR ; CAR ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CAR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; DIG 5 ; PAIR ; DIG 2 ; CAR ; CAR ; PAIR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CAR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; CDR ; SWAP ; DUP ; DUG 2 ; CDR ; CAR ; CDR ; DIG 5 ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; DIG 2 ; CAR ; CAR ; CDR ; DIG 5 ; PAIR ; PAIR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; SWAP ; CDR ; CAR ; CDR ; IF_NONE {} { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP ; CDR ; CDR ; DIG 4 ; DUP 3 ; CDR ; CAR ; CAR ; PAIR ; PAIR ; SWAP ; CAR ; PAIR ; DUP 4 ; CAR ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; NIL operation ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; IF_LEFT { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP 5 ; CAR ; CAR ; CDR ; CAR ; DIG 4 ; ITER { PUSH bool True ; SWAP ; UPDATE } ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } { SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; DUP 4 ; CAR ; CAR ; CDR ; CDR ; DUP 5 ; CAR ; CAR ; CDR ; CAR ; DIG 4 ; ITER { PUSH bool False ; SWAP ; UPDATE } ; PAIR ; DIG 3 ; CAR ; CAR ; CAR ; PAIR ; PAIR ; PAIR } ; NIL operation ; PAIR } } { IF_LEFT { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CAR ; CAR ; SWAP ; DUP ; DUG 2 ; COMPARE ; GT ; IF { PUSH string "SC_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; DUP 4 ; CAR ; CDR ; CAR ; CDR ; DUP 4 ; DUP 6 ; CAR ; CDR ; CAR ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; PAIR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; NIL operation ; DIG 3 ; PAIR ; SENDER ; DIG 3 ; CAR ; CDR ; CAR ; CDR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; PAIR } { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CAR ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "SC_NOT_ADMIN" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CAR ; CDR ; CDR ; CAR ; SWAP ; DUP ; DUG 2 ; COMPARE ; GT ; IF { PUSH string "SC_INSUFFICIENT_BALANCE" ; FAILWITH } {} ; SWAP ; DUP ; DUG 2 ; CDR ; DUP 3 ; CAR ; CDR ; CDR ; CDR ; DUP 3 ; DUP 5 ; CAR ; CDR ; CDR ; CAR ; SUB ; ISNAT ; IF_NONE { PUSH nat 0 } {} ; PAIR ; DUP 4 ; CAR ; CDR ; CAR ; PAIR ; DIG 3 ; CAR ; CAR ; PAIR ; PAIR ; DUP ; NIL operation ; DIG 3 ; PAIR ; SENDER ; DIG 3 ; CAR ; CDR ; CDR ; CDR ; PAIR ; PAIR ; DIG 2 ; SWAP ; EXEC ; PAIR } } } }