x
275
{ parameter (or (pair %bindIR (address %caller_alias) (address %ir_kt1)) (or (pair %unbindIR (address %caller_alias) (address %ir_kt1)) (or (pair %registerInvestor (address %caller_alias) (pair (address %investor) (pair (address %identity_kt1) (nat %country)))) (or (pair %updateIdentity (address %caller_alias) (pair (address %investor) (address %new_identity_kt1))) (or (pair %updateCountry (address %caller_alias) (pair (address %investor) (nat %new_country))) (or (pair %removeIdentity (address %caller_alias) (address %investor)) (or (pair %setOwner (address %caller_alias) (address %new_owner)) (address %setAdmin)))))))) ; storage (pair (big_map %identities address address) (pair (big_map %countries address nat) (pair (set %bound_irs address) (pair (address %admin) (address %owner))))) ; code { UNPAIR ; IF_LEFT { DUP 2 ; GET 7 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 8 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; SWAP ; DUP ; GET 5 ; PUSH bool True ; DIG 3 ; CDR ; UPDATE ; UPDATE 5 } { IF_LEFT { DUP 2 ; GET 7 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 8 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; DUP 2 ; GET 5 ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "IR_NOT_BOUND" ; FAILWITH } ; SWAP ; DUP ; GET 5 ; PUSH bool False ; DIG 3 ; CDR ; UPDATE ; UPDATE 5 } { IF_LEFT { SENDER ; DUP 3 ; GET 7 ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "NOT_ADMIN_OR_BOUND_IR" ; FAILWITH } } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NOT_BOUND_IR" ; FAILWITH } ; DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; IF { PUSH string "ALREADY_REGISTERED" ; FAILWITH } {} ; DUP 2 ; DUP 3 ; CAR ; DUP 3 ; GET 5 ; SOME ; DUP 4 ; GET 3 ; UPDATE ; UPDATE 1 ; DIG 2 ; GET 3 ; DUP 3 ; GET 6 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 3 } { IF_LEFT { SENDER ; DUP 3 ; GET 7 ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "NOT_ADMIN_OR_BOUND_IR" ; FAILWITH } } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NOT_BOUND_IR" ; FAILWITH } ; DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; SWAP ; DUP ; CAR ; DUP 3 ; GET 4 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 1 } { IF_LEFT { SENDER ; DUP 3 ; GET 7 ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "NOT_ADMIN_OR_BOUND_IR" ; FAILWITH } } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NOT_BOUND_IR" ; FAILWITH } ; DUP 2 ; CAR ; DUP 2 ; GET 3 ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; SWAP ; DUP ; GET 3 ; DUP 3 ; GET 4 ; SOME ; DIG 3 ; GET 3 ; UPDATE ; UPDATE 3 } { IF_LEFT { SENDER ; DUP 3 ; GET 7 ; DUP 2 ; COMPARE ; EQ ; IF { DROP } { DUP 3 ; GET 5 ; SWAP ; MEM ; IF {} { PUSH string "NOT_ADMIN_OR_BOUND_IR" ; FAILWITH } } ; DUP 2 ; GET 5 ; DUP 2 ; CAR ; MEM ; IF {} { PUSH string "NOT_BOUND_IR" ; FAILWITH } ; DUP 2 ; CAR ; DUP 2 ; CDR ; MEM ; IF {} { PUSH string "NOT_REGISTERED" ; FAILWITH } ; DUP 2 ; DUP 3 ; CAR ; NONE address ; DUP 4 ; CDR ; UPDATE ; UPDATE 1 ; DIG 2 ; GET 3 ; NONE nat ; DIG 3 ; CDR ; UPDATE ; UPDATE 3 } { IF_LEFT { DUP 2 ; GET 7 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; DUP 2 ; GET 8 ; DUP 2 ; CAR ; COMPARE ; NEQ ; IF { PUSH string "NOT_OWNER" ; FAILWITH } {} ; CDR ; UPDATE 8 } { DUP 2 ; GET 7 ; SENDER ; COMPARE ; NEQ ; IF { PUSH string "NOT_ADMIN" ; FAILWITH } {} ; UPDATE 7 } } } } } } } ; NIL operation ; PAIR } ; view "identityOf" address address { UNPAIR ; SWAP ; CAR ; SWAP ; GET ; IF_NONE { PUSH string "NOT_REGISTERED" ; FAILWITH } {} } ; view "countryOf" address nat { UNPAIR ; SWAP ; GET 3 ; SWAP ; GET ; IF_NONE { PUSH string "NOT_REGISTERED" ; FAILWITH } {} } ; view "isStored" address bool { UNPAIR ; SWAP ; CAR ; SWAP ; MEM } ; view "isBoundIR" address bool { UNPAIR ; SWAP ; GET 5 ; SWAP ; MEM } }