x
718
1465
{ parameter (or (or (or (unit %cancel_timelock) (or (pair %change_vote (nat %vote) (nat %vote_id)) (unit %end_vote))) (or (unit %execute_timelock) (or (pair %propose (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (list %return_stakes (pair (address %voter) (pair (nat %vote_id) (nat %proposal_id))))))) (or (or (option %set_break_glass_contract address) (or (address %set_community_fund_address) (pair %set_governance_params (nat %escrow_amount) (pair (nat %vote_delay_blocks) (pair (nat %vote_length_blocks) (pair (nat %min_yes_votes_percentage_for_escrow_return) (pair (nat %timelock_execution_delay_blocks) (pair (nat %timelock_cancelation_delay_blocks) (pair (nat %super_majority_percentage) (pair %quorum_cap (nat %lower) (nat %upper))))))))))) (or (address %set_voting_contract) (or (unit %veto_timelock) (pair %vote (nat %vote) (nat %vote_id)))))) ; storage (pair (pair (pair (option %break_glass_contract address) (pair (address %community_fund_address) (or %escrow_contract (address %fa1) (or (pair %fa2 (address %contract) (nat %token_id)) (unit %tez))))) (pair (pair %governance_params (nat %escrow_amount) (pair (nat %vote_delay_blocks) (pair (nat %vote_length_blocks) (pair (nat %min_yes_votes_percentage_for_escrow_return) (pair (nat %timelock_execution_delay_blocks) (pair (nat %timelock_cancelation_delay_blocks) (pair (nat %super_majority_percentage) (pair %quorum_cap (nat %lower) (nat %upper))))))))) (pair (big_map %historical_outcomes nat (pair (nat %outcome) (pair %poll (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %voting_start_block) (pair (nat %voting_end_block) (pair (map %votes nat nat) (pair (nat %total_votes) (pair (address %author) (pair (nat %escrow_amount) (pair (nat %quorum) (pair %quorum_cap (nat %lower) (nat %upper))))))))))))) (big_map %metadata string bytes)))) (pair (pair (nat %next_proposal_id) (pair (option %poll (pair (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %voting_start_block) (pair (nat %voting_end_block) (pair (map %votes nat nat) (pair (nat %total_votes) (pair (address %author) (pair (nat %escrow_amount) (pair (nat %quorum) (pair %quorum_cap (nat %lower) (nat %upper)))))))))))) (nat %quorum))) (pair (option %timelock (pair (nat %id) (pair (pair %proposal (string %title) (pair (string %description_link) (pair (string %description_hash) (lambda %proposal_lambda unit (list operation))))) (pair (nat %execution_start_block) (pair (nat %cancelation_start_block) (address %author)))))) (pair (big_map %vote_tracker (pair (address %voter) (pair (nat %vote_id) (nat %proposal_id))) (pair (nat %vote_value) (nat %weight))) (address %voting_contract))))) ; code { LAMBDA (pair (pair nat nat) (pair (pair (pair (option address) (pair address (or address (or (pair address nat) unit)))) (pair (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat nat)))))))) (pair (big_map nat (pair nat (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))))) (big_map string bytes)))) (pair (pair nat (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat))))))))))) nat)) (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address))))) (pair (big_map (pair address (pair nat nat)) (pair nat nat)) address))))) (pair (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))) (pair (pair (pair (option address) (pair address (or address (or (pair address nat) unit)))) (pair (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat (pair nat nat)))))))) (pair (big_map nat (pair nat (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))))) (big_map string bytes)))) (pair (pair nat (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat))))))))))) nat)) (pair (option (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address))))) (pair (big_map (pair address (pair nat nat)) (pair nat nat)) address))))) { UNPAIR ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH string "NO_POLL" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; COMPARE ; LE ; IF {} { PUSH string "VOTING_FINISHED" ; FAILWITH } ; DUP ; GET 5 ; LEVEL ; COMPARE ; GE ; IF {} { PUSH string "VOTING_NOT_STARTED" ; FAILWITH } ; PUSH nat 3 ; DIG 2 ; CAR ; COMPARE ; LT ; IF {} { PUSH string "BAD_VOTE_VALUE" ; FAILWITH } ; PAIR } ; SWAP ; UNPAIR ; IF_LEFT { IF_LEFT { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; GE ; IF {} { PUSH string "TOO_SOON" ; FAILWITH } ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 417 ; FAILWITH } {} ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 3 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 ; NIL operation } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUP ; DUG 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; MEM ; IF {} { PUSH string "MUST_VOTE_FIRST" ; FAILWITH } ; DUP 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; GET ; IF_NONE { PUSH int 231 ; FAILWITH } {} ; DUP 3 ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; COMPARE ; NEQ ; IF {} { PUSH string "BAD_VOTE_VALUE" ; FAILWITH } ; SWAP ; DUP ; GET 9 ; DUP ; DUP 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 235 ; FAILWITH } {} ; DUP 5 ; CDR ; ADD ; SOME ; SWAP ; UPDATE ; UPDATE 9 ; DUP ; DUG 2 ; DUP ; GET 9 ; DUP 3 ; CDR ; DIG 4 ; GET 9 ; DUP 5 ; CAR ; GET ; IF_NONE { PUSH int 237 ; FAILWITH } {} ; SUB ; ISNAT ; IF_NONE { PUSH int 236 ; FAILWITH } {} ; SOME ; DUP 4 ; CAR ; UPDATE ; UPDATE 9 ; SWAP ; DIG 3 ; DUP ; GET 7 ; DIG 2 ; CDR ; DUP 5 ; CAR ; PAIR ; SOME ; DUP 4 ; CAR ; DIG 5 ; CDR ; SENDER ; PAIR 3 ; UPDATE ; UPDATE 7 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; SOME ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; NIL operation } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE {} { PUSH string "ITEM_IN_TIMELOCK" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH string "NO_POLL" ; FAILWITH } {} ; DUP ; GET 7 ; LEVEL ; COMPARE ; GT ; IF {} { PUSH string "VOTING_NOT_FINISHED" ; FAILWITH } ; PUSH nat 100 ; DUP 4 ; CAR ; GET 3 ; GET 7 ; DUP 3 ; GET 9 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 312 ; FAILWITH } {} ; DUP 4 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; ADD ; MUL ; EDIV ; IF_NONE { PUSH int 319 ; FAILWITH } { CAR } ; PUSH nat 100 ; DUP 5 ; CAR ; GET 3 ; GET 13 ; DUP 4 ; GET 9 ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 312 ; FAILWITH } {} ; DUP 5 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; ADD ; MUL ; EDIV ; IF_NONE { PUSH int 322 ; FAILWITH } { CAR } ; DUP 5 ; CAR ; CAR ; GET 3 ; DUP 3 ; DUP 5 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; COMPARE ; GE ; IF { DROP ; DUP 3 ; GET 13 } {} ; DUP 6 ; CAR ; CAR ; GET 4 ; IF_LEFT { PUSH nat 0 ; DUP 8 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH int 19 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; DUP 9 ; CAR ; GET 3 ; CAR ; DUP 5 ; SELF_ADDRESS ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { IF_LEFT { PUSH nat 0 ; DUP 8 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { DUP ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 12 ; CAR ; GET 3 ; CAR ; DIG 6 ; CDR ; DUP 8 ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DROP ; DUP ; CONTRACT unit ; IF_NONE { PUSH int 334 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 1 ; DUP 9 ; CAR ; GET 3 ; CAR ; MUL ; UNIT ; TRANSFER_TOKENS ; CONS } } ; DUP 3 ; DUP 6 ; GET 9 ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 311 ; FAILWITH } {} ; COMPARE ; GE ; IF { DUP 7 ; GET 3 ; GET 4 ; DUP 6 ; GET 11 ; COMPARE ; GE } { PUSH bool False } ; IF { DUP 7 ; DUP 6 ; GET 13 ; DUP 9 ; CAR ; GET 3 ; GET 11 ; LEVEL ; ADD ; DUP 10 ; CAR ; GET 3 ; GET 9 ; LEVEL ; ADD ; DIG 8 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 10 ; CAR ; PAIR 5 ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; DIG 4 ; DROP ; SOME ; UPDATE 5 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 7 ; PUSH nat 1 ; PAIR ; SOME ; DUP 8 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 2 } { SWAP ; DROP ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; DIG 3 ; DROP ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DUP 7 ; PUSH nat 0 ; PAIR ; SOME ; DUP 8 ; CAR ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; DUG 2 } ; PUSH nat 100 ; PUSH nat 20 ; DUP 4 ; GET 11 ; MUL ; PUSH nat 80 ; DUP 5 ; GET 17 ; MUL ; ADD ; EDIV ; IF_NONE { PUSH int 356 ; FAILWITH } { CAR } ; DUP 3 ; GET 20 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { DROP } { SWAP ; DROP } ; DIG 2 ; GET 19 ; DUP ; DUP 3 ; COMPARE ; LE ; IF { SWAP ; DROP } { DROP } ; DIG 2 ; UNPAIR ; SWAP ; UNPAIR ; CAR ; DIG 3 ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat (pair (map nat nat) (pair nat (pair address (pair nat (pair nat (pair nat nat)))))))))) ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } } } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 8 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_AUTHOR" ; FAILWITH } ; DUP ; GET 5 ; LEVEL ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; GE ; IF {} { PUSH string "TOO_SOON" ; FAILWITH } ; DUP ; GET 3 ; GET 6 ; NIL operation ; SWAP ; UNIT ; EXEC ; ITER { CONS } ; SWAP ; CAR ; DUP 3 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 390 ; FAILWITH } {} ; DIG 3 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 2 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 ; SWAP } { IF_LEFT { SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE {} { PUSH string "POLL_UNDERWAY" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; GET 4 ; IF_LEFT { PUSH nat 0 ; DUP 4 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { CONTRACT %transfer (pair (address %from) (pair (address %to) (nat %value))) ; IF_NONE { PUSH int 19 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; DUP 5 ; CAR ; GET 3 ; CAR ; SELF_ADDRESS ; SENDER ; PAIR 3 ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { IF_LEFT { PUSH nat 0 ; DUP 4 ; CAR ; GET 3 ; CAR ; COMPARE ; GT ; IF { DUP ; CAR ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH int 36 ; FAILWITH } {} ; NIL operation ; SWAP ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; DUP 8 ; CAR ; GET 3 ; CAR ; DIG 6 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } { DROP ; NIL operation } } { DROP ; PUSH mutez 1 ; DUP 3 ; CAR ; GET 3 ; CAR ; MUL ; AMOUNT ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ENOUGH_ESCROW" ; FAILWITH } ; NIL operation } } ; DUP 3 ; CAR ; GET 3 ; GET 3 ; LEVEL ; ADD ; DUP 4 ; CAR ; GET 3 ; GET 5 ; SWAP ; DUP ; DUG 2 ; ADD ; DUP 5 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 8 ; DUP ; CAR ; GET 3 ; GET 14 ; SWAP ; DUP ; GET 3 ; GET 4 ; SWAP ; DUP ; DUG 11 ; CAR ; GET 3 ; CAR ; SENDER ; PUSH nat 0 ; PUSH (map nat nat) { Elt 0 0 ; Elt 1 0 ; Elt 2 0 } ; DUP 11 ; DUP 13 ; DUP 16 ; DUP 18 ; GET 3 ; CAR ; PAIR 10 ; DIG 5 ; DROP ; DIG 5 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; DIG 6 ; DROP ; SOME ; PAIR ; SWAP ; PUSH nat 1 ; ADD ; PAIR ; PAIR ; SWAP ; PAIR ; SWAP } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DUP ; SIZE ; PUSH nat 50 ; SWAP ; COMPARE ; LE ; IF {} { PUSH string "TOO_MANY_STAKES_TO_RETURN" ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; GET 3 ; CAR ; DUP 3 ; GET 3 ; GET 3 ; IF_NONE {} { DROP 2 ; SWAP ; DUP ; DUG 2 ; GET 3 ; GET 3 ; IF_NONE { PUSH int 261 ; FAILWITH } {} ; CAR } ; NIL (pair address (list (pair address (pair nat nat)))) ; DUP 3 ; ITER { DUP 3 ; SWAP ; DUP ; DUG 2 ; GET 4 ; COMPARE ; LT ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; DUP 5 ; GET 7 ; SWAP ; DUP ; DUG 2 ; MEM ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 3 ; DUP ; GET 3 ; SWAP ; DUP ; DUG 5 ; CAR ; PAIR 3 ; CONS ; SELF_ADDRESS ; PAIR ; CONS ; SWAP ; DIG 4 ; DUP ; GET 7 ; NONE (pair nat nat) ; DIG 3 ; UPDATE ; UPDATE 7 ; DUG 3 } ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP ; NIL operation ; DUP 3 ; GET 8 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH string "NOT_TOKEN_CONTRACT" ; FAILWITH } {} ; PUSH mutez 0 ; DIG 3 ; TRANSFER_TOKENS ; CONS } } } } { IF_LEFT { DIG 2 ; DROP ; IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; CDR ; DIG 3 ; PAIR ; PAIR ; PAIR } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; SWAP ; UNPAIR ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 4 ; PAIR ; SWAP ; PAIR ; PAIR ; PAIR } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } } { DROP ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { PUSH string "NO_BREAK_GLASS_CONTRACT_SET" ; FAILWITH } {} ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF { DROP ; PUSH bool True } { SENDER ; COMPARE ; EQ } ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } } ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DIG 3 ; PAIR ; SWAP ; PAIR ; PAIR } } ; NIL operation } { IF_LEFT { DIG 2 ; DROP ; AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SELF_ADDRESS ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; UPDATE 8 ; NIL operation } { IF_LEFT { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; IF_NONE { PUSH string "NO_BREAK_GLASS_CONTRACT_SET" ; FAILWITH } {} ; DUP ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_ALLOWED" ; FAILWITH } ; DUP 3 ; GET 5 ; IF_NONE { PUSH string "NO_ITEM_IN_TIMELOCK" ; FAILWITH } {} ; DUP ; GET 5 ; LEVEL ; DIG 3 ; DROP ; DIG 3 ; DROP ; DIG 4 ; DROP ; COMPARE ; LT ; IF {} { PUSH string "TOO_LATE" ; FAILWITH } ; CAR ; SWAP ; DUP ; DUG 2 ; CAR ; GET 5 ; SWAP ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 448 ; FAILWITH } {} ; DIG 2 ; UNPAIR ; UNPAIR ; SWAP ; UNPAIR ; SWAP ; UNPAIR ; DIG 5 ; CDR ; PUSH nat 4 ; PAIR ; SOME ; DIG 6 ; UPDATE ; PAIR ; SWAP ; PAIR ; SWAP ; PAIR ; PAIR ; NONE (pair nat (pair (pair string (pair string (pair string (lambda unit (list operation))))) (pair nat (pair nat address)))) ; UPDATE 5 ; NIL operation } { AMOUNT ; PUSH mutez 0 ; COMPARE ; EQ ; IF {} { AMOUNT ; FAILWITH } ; DIG 2 ; SWAP ; DUP ; DUG 2 ; SWAP ; DIG 3 ; DIG 2 ; PAIR ; EXEC ; UNPAIR ; SWAP ; DUP ; DUG 3 ; GET 7 ; SWAP ; DUP ; DUG 2 ; CAR ; DUP 4 ; CDR ; SENDER ; PAIR 3 ; MEM ; IF { PUSH string "ALREADY_VOTED" ; FAILWITH } {} ; DUP 3 ; GET 8 ; DUP 3 ; CDR ; VIEW "get_voting_details" (option (pair (nat %token_amount) (pair (nat %vote_weight) (address %owner)))) ; IF_NONE { PUSH string "Invalid View: get_voting_details" ; FAILWITH } {} ; DUP ; IF_NONE { PUSH string "INVALID_VOTE_ID" ; FAILWITH } { DROP } ; IF_NONE { PUSH int 188 ; FAILWITH } {} ; DUP ; GET 4 ; SENDER ; COMPARE ; EQ ; IF {} { PUSH string "NOT_OWNER" ; FAILWITH } ; SWAP ; DUP ; GET 9 ; DUP ; DUP 5 ; CAR ; DUP ; DUG 2 ; GET ; IF_NONE { PUSH int 192 ; FAILWITH } {} ; DUP 5 ; GET 3 ; ADD ; SOME ; SWAP ; UPDATE ; UPDATE 9 ; DUP ; GET 11 ; DUP 3 ; GET 3 ; ADD ; UPDATE 11 ; SWAP ; DIG 3 ; UNPAIR ; SWAP ; UNPAIR ; UNPAIR ; SWAP ; CDR ; DUP 6 ; SOME ; PAIR ; SWAP ; PAIR ; PAIR ; SWAP ; PAIR ; DUP ; GET 7 ; DIG 2 ; GET 3 ; DUP 5 ; CAR ; PAIR ; SOME ; DIG 3 ; CAR ; DUP 5 ; CDR ; SENDER ; PAIR 3 ; UPDATE ; UPDATE 7 ; SWAP ; NIL operation ; DUP 3 ; GET 8 ; CONTRACT %transfer (list (pair (address %from_) (list %txs (pair (address %to_) (pair (nat %token_id) (nat %amount)))))) ; IF_NONE { PUSH string "NOT_TOKEN_CONTRACT" ; FAILWITH } {} ; PUSH mutez 0 ; NIL (pair address (list (pair address (pair nat nat)))) ; NIL (pair address (pair nat nat)) ; PUSH nat 1 ; DIG 6 ; CDR ; SELF_ADDRESS ; PAIR 3 ; CONS ; SENDER ; PAIR ; CONS ; TRANSFER_TOKENS ; CONS } } } } ; NIL operation ; SWAP ; ITER { CONS } ; PAIR } ; view "get_current_poll_stats" unit (option (map nat nat)) { CDR ; DUP ; GET 3 ; GET 3 ; IF_NONE { DROP ; NONE (map nat nat) } { DROP ; GET 3 ; GET 3 ; IF_NONE { PUSH int 533 ; FAILWITH } {} ; GET 9 ; DUP ; PUSH nat 1 ; GET ; IF_NONE { PUSH int 535 ; FAILWITH } {} ; SOME ; PUSH nat 1 ; UPDATE ; DUP ; PUSH nat 0 ; GET ; IF_NONE { PUSH int 536 ; FAILWITH } {} ; SOME ; PUSH nat 0 ; UPDATE ; DUP ; PUSH nat 2 ; GET ; IF_NONE { PUSH int 537 ; FAILWITH } {} ; SOME ; PUSH nat 2 ; UPDATE ; SOME } } }