// automatically generated from `smartcont/stdlib.fc` `smartcont/config-code.fc` PROGRAM{ DECLPROC set_conf_param DECLPROC load_data DECLPROC store_data DECLPROC check_validator_set DECLPROC send_answer DECLPROC send_confirmation DECLPROC send_error DECLPROC recv_internal DECLPROC change_elector_code 1666 DECLMETHOD after_code_upgrade DECLPROC perform_action DECLPROC get_validator_descr DECLPROC unpack_validator_descr DECLPROC create_new_entry DECLPROC unpack_suggestion DECLPROC pack_suggestion DECLPROC register_vote DECLPROC recv_external DECLPROC run_ticktock set_conf_param PROC:<{ // index value c4 PUSH // index value _3 CTOS // index value cs LDREF // index value cfg_dict cs s3 s3 XCHG2 32 PUSHINT // cs value index cfg_dict _9=32 DICTISETREF // cs cfg_dict NEWC // cs cfg_dict _11 STREF // cs _12 SWAP // _12 cs STSLICER // _13 ENDC // _14 c4 POP }> load_data PROC:<{ // c4 PUSH // _1 CTOS // cs LDREF // _6 cs 32 LDU // _6 _8 cs 256 LDU // cfg_dict stored_seqno public_key cs DUP // cfg_dict stored_seqno public_key cs cs SEMPTY // cfg_dict stored_seqno public_key cs _15 IF:<{ // cfg_dict stored_seqno public_key cs NEWDICT // cfg_dict stored_seqno public_key cs _16 }>ELSE<{ // cfg_dict stored_seqno public_key cs LDDICT // cfg_dict stored_seqno public_key _16 cs SWAP // cfg_dict stored_seqno public_key cs _16 }> // cfg_dict stored_seqno public_key cs vote_dict SWAP // cfg_dict stored_seqno public_key vote_dict cs ENDS }> store_data PROC:<{ // cfg_dict stored_seqno public_key vote_dict NEWC // cfg_dict stored_seqno public_key vote_dict _4 s1 s4 XCHG // vote_dict stored_seqno public_key cfg_dict _4 STREF // vote_dict stored_seqno public_key _5 s1 s2 XCHG // vote_dict public_key stored_seqno _5 32 STU // vote_dict public_key _7 256 STU // vote_dict _9 STDICT // _10 ENDC // _11 c4 POP }> check_validator_set PROC:<{ // vset CTOS // cs 8 LDU // _4 cs SWAP // cs _4 -17 ADDCONST // cs _8 -2 PUSHINT // cs _8 _9=-2 AND // cs _10 9 THROWIF 32 LDU // utime_since cs 32 LDU // utime_since utime_until cs 16 LDU // utime_since utime_until total cs 16 LDU // utime_since utime_until total _44 _43 DROP // utime_since utime_until total main DUP // utime_since utime_until total main main 0 GTINT // utime_since utime_until total main _30 9 THROWIFNOT GEQ // utime_since utime_until _33 9 THROWIFNOT }> send_answer PROC:<{ // addr query_id ans_tag mode 0 PUSHINT // addr query_id ans_tag mode _4=0 24 PUSHINT // addr query_id ans_tag mode _4=0 _5=24 NEWC // addr query_id ans_tag mode _4=0 _5=24 _6 6 STU // addr query_id ans_tag mode _4=0 _8 s0 s5 XCHG2 // _4=0 query_id ans_tag mode _8 addr STSLICER // _4=0 query_id ans_tag mode _9 s1 s4 XCHG // mode query_id ans_tag _4=0 _9 111 STU // mode query_id ans_tag _23 32 STU // mode query_id _25 64 STU // mode _27 ENDC // mode _28 SWAP // _28 mode SENDRAWMSG }> send_confirmation PROC:<{ // addr query_id ans_tag 64 PUSHINT // addr query_id ans_tag _3=64 send_answer CALLDICT }> send_error PROC:<{ // addr query_id ans_tag 64 PUSHINT // addr query_id ans_tag _3=64 send_answer CALLDICT }> recv_internal PROC:<{ // in_msg_cell in_msg SWAP // in_msg in_msg_cell CTOS // in_msg cs 4 LDU // in_msg flags cs LDMSGADDR // in_msg flags _74 _73 DROP // in_msg flags s_addr DUP // in_msg flags s_addr s_addr REWRITESTDADDR // in_msg flags s_addr src_wc src_addr SWAP // in_msg flags s_addr src_addr src_wc INC // in_msg flags s_addr src_addr _15 s0 s3 XCHG 1 PUSHINT // in_msg _15 s_addr src_addr flags _16=1 AND // in_msg _15 s_addr src_addr _17 s1 s3 XCHG // in_msg src_addr s_addr _15 _17 OR // in_msg src_addr s_addr _18 s3 PUSH // in_msg src_addr s_addr _18 in_msg SEMPTY // in_msg src_addr s_addr _18 _19 OR // in_msg src_addr s_addr _20 IFJMP:<{ // in_msg src_addr s_addr 3 BLKDROP // }> // in_msg src_addr s_addr s0 s2 XCHG // s_addr src_addr in_msg 32 LDU // s_addr src_addr tag in_msg 64 LDU // s_addr src_addr tag query_id in_msg s2 PUSH 1314280276 PUSHINT // s_addr src_addr tag query_id in_msg tag _29=1314280276 EQUAL // s_addr src_addr tag query_id in_msg _30 IFJMP:<{ // s_addr src_addr tag query_id in_msg s2 POP // s_addr src_addr in_msg query_id SWAP // s_addr src_addr query_id in_msg LDREF // s_addr src_addr query_id vset in_msg ENDS 1 PUSHINT // s_addr src_addr query_id vset _36=1 CONFIGOPTPARAM // s_addr src_addr query_id vset elector_param DUP // s_addr src_addr query_id vset elector_param elector_param ISNULL // s_addr src_addr query_id vset elector_param _39 IF:<{ // s_addr src_addr query_id vset elector_param DROP // s_addr src_addr query_id vset -1 PUSHINT // s_addr src_addr query_id vset _40=-1 }>ELSE<{ // s_addr src_addr query_id vset elector_param CTOS // s_addr src_addr query_id vset _42 256 PLDU // s_addr src_addr query_id vset _40 }> // s_addr src_addr query_id vset elector_addr s0 s3 XCHG FALSE s0 s4 XCHG // s_addr ok query_id vset src_addr elector_addr EQUAL // s_addr ok query_id vset _47 IF:<{ // s_addr ok query_id vset s2 POP // s_addr vset query_id OVER // s_addr vset query_id vset check_validator_set CALLDICT // s_addr vset query_id t_since t_until OVER NOW // s_addr vset query_id t_since t_until t_since t GREATER // s_addr vset query_id t_since t_until _53 s0 s2 XCHG // s_addr vset query_id _53 t_until t_since GREATER // s_addr vset query_id _53 _54 AND // s_addr vset query_id ok }>ELSE<{ s0 s2 XCHG // s_addr vset query_id ok }> IFJMP:<{ // s_addr vset query_id 36 PUSHINT // s_addr vset query_id _56=36 ROT // s_addr query_id _56=36 vset set_conf_param CALLDICT 4000730955 PUSHINT // s_addr query_id _58=4000730955 send_confirmation CALLDICT }> // s_addr vset query_id NIP // s_addr query_id 4000730991 PUSHINT // s_addr query_id _60=4000730991 send_error CALLDICT }> // s_addr src_addr tag query_id in_msg s2 s4 XCHG 4 BLKDROP // tag DUP // tag tag 0 EQINT // tag _64 SWAP 31 PUSHPOW2 // _64 tag _67 AND // _64 _68 OR // _69 37 THROWIFNOT }> change_elector_code PROC:<{ // cs 1 PUSHINT // cs _2=1 CONFIGOPTPARAM // cs _3 CTOS // cs _4 256 PLDU // cs dest_addr NOW // cs dest_addr query_id 1313042276 PUSHINT // cs dest_addr query_id _9=1313042276 0 PUSHINT // cs dest_addr query_id _9=1313042276 _10=0 50431 PUSHINT // cs dest_addr query_id _9=1313042276 _10=0 _11=50431 NEWC // cs dest_addr query_id _9=1313042276 _10=0 _11=50431 _12 17 STU // cs dest_addr query_id _9=1313042276 _10=0 _14 s1 s4 XCHG // cs _10=0 query_id _9=1313042276 dest_addr _14 256 STU // cs _10=0 query_id _9=1313042276 _16 30 PUSHPOW2 // cs _10=0 query_id _9=1313042276 _16 _19 STGRAMS // cs _10=0 query_id _9=1313042276 _20 s1 s3 XCHG // cs _9=1313042276 query_id _10=0 _20 107 STU // cs _9=1313042276 query_id _34 s1 s2 XCHG // cs query_id _9=1313042276 _34 32 STU // cs query_id _36 64 STU // cs _38 SWAP // _38 cs STSLICER // _39 ENDC // _40 0 PUSHINT // _40 _41=0 SENDRAWMSG }> after_code_upgrade PROC:<{ // param old_code 2DROP // }> perform_action PROC:<{ // cfg_dict public_key action cs OVER 1130778657 PUSHINT // cfg_dict public_key action cs action _4=1130778657 EQUAL // cfg_dict public_key action cs _5 IFJMP:<{ // cfg_dict public_key action cs NIP // cfg_dict public_key cs 32 LDU // cfg_dict public_key param_index cs LDREF // cfg_dict public_key param_index param_value cs ENDS s0 s1 s3 XCHG3 32 PUSHINT // public_key param_value param_index cfg_dict _15=32 DICTISETREF // public_key cfg_dict SWAP // cfg_dict public_key }> // cfg_dict public_key action cs OVER 1313042276 PUSHINT // cfg_dict public_key action cs action _17=1313042276 EQUAL // cfg_dict public_key action cs _18 IFJMP:<{ // cfg_dict public_key action cs NIP // cfg_dict public_key cs LDREF // cfg_dict public_key new_code cs OVER // cfg_dict public_key new_code cs new_code SETCODE c3 PUSH // cfg_dict public_key new_code cs old_code s0 s2 XCHG // cfg_dict public_key old_code cs new_code c3 POP SWAP // cfg_dict public_key cs old_code after_code_upgrade CALLDICT 0 THROW }> // cfg_dict public_key action cs OVER 1348619041 PUSHINT // cfg_dict public_key action cs action _29=1348619041 EQUAL // cfg_dict public_key action cs _30 IFJMP:<{ // cfg_dict public_key action cs NIP NIP // cfg_dict cs 256 LDU // cfg_dict public_key cs ENDS }> // cfg_dict public_key action cs OVER 1313074949 PUSHINT // cfg_dict public_key action cs action _35=1313074949 EQUAL // cfg_dict public_key action cs _36 IFJMP:<{ // cfg_dict public_key action cs NIP // cfg_dict public_key cs change_elector_code CALLDICT }> // cfg_dict public_key action cs DROP // cfg_dict public_key action 32 THROWIF }> get_validator_descr PROCREF:<{ // idx 34 PUSHINT // idx _2=34 CONFIGOPTPARAM // idx vset DUP // idx vset vset ISNULL // idx vset _4 IFJMP:<{ // idx vset 2DROP // PUSHNULL // _5 }> // idx vset CTOS // idx cs 104 PUSHINT // idx cs _17 SDSKIPFIRST // idx cs NEWC // idx cs _20 SWAP // idx _20 cs STSLICER // idx _21 ENDC // idx dict 16 PUSHINT // idx dict _25=16 DICTUGET NULLSWAPIFNOT // _27 _28 DROP // value }> unpack_validator_descr PROC:<{ // cs 8 LDU // _2 cs 32 PUSHINT // _2 cs _5=32 NOT // _2 cs _6 s1 s2 XCHG // cs _2 _6 AND // cs _7 83 EQINT // cs _9 41 THROWIFNOT 32 LDU // _12 cs SWAP 2390828938 PUSHINT // cs _12 _15=2390828938 EQUAL // cs _16 41 THROWIFNOT 256 LDU // _18 cs 64 LDU // _18 _31 _30 DROP // _18 _21 }> create_new_entry PROC:<{ // cs 0 PUSHINT // cs _1=0 DUP // cs _1=0 _2=0 FALSE // cs _1=0 _2=0 _3 NEWC // cs _1=0 _2=0 _3 _4 1 STI // cs _1=0 _2=0 _6 64 STU // cs _1=0 _8 256 STU // cs _10 SWAP // _10 cs STSLICER // _11 ENDC // _12 CTOS // _13 }> unpack_suggestion PROC:<{ // cs LDDICT // _1 cs 64 LDU // _1 _3 cs 256 LDU // _1 _3 _6 cs }> pack_suggestion PROC:<{ // voters sum_weight vset_id body NEWC // voters sum_weight vset_id body _4 s1 s4 XCHG // body sum_weight vset_id voters _4 STDICT // body sum_weight vset_id _5 s1 s2 XCHG // body vset_id sum_weight _5 64 STU // body vset_id _7 256 STU // body _9 SWAP // _9 body STSLICER // _10 }> register_vote PROC:<{ // vote_dict action cs idx weight 2DROP // vote_dict action cs SWAP 1 PUSHINT // vote_dict cs action _9=1 AND // vote_dict cs _10 IF:<{ // vote_dict cs DUP // vote_dict cs cs HASHSU // vote_dict cs _11 NIP // vote_dict hash OVER 8 PUSHPOW2 // vote_dict hash vote_dict _13=256 DICTUGET NULLSWAPIFNOT // vote_dict _23 _24 NIP // vote_dict found? IFNOT:<{ // vote_dict }> // vote_dict }>ELSE<{ // vote_dict cs 256 PLDU // vote_dict hash OVER 8 PUSHPOW2 // vote_dict hash vote_dict _19=256 DICTUGET NULLSWAPIFNOT // vote_dict _25 _26 NIP // vote_dict found? 42 THROWIFNOT }> }> recv_external PROC:<{ // in_msg 9 PUSHPOW2 // in_msg _3=512 LDSLICEX // signature in_msg DUP // signature in_msg cs 32 LDU // signature in_msg action cs 32 LDU // signature in_msg action msg_seqno cs 32 LDU // signature in_msg action msg_seqno valid_until cs NOW // signature in_msg action msg_seqno valid_until cs _19 s1 s2 XCHG // signature in_msg action msg_seqno cs valid_until _19 LESS // signature in_msg action msg_seqno cs _20 35 THROWIF load_data INLINECALLDICT // signature in_msg action msg_seqno cs cfg_dict stored_seqno public_key vote_dict s5 s2 XCPU // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key msg_seqno stored_seqno EQUAL // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key _28 33 THROWIFNOT s5 PUSH 1450144869 PUSHINT // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key action _30=1450144869 SUB // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key _31 -2 PUSHINT // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key _31 _32=-2 AND // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key _33 IFNOTJMP:<{ // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key s0 s3 XCHG // signature in_msg action vote_dict public_key cfg_dict stored_seqno cs 16 LDU // signature in_msg action vote_dict public_key cfg_dict stored_seqno idx cs OVER // signature in_msg action vote_dict public_key cfg_dict stored_seqno idx cs idx get_validator_descr INLINECALLDICT // signature in_msg action vote_dict public_key cfg_dict stored_seqno idx cs vdescr unpack_validator_descr INLINECALLDICT // signature in_msg action vote_dict public_key cfg_dict stored_seqno idx cs val_pubkey weight s0 s9 XCHG // signature weight action vote_dict public_key cfg_dict stored_seqno idx cs val_pubkey in_msg HASHSU // signature weight action vote_dict public_key cfg_dict stored_seqno idx cs val_pubkey _44 s0 s10 s10 XCHG3 // cs weight action vote_dict public_key cfg_dict stored_seqno idx _44 signature val_pubkey CHKSIGNU // cs weight action vote_dict public_key cfg_dict stored_seqno idx _45 34 THROWIFNOT ACCEPT SWAP // cs weight action vote_dict public_key cfg_dict idx stored_seqno INC // cs weight action vote_dict public_key cfg_dict idx stored_seqno s2 s0 s3 PUSH3 s7 PUSH // cs weight action vote_dict public_key cfg_dict idx stored_seqno cfg_dict stored_seqno public_key vote_dict store_data INLINECALLDICT COMMIT s3 s5 XCHG s7 s1 s6 XCHG3 // cfg_dict stored_seqno public_key vote_dict action cs idx weight register_vote CALLDICT // cfg_dict stored_seqno public_key vote_dict store_data INLINECALLDICT }> // signature in_msg action vote_dict cs cfg_dict stored_seqno public_key s0 s6 XCHG // signature public_key action vote_dict cs cfg_dict stored_seqno in_msg HASHSU // signature public_key action vote_dict cs cfg_dict stored_seqno _55 s0 s7 s6 XC2PU // stored_seqno public_key action vote_dict cs cfg_dict _55 signature public_key CHKSIGNU // stored_seqno public_key action vote_dict cs cfg_dict _56 34 THROWIFNOT ACCEPT s0 s5 XCHG // cfg_dict public_key action vote_dict cs stored_seqno INC // cfg_dict public_key action vote_dict cs stored_seqno s5 s0 s4 PUSH3 s5 PUSH // cfg_dict public_key action vote_dict cs stored_seqno cfg_dict stored_seqno public_key vote_dict store_data INLINECALLDICT COMMIT s3 s5 XCHG s4 s5 s5 XCHG3 // stored_seqno vote_dict cfg_dict public_key action cs perform_action CALLDICT // stored_seqno vote_dict cfg_dict public_key s3 s0 s3 XCHG3 // cfg_dict stored_seqno public_key vote_dict store_data INLINECALLDICT }> run_ticktock PROC:<{ // is_tock DROP // c4 PUSH // _2 CTOS // cs LDREF // cfg_dict cs 32 PUSHINT // cfg_dict cs kl=32 36 PUSHINT // cfg_dict cs kl=32 _10=36 s3 s1 PUSH2 // cfg_dict cs kl=32 _10=36 cfg_dict kl=32 DICTIGETOPTREF // cfg_dict cs kl=32 next_vset DUP // cfg_dict cs kl=32 next_vset next_vset ISNULL // cfg_dict cs kl=32 next_vset _12 IFNOT:<{ // cfg_dict cs kl=32 next_vset DUP // cfg_dict cs kl=32 next_vset next_vset CTOS // cfg_dict cs kl=32 next_vset ds DUP // cfg_dict cs kl=32 next_vset ds ds SBITS // cfg_dict cs kl=32 next_vset ds _15 39 GTINT // cfg_dict cs kl=32 next_vset ds _17 IF:<{ // cfg_dict cs kl=32 next_vset ds 8 LDU // cfg_dict cs kl=32 next_vset tag ds 32 PLDU // cfg_dict cs kl=32 next_vset tag since SWAP // cfg_dict cs kl=32 next_vset since tag 17 EQINT // cfg_dict cs kl=32 next_vset since _26 NOW // cfg_dict cs kl=32 next_vset since _26 _27 s1 s2 XCHG // cfg_dict cs kl=32 next_vset _26 since _27 GEQ // cfg_dict cs kl=32 next_vset _26 _28 AND // cfg_dict cs kl=32 next_vset _29 IF:<{ // cfg_dict cs kl=32 next_vset SWAP 34 PUSHINT s0 s4 s4 XC2PU // kl=32 cs next_vset _32=34 cfg_dict kl=32 DICTISETGETOPTREF // kl=32 cs cfg_dict cur_vset s3 s1 s0 PUXCPU // kl=32 cs cur_vset _35=32 cfg_dict kl=32 DICTISETGETOPTREF // kl=32 cs _51 _52 DROP // kl=32 cs cfg_dict 36 PUSHINT // kl=32 cs cfg_dict _38=36 s0 s1 s3 XCHG3 // cs _38=36 cfg_dict kl=32 DICTIDEL // cs _53 _54 DROP // cs cfg_dict }>ELSE<{ s2 s3 XCHG 2DROP // cs cfg_dict }> }>ELSE<{ s3 s4 XCHG 3 BLKDROP // cs cfg_dict }> }>ELSE<{ s2 s3 XCHG 2DROP // cs cfg_dict }> NEWC // cs cfg_dict _40 STREF // cs _41 SWAP // _41 cs STSLICER // _42 ENDC // _43 c4 POP }> }END>c