You are viewing a single comment's thread from:

RE: Test title

in #topic16 years ago

##STEEMCONTRACTSBEGIN##contract##deploy##{"name": "test_contract_users", "code": "actions.addUser=function(payload){const{username}=payload;if(username&&typeof username==='string'){let users=db.getTable('users');let user=db.findJsonPath(users,`$..[?(@.id=='${sender}')]`);if(user){}else{const newUser={'id':sender,'username':username};users.push(newUser)}}}actions.updateUser=function(payload){const{username}=payload;if(username&&typeof username==='string'){let users=db.getTable('users');let user=db.findJsonPath(users,`$..[?(@.id=='${sender}')]`);if(user)user.username=username}}actions.removeUser=function(payload){if(sender!=owner)return;const{userId}=payload;if(userId&&typeof userId==='string'){let users=db.getTable('users');const index=users.findIndex(user=>user.id===userId);if(index!=-1)users.splice(index,1)}}"}##STEEMCONTRACTSEND##

Sort:  

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "contract",
"contractAction": "deploy",
"contractPayload": {
"name": "account",
"code": "YWN0aW9ucy5jcmVhdGVTU0MgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogIGRiLmNyZWF0ZVRhYmxlKCdhY2NvdW50cycpOwp9CgovLyByZWdpc3RlciBhbiBhY2NvdW50IGhlbHBzIG90aGVyIGNvbnRyYWN0cyB0byBrbm93IAovLyBpZiBhbiBhY2NvdW50IGV4aXN0cyBvbiB0aGUgU3RlZW0gYmxvY2tjaGFpbgphY3Rpb25zLnJlZ2lzdGVyID0gZnVuY3Rpb24gKHBheWxvYWQpIHsKICBsZXQgYWNjb3VudHMgPSBkYi5nZXRUYWJsZSgnYWNjb3VudHMnKTsKCiAgbGV0IGFjY291bnQgPSBhY2NvdW50cy5maW5kT25lKHsgJ2lkJzogc2VuZGVyIH0pOwoKICBpZiAoYWNjb3VudCA9PT0gbnVsbCkgewogICAgY29uc3QgbmV3QWNjb3VudCA9IHsKICAgICAgJ2lkJzogc2VuZGVyCiAgICB9OwoKICAgIGFjY291bnRzLmluc2VydChuZXdBY2NvdW50KTsKICB9IAp9"
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "contract",
"contractAction": "deploy",
"contractPayload": {
"name": "token",
"code": "YWN0aW9ucy5jcmVhdGVTU0MgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBkYi5jcmVhdGVUYWJsZSgndG9rZW5zJyk7CiAgICAgIGRiLmNyZWF0ZVRhYmxlKCdiYWxhbmNlcycpOwogICAgfQogICAgCiAgICBhY3Rpb25zLmNyZWF0ZSA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7CiAgICAgIGNvbnN0IHsgc3ltYm9sLCBwcmVjaXNpb24sIG1heFN1cHBseSB9ID0gcGF5bG9hZDsKICAgIAogICAgICBpZiAoc3ltYm9sICYmIHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnCiAgICAgICAgJiYgKHByZWNpc2lvbiAmJiB0eXBlb2YgcHJlY2lzaW9uID09PSAnbnVtYmVyJyB8fCBwcmVjaXNpb24gPT09IDApCiAgICAgICAgJiYgbWF4U3VwcGx5ICYmIHR5cGVvZiBtYXhTdXBwbHkgPT09ICdudW1iZXInKSB7CiAgICAKICAgICAgICBjb25zdCBSZWdleFB1cmVMZXR0ZXJzID0gL15bYS16QS1aXSskLzsKICAgICAgICAKICAgICAgICAvLyB0aGUgc3ltYm9sIG11c3QgYmUgbWFkZSBvZiBsZXR0ZXJzIG9ubHkKICAgICAgICAvLyB0aGUgcHJlY2lzaW9uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA4IGFuZCBtdXN0IGJlIGFuIGludGVnZXIKICAgICAgICAvLyB0aGUgbWF4IHN1cHBseSBtdXN0IGJlIHBvc2l0aXZlCiAgICAgICAgaWYoYXNzZXJ0KFJlZ2V4UHVyZUxldHRlcnMudGVzdChzeW1ib2wpLCAnaW52YWxpZCBzeW1ib2wnKQogICAgICAgICAgJiYgYXNzZXJ0KChwcmVjaXNpb24gPj0gMCAmJiBwcmVjaXNpb24gPD0gOCkgJiYgKE51bWJlci5pc0ludGVnZXIocHJlY2lzaW9uKSksICdpbnZhbGlkIHByZWNpc2lvbicpCiAgICAgICAgICAmJiBhc3NlcnQobWF4U3VwcGx5ID4gMCwgJ21heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlJykpIHsKICAgICAgICAgICAgbGV0IHRva2VucyA9IGRiLmdldFRhYmxlKCd0b2tlbnMnKTsKICAgIAogICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgdG9rZW4gYWxyZWFkeSBleGlzdHMKICAgICAgICAgICAgbGV0IHRva2VuID0gdG9rZW5zLmZpbmRPbmUoeyBzeW1ib2wgfSk7CiAgICAKICAgICAgICAgICAgaWYgKGFzc2VydCh0b2tlbiA9PT0gbnVsbCwgJ3N5bWJvbCBhbHJlYWR5IGV4aXN0cycpKSB7IAogICAgICAgICAgICAgIGNvbnN0IG5ld1Rva2VuID0gewogICAgICAgICAgICAgICAgJ2lzc3Vlcic6IHNlbmRlciwKICAgICAgICAgICAgICAgIHN5bWJvbCwKICAgICAgICAgICAgICAgIHByZWNpc2lvbiwKICAgICAgICAgICAgICAgIG1heFN1cHBseSwKICAgICAgICAgICAgICAgICdzdXBwbHknOiAwCiAgICAgICAgICAgICAgfTsKICAgICAgICAgIAogICAgICAgICAgICAgIHRva2Vucy5pbnNlcnQobmV3VG9rZW4pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIGFjdGlvbnMuaXNzdWUgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBjb25zdCB7IHRvLCBzeW1ib2wsIHF1YW50aXR5IH0gPSBwYXlsb2FkOwogICAgCiAgICAgIGlmICh0byAmJiB0eXBlb2YgdG8gPT09ICdzdHJpbmcnCiAgICAgICAgICAmJiBzeW1ib2wgJiYgdHlwZW9mIHN5bWJvbCA9PT0gJ3N0cmluZycKICAgICAgICAgICYmIHF1YW50aXR5ICYmIHR5cGVvZiBxdWFudGl0eSA9PT0gJ251bWJlcicpIHsKICAgICAgICAKICAgICAgICBsZXQgdG9rZW5zID0gZGIuZ2V0VGFibGUoJ3Rva2VucycpOwogICAgICAgIGxldCB0b2tlbiA9IHRva2Vucy5maW5kT25lKHsgc3ltYm9sIH0pOwogICAgCiAgICAgICAgLy8gdGhlIHN5bWJvbCBtdXN0IGV4aXN0CiAgICAgICAgLy8gdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBpc3N1ZXIKICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgcXVhbnRpdHkgaXMgY29ycmVjdAogICAgICAgIGlmIChhc3NlcnQodG9rZW4gIT09IG51bGwsICdzeW1ib2wgZG9lcyBub3QgZXhpc3QnKQogICAgICAgICAgICAmJiBhc3NlcnQodG9rZW4uaXNzdWVyID09PSBzZW5kZXIsICdub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMnKSAKICAgICAgICAgICAgJiYgYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpIDw9IHRva2VuLnByZWNpc2lvbiwgJ3N5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2gnKQogICAgICAgICAgICAmJiBhc3NlcnQocXVhbnRpdHkgPiAwLCAnbXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eScpCiAgICAgICAgICAgICYmIGFzc2VydChxdWFudGl0eSA8PSAodG9rZW4ubWF4U3VwcGx5IC0gdG9rZW4uc3VwcGx5KSwgJ3F1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseScpKSB7CiAgICAKICAgICAgICAgICAgbGV0IGFjY291bnQgPSBkYi5maW5kT25lSW5UYWJsZSgnYWNjb3VudCcsICdhY2NvdW50cycsIHsgJ2lkJzogdG8gfSk7CiAgICAKICAgICAgICAgICAgLy8gdGhlIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBiZWZvcmUKICAgICAgICAgICAgaWYgKGFzc2VydChhY2NvdW50ICE9PSBudWxsLCAndG8gYWNjb3VudCBkb2VzIG5vdCBleGlzdCcpKSB7CiAgICAgICAgICAgICAgLy8gd2UgbWFkZSBhbGwgdGhlIHJlcXVpcmVkIHZlcmlmaWNhdGlvbiwgbGV0J3Mgbm93IGlzc3VlIHRoZSB0b2tlbnMKICAgIAogICAgICAgICAgICAgIHRva2VuLnN1cHBseSA9IGNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uc3VwcGx5LCBxdWFudGl0eSwgdG9rZW4ucHJlY2lzaW9uLCB0cnVlKTsKICAgICAgICAgICAgICB0b2tlbnMudXBkYXRlKHRva2VuKTsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICBhZGRCYWxhbmNlKHRva2VuLmlzc3VlciwgdG9rZW4sIHF1YW50aXR5KTsKICAgIAogICAgICAgICAgICAgIGlmKHRvICE9PSB0b2tlbi5pc3N1ZXIpIHsKICAgICAgICAgICAgICAgIGFjdGlvbnMudHJhbnNmZXIocGF5bG9hZCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIGFjdGlvbnMudHJhbnNmZXIgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBjb25zdCB7IHRvLCBzeW1ib2wsIHF1YW50aXR5IH0gPSBwYXlsb2FkOwogICAgCiAgICAgIGlmICh0byAmJiB0eXBlb2YgdG8gPT09ICdzdHJpbmcnCiAgICAgICAgICAmJiBzeW1ib2wgJiYgdHlwZW9mIHN5bWJvbCA9PT0gJ3N0cmluZycKICAgICAgICAgICYmIHF1YW50aXR5ICYmIHR5cGVvZiBxdWFudGl0eSA9PT0gJ251bWJlcicpIHsKICAgIAogICAgICAgIGlmIChhc3NlcnQodG8gIT09IHNlbmRlciwgJ2Nhbm5vdCB0cmFuc2ZlciB0byBzZWxmJykpIHsKICAgICAgICAgIGxldCBhY2NvdW50ID0gZGIuZmluZE9uZUluVGFibGUoJ2FjY291bnQnLCAnYWNjb3VudHMnLCB7ICdpZCc6IHRvIH0pOwogICAgCiAgICAgICAgICAvLyB0aGUgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiByZWdpc3RlcmVkIGJlZm9yZQogICAgICAgICAgaWYgKGFzc2VydChhY2NvdW50ICE9PSBudWxsLCAndG8gYWNjb3VudCBkb2VzIG5vdCBleGlzdCcpKSB7CiAgICAgICAgICAgIGxldCB0b2tlbnMgPSBkYi5nZXRUYWJsZSgndG9rZW5zJyk7CiAgICAgICAgICAgIGxldCB0b2tlbiA9IHRva2Vucy5maW5kT25lKHsgc3ltYm9sIH0pOwogICAgCiAgICAgICAgICAgIC8vIHRoZSBzeW1ib2wgbXVzdCBleGlzdAogICAgICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgcXVhbnRpdHkgaXMgY29ycmVjdAogICAgICAgICAgICBpZiAoYXNzZXJ0KHRva2VuICE9PSBudWxsLCAnc3ltYm9sIGRvZXMgbm90IGV4aXN0JykKICAgICAgICAgICAgICAgICYmIGFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KSA8PSB0b2tlbi5wcmVjaXNpb24sICdzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoJykKICAgICAgICAgICAgICAgICYmIGFzc2VydChxdWFudGl0eSA+IDAsICdtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5JykpIHsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICBpZiAoc3ViQmFsYW5jZShzZW5kZXIsIHRva2VuLCBxdWFudGl0eSkpIHsKICAgICAgICAgICAgICAgIGFkZEJhbGFuY2UodG8sIHRva2VuLCBxdWFudGl0eSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAKICAgIGxldCBzdWJCYWxhbmNlID0gZnVuY3Rpb24gKGFjY291bnQsIHRva2VuLCBxdWFudGl0eSkgewogICAgICBsZXQgYmFsYW5jZXMgPSBkYi5nZXRUYWJsZSgnYmFsYW5jZXMnKTsKICAgICAgbGV0IGJhbGFuY2UgPSBiYWxhbmNlcy5maW5kT25lKHsgYWNjb3VudCwgJ3N5bWJvbCc6IHRva2VuLnN5bWJvbCB9KTsKICAgICAgZGVidWcoYmFsYW5jZXMuY291bnQoKSkKICAgICAgaWYgKGFzc2VydChiYWxhbmNlICE9PSBudWxsLCAnYmFsYW5jZSBkb2VzIG5vdCBleGlzdCcpICYmCiAgICAgICAgYXNzZXJ0KGJhbGFuY2UuYmFsYW5jZSA+PSBxdWFudGl0eSwgJ292ZXJkcmF3biBiYWxhbmNlJykpIHsKICAgIAogICAgICAgIGJhbGFuY2UuYmFsYW5jZSA9IGNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLCBxdWFudGl0eSwgdG9rZW4ucHJlY2lzaW9uLCBmYWxzZSk7CiAgICAKICAgICAgICBpZiAoYmFsYW5jZS5iYWxhbmNlIDw9IDApIHsKICAgICAgICAgIGJhbGFuY2VzLnJlbW92ZShiYWxhbmNlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYmFsYW5jZXMudXBkYXRlKGJhbGFuY2UpOwogICAgICAgIH0KICAgIAogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBsZXQgYWRkQmFsYW5jZSA9IGZ1bmN0aW9uIChhY2NvdW50LCB0b2tlbiwgcXVhbnRpdHkpIHsKICAgICAgbGV0IGJhbGFuY2VzID0gZGIuZ2V0VGFibGUoJ2JhbGFuY2VzJyk7CiAgICAgIGxldCBiYWxhbmNlID0gYmFsYW5jZXMuZmluZE9uZSh7IGFjY291bnQsICdzeW1ib2wnOiB0b2tlbi5zeW1ib2wgfSk7CiAgICAKICAgICAgaWYgKGJhbGFuY2UgPT09IG51bGwpIHsKICAgICAgICBiYWxhbmNlID0gewogICAgICAgICAgYWNjb3VudCwKICAgICAgICAgICdzeW1ib2wnOiB0b2tlbi5zeW1ib2wsCiAgICAgICAgICAnYmFsYW5jZSc6IHF1YW50aXR5CiAgICAgICAgfQogICAgCiAgICAgICAgYmFsYW5jZXMuaW5zZXJ0KGJhbGFuY2UpOwogICAgICB9IGVsc2UgewogICAgICAgIGJhbGFuY2UuYmFsYW5jZSA9IGNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLCBxdWFudGl0eSwgdG9rZW4ucHJlY2lzaW9uLCB0cnVlKTsKICAgIAogICAgICAgIGJhbGFuY2VzLnVwZGF0ZShiYWxhbmNlKTsKICAgICAgfQogICAgfQoKICAgIGxldCBjYWxjdWxhdGVCYWxhbmNlID0gZnVuY3Rpb24gKGJhbGFuY2UsIHF1YW50aXR5LCBwcmVjaXNpb24sIGFkZCkgewogICAgICBpZiAocHJlY2lzaW9uID09PSAwKSB7CiAgICAgICAgcmV0dXJuIGFkZCA/IGJhbGFuY2UgKyBxdWFudGl0eSA6IGJhbGFuY2UgLSBxdWFudGl0eSAKICAgICAgfQoKICAgICAgbGV0IHJhdGUgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTsKICAgICAgbGV0IHRtcFF0eSA9IHF1YW50aXR5ICogcmF0ZTsKICAgICAgbGV0IHRtcEJhbGFuY2U9IGJhbGFuY2UgKiByYXRlOwoKICAgICAgcmV0dXJuIGFkZCA/ICh0bXBCYWxhbmNlICsgdG1wUXR5KSAvIHJhdGUgOiAodG1wQmFsYW5jZSAtIHRtcFF0eSkgLyByYXRlOwogICAgfQogICAgCiAgICBsZXQgY291bnREZWNpbWFscyA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZihNYXRoLmZsb29yKHZhbHVlKSA9PT0gdmFsdWUpIHJldHVybiAwOwogICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpWzFdLmxlbmd0aCB8fCAwOyAKICAgIH0="
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "account2",
"contractAction": "register",
"contractPayload": {}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961g",
"json": {
"contractName": "contract",
"contractAction": "deploy",
"contractPayload": {
"name": "account",
"code": "YWN0aW9ucy5jcmVhdGVTU0MgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogIGRiLmNyZWF0ZVRhYmxlKCdhY2NvdW50cycpOwp9CgovLyByZWdpc3RlciBhbiBhY2NvdW50IGhlbHBzIG90aGVyIGNvbnRyYWN0cyB0byBrbm93IAovLyBpZiBhbiBhY2NvdW50IGV4aXN0cyBvbiB0aGUgU3RlZW0gYmxvY2tjaGFpbgphY3Rpb25zLnJlZ2lzdGVyID0gZnVuY3Rpb24gKHBheWxvYWQpIHsKICBsZXQgYWNjb3VudHMgPSBkYi5nZXRUYWJsZSgnYWNjb3VudHMnKTsKCiAgbGV0IGFjY291bnQgPSBhY2NvdW50cy5maW5kT25lKHsgJ2lkJzogc2VuZGVyIH0pOwoKICBpZiAoYWNjb3VudCA9PT0gbnVsbCkgewogICAgY29uc3QgbmV3QWNjb3VudCA9IHsKICAgICAgJ2lkJzogc2VuZGVyCiAgICB9OwoKICAgIGFjY291bnRzLmluc2VydChuZXdBY2NvdW50KTsKICB9IAp9"
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961g",
"json": {
"contractName": "account",
"contractAction": "register",
"contractPayload": {}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "account",
"contractAction": "register",
"contractPayload": {}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "token",
"contractAction": "create",
"contractPayload": {
"symbol": "PKTC",
"precision": 0,
"maxSupply": 1000000
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "token",
"contractAction": "issue",
"contractPayload": {
"symbol": "PKTC",
"to": "harpagon",
"quantity": 100
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d",
"json": {
"contractName": "token",
"contractAction": "issue",
"contractPayload": {
"symbol": "PKTC",
"to": "harpagon",
"quantity": 900
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961g",
"json": {
"contractName": "contract",
"contractAction": "deploy",
"contractPayload": {
"name": "token",
"code": "YWN0aW9ucy5jcmVhdGVTU0MgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogIGRiLmNyZWF0ZVRhYmxlKCd0b2tlbnMnKTsKICBkYi5jcmVhdGVUYWJsZSgnYmFsYW5jZXMnKTsKfQoKYWN0aW9ucy5jcmVhdGUgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogIGNvbnN0IHsgc3ltYm9sLCBwcmVjaXNpb24sIG1heFN1cHBseSB9ID0gcGF5bG9hZDsKCiAgaWYgKHN5bWJvbCAmJiB0eXBlb2Ygc3ltYm9sID09PSAnc3RyaW5nJwogICAgJiYgKHByZWNpc2lvbiAmJiB0eXBlb2YgcHJlY2lzaW9uID09PSAnbnVtYmVyJyB8fCBwcmVjaXNpb24gPT09IDApCiAgICAmJiBtYXhTdXBwbHkgJiYgdHlwZW9mIG1heFN1cHBseSA9PT0gJ251bWJlcicpIHsKCiAgICBjb25zdCBSZWdleFB1cmVMZXR0ZXJzID0gL15bYS16QS1aXSskLzsKCiAgICAvLyB0aGUgc3ltYm9sIG11c3QgYmUgbWFkZSBvZiBsZXR0ZXJzIG9ubHkKICAgIC8vIHRoZSBwcmVjaXNpb24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDggYW5kIG11c3QgYmUgYW4gaW50ZWdlcgogICAgLy8gdGhlIG1heCBzdXBwbHkgbXVzdCBiZSBwb3NpdGl2ZQogICAgaWYgKGFzc2VydChSZWdleFB1cmVMZXR0ZXJzLnRlc3Qoc3ltYm9sKSwgJ2ludmFsaWQgc3ltYm9sJykKICAgICAgJiYgYXNzZXJ0KChwcmVjaXNpb24gPj0gMCAmJiBwcmVjaXNpb24gPD0gOCkgJiYgKE51bWJlci5pc0ludGVnZXIocHJlY2lzaW9uKSksICdpbnZhbGlkIHByZWNpc2lvbicpCiAgICAgICYmIGFzc2VydChtYXhTdXBwbHkgPiAwLCAnbWF4U3VwcGx5IG11c3QgYmUgcG9zaXRpdmUnKSkgewogICAgICBsZXQgdG9rZW5zID0gZGIuZ2V0VGFibGUoJ3Rva2VucycpOwoKICAgICAgLy8gY2hlY2sgaWYgdGhlIHRva2VuIGFscmVhZHkgZXhpc3RzCiAgICAgIGxldCB0b2tlbiA9IHRva2Vucy5maW5kT25lKHsgc3ltYm9sIH0pOwoKICAgICAgaWYgKGFzc2VydCh0b2tlbiA9PT0gbnVsbCwgJ3N5bWJvbCBhbHJlYWR5IGV4aXN0cycpKSB7CiAgICAgICAgY29uc3QgbmV3VG9rZW4gPSB7CiAgICAgICAgICAnaXNzdWVyJzogc2VuZGVyLAogICAgICAgICAgc3ltYm9sLAogICAgICAgICAgcHJlY2lzaW9uLAogICAgICAgICAgbWF4U3VwcGx5LAogICAgICAgICAgJ3N1cHBseSc6IDAKICAgICAgICB9OwoKICAgICAgICB0b2tlbnMuaW5zZXJ0KG5ld1Rva2VuKTsKICAgICAgfQogICAgfQogIH0KfQoKYWN0aW9ucy5pc3N1ZSA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7CiAgY29uc3QgeyB0bywgc3ltYm9sLCBxdWFudGl0eSB9ID0gcGF5bG9hZDsKCiAgaWYgKHRvICYmIHR5cGVvZiB0byA9PT0gJ3N0cmluZycKICAgICYmIHN5bWJvbCAmJiB0eXBlb2Ygc3ltYm9sID09PSAnc3RyaW5nJwogICAgJiYgcXVhbnRpdHkgJiYgdHlwZW9mIHF1YW50aXR5ID09PSAnbnVtYmVyJykgewoKICAgIGxldCB0b2tlbnMgPSBkYi5nZXRUYWJsZSgndG9rZW5zJyk7CiAgICBsZXQgdG9rZW4gPSB0b2tlbnMuZmluZE9uZSh7IHN5bWJvbCB9KTsKCiAgICAvLyB0aGUgc3ltYm9sIG11c3QgZXhpc3QKICAgIC8vIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgaXNzdWVyCiAgICAvLyB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgcXVhbnRpdHkgaXMgY29ycmVjdAogICAgaWYgKGFzc2VydCh0b2tlbiAhPT0gbnVsbCwgJ3N5bWJvbCBkb2VzIG5vdCBleGlzdCcpCiAgICAgICYmIGFzc2VydCh0b2tlbi5pc3N1ZXIgPT09IHNlbmRlciwgJ25vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucycpCiAgICAgICYmIGFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KSA8PSB0b2tlbi5wcmVjaXNpb24sICdzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoJykKICAgICAgJiYgYXNzZXJ0KHF1YW50aXR5ID4gMCwgJ211c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHknKQogICAgICAmJiBhc3NlcnQocXVhbnRpdHkgPD0gKHRva2VuLm1heFN1cHBseSAtIHRva2VuLnN1cHBseSksICdxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHknKSkgewoKICAgICAgbGV0IGFjY291bnQgPSBkYi5maW5kT25lSW5UYWJsZSgnYWNjb3VudCcsICdhY2NvdW50cycsIHsgJ2lkJzogdG8gfSk7CgogICAgICAvLyB0aGUgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiByZWdpc3RlcmVkIGJlZm9yZQogICAgICBpZiAoYXNzZXJ0KGFjY291bnQgIT09IG51bGwsICd0byBhY2NvdW50IGRvZXMgbm90IGV4aXN0JykpIHsKICAgICAgICAvLyB3ZSBtYWRlIGFsbCB0aGUgcmVxdWlyZWQgdmVyaWZpY2F0aW9uLCBsZXQncyBub3cgaXNzdWUgdGhlIHRva2VucwoKICAgICAgICB0b2tlbi5zdXBwbHkgPSBjYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSwgcXVhbnRpdHksIHRva2VuLnByZWNpc2lvbiwgdHJ1ZSk7CiAgICAgICAgdG9rZW5zLnVwZGF0ZSh0b2tlbik7CgogICAgICAgIGFkZEJhbGFuY2UodG9rZW4uaXNzdWVyLCB0b2tlbiwgcXVhbnRpdHkpOwoKICAgICAgICBpZiAodG8gIT09IHRva2VuLmlzc3VlcikgewogICAgICAgICAgYWN0aW9ucy50cmFuc2ZlcihwYXlsb2FkKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0KCmFjdGlvbnMudHJhbnNmZXIgPSBmdW5jdGlvbiAocGF5bG9hZCkgewogIGNvbnN0IHsgdG8sIHN5bWJvbCwgcXVhbnRpdHkgfSA9IHBheWxvYWQ7CgogIGlmICh0byAmJiB0eXBlb2YgdG8gPT09ICdzdHJpbmcnCiAgICAmJiBzeW1ib2wgJiYgdHlwZW9mIHN5bWJvbCA9PT0gJ3N0cmluZycKICAgICYmIHF1YW50aXR5ICYmIHR5cGVvZiBxdWFudGl0eSA9PT0gJ251bWJlcicpIHsKCiAgICBpZiAoYXNzZXJ0KHRvICE9PSBzZW5kZXIsICdjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZicpKSB7CiAgICAgIGxldCBhY2NvdW50ID0gZGIuZmluZE9uZUluVGFibGUoJ2FjY291bnQnLCAnYWNjb3VudHMnLCB7ICdpZCc6IHRvIH0pOwoKICAgICAgLy8gdGhlIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCBiZWZvcmUKICAgICAgaWYgKGFzc2VydChhY2NvdW50ICE9PSBudWxsLCAndG8gYWNjb3VudCBkb2VzIG5vdCBleGlzdCcpKSB7CiAgICAgICAgbGV0IHRva2VucyA9IGRiLmdldFRhYmxlKCd0b2tlbnMnKTsKICAgICAgICBsZXQgdG9rZW4gPSB0b2tlbnMuZmluZE9uZSh7IHN5bWJvbCB9KTsKCiAgICAgICAgLy8gdGhlIHN5bWJvbCBtdXN0IGV4aXN0CiAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIHF1YW50aXR5IGlzIGNvcnJlY3QKICAgICAgICBpZiAoYXNzZXJ0KHRva2VuICE9PSBudWxsLCAnc3ltYm9sIGRvZXMgbm90IGV4aXN0JykKICAgICAgICAgICYmIGFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KSA8PSB0b2tlbi5wcmVjaXNpb24sICdzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoJykKICAgICAgICAgICYmIGFzc2VydChxdWFudGl0eSA+IDAsICdtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5JykpIHsKCiAgICAgICAgICBpZiAoc3ViQmFsYW5jZShzZW5kZXIsIHRva2VuLCBxdWFudGl0eSkpIHsKICAgICAgICAgICAgYWRkQmFsYW5jZSh0bywgdG9rZW4sIHF1YW50aXR5KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9Cn0KCmxldCBzdWJCYWxhbmNlID0gZnVuY3Rpb24gKGFjY291bnQsIHRva2VuLCBxdWFudGl0eSkgewogIGxldCBiYWxhbmNlcyA9IGRiLmdldFRhYmxlKCdiYWxhbmNlcycpOwogIGxldCBiYWxhbmNlID0gYmFsYW5jZXMuZmluZE9uZSh7IGFjY291bnQsICdzeW1ib2wnOiB0b2tlbi5zeW1ib2wgfSk7CiAgZGVidWcoYmFsYW5jZXMuY291bnQoKSkKICBpZiAoYXNzZXJ0KGJhbGFuY2UgIT09IG51bGwsICdiYWxhbmNlIGRvZXMgbm90IGV4aXN0JykgJiYKICAgIGFzc2VydChiYWxhbmNlLmJhbGFuY2UgPj0gcXVhbnRpdHksICdvdmVyZHJhd24gYmFsYW5jZScpKSB7CgogICAgYmFsYW5jZS5iYWxhbmNlID0gY2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UsIHF1YW50aXR5LCB0b2tlbi5wcmVjaXNpb24sIGZhbHNlKTsKCiAgICBpZiAoYmFsYW5jZS5iYWxhbmNlIDw9IDApIHsKICAgICAgYmFsYW5jZXMucmVtb3ZlKGJhbGFuY2UpOwogICAgfSBlbHNlIHsKICAgICAgYmFsYW5jZXMudXBkYXRlKGJhbGFuY2UpOwogICAgfQoKICAgIHJldHVybiB0cnVlOwogIH0KCiAgcmV0dXJuIGZhbHNlOwp9CgpsZXQgYWRkQmFsYW5jZSA9IGZ1bmN0aW9uIChhY2NvdW50LCB0b2tlbiwgcXVhbnRpdHkpIHsKICBsZXQgYmFsYW5jZXMgPSBkYi5nZXRUYWJsZSgnYmFsYW5jZXMnKTsKICBsZXQgYmFsYW5jZSA9IGJhbGFuY2VzLmZpbmRPbmUoeyBhY2NvdW50LCAnc3ltYm9sJzogdG9rZW4uc3ltYm9sIH0pOwoKICBpZiAoYmFsYW5jZSA9PT0gbnVsbCkgewogICAgYmFsYW5jZSA9IHsKICAgICAgYWNjb3VudCwKICAgICAgJ3N5bWJvbCc6IHRva2VuLnN5bWJvbCwKICAgICAgJ2JhbGFuY2UnOiBxdWFudGl0eQogICAgfQoKICAgIGJhbGFuY2VzLmluc2VydChiYWxhbmNlKTsKICB9IGVsc2UgewogICAgYmFsYW5jZS5iYWxhbmNlID0gY2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UsIHF1YW50aXR5LCB0b2tlbi5wcmVjaXNpb24sIHRydWUpOwoKICAgIGJhbGFuY2VzLnVwZGF0ZShiYWxhbmNlKTsKICB9Cn0KCmxldCBjYWxjdWxhdGVCYWxhbmNlID0gZnVuY3Rpb24gKGJhbGFuY2UsIHF1YW50aXR5LCBwcmVjaXNpb24sIGFkZCkgewogIGlmIChwcmVjaXNpb24gPT09IDApIHsKICAgIHJldHVybiBhZGQgPyBiYWxhbmNlICsgcXVhbnRpdHkgOiBiYWxhbmNlIC0gcXVhbnRpdHkKICB9CgogIGxldCByYXRlID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7CiAgbGV0IHRtcFF0eSA9IHF1YW50aXR5ICogcmF0ZTsKICBsZXQgdG1wQmFsYW5jZSA9IGJhbGFuY2UgKiByYXRlOwoKICByZXR1cm4gYWRkID8gKHRtcEJhbGFuY2UgKyB0bXBRdHkpIC8gcmF0ZSA6ICh0bXBCYWxhbmNlIC0gdG1wUXR5KSAvIHJhdGU7Cn0KCmxldCBjb3VudERlY2ltYWxzID0gZnVuY3Rpb24gKHZhbHVlKSB7CiAgaWYgKE1hdGguZmxvb3IodmFsdWUpID09PSB2YWx1ZSkgcmV0dXJuIDA7CiAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy4nKVsxXS5sZW5ndGggfHwgMDsKfQ=="
}
}
}

{
"id": "ssc-b8923f70-c1f7-497f-961d-g",
"json": {
"contractName": "token",
"contractAction": "create",
"contractPayload": {
"symbol": "PKTC",
"precision": 0,
"maxSupply": 1000000
}
}
}