-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Issue with box value proxy not proxying all members through to p…
…roxied builder
- Loading branch information
1 parent
85a25b3
commit 59fea44
Showing
11 changed files
with
2,225 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
import { arc4, assert, Box, Bytes, op, TransactionType } from '@algorandfoundation/algorand-typescript' | ||
import { Tuple, UintN64 } from '@algorandfoundation/algorand-typescript/arc4' | ||
|
||
export class BoxContract extends arc4.Contract { | ||
oca = Box<arc4.OnCompleteAction>({ key: Bytes('oca') }) | ||
txn = Box<TransactionType>({ key: Bytes('txn') }) | ||
|
||
@arc4.abimethod({ name: 'store_enums' }) | ||
public storeEnums(): void { | ||
this.oca.value = arc4.OnCompleteAction.OptIn | ||
this.txn.value = TransactionType.ApplicationCall | ||
} | ||
|
||
@arc4.abimethod({ name: 'read_enums' }) | ||
public readEnums(): Tuple<[UintN64, UintN64]> { | ||
assert(op.Box.get(Bytes('oca'))[0] === op.itob(this.oca.value)) | ||
assert(op.Box.get(Bytes('txn'))[0] === op.itob(this.txn.value)) | ||
|
||
return new Tuple(new UintN64(this.oca.value), new UintN64(this.txn.value)) | ||
} | ||
} |
213 changes: 213 additions & 0 deletions
213
tests/approvals/out/box-enum-contract/BoxContract.approval.teal
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
#pragma version 10 | ||
|
||
tests/approvals/box-enum-contract.algo.ts::BoxContract.approvalProgram: | ||
intcblock 0 1 | ||
bytecblock "oca" "txn" | ||
txn ApplicationID | ||
bnz main_after_if_else@2 | ||
callsub constructor | ||
|
||
main_after_if_else@2: | ||
callsub __puya_arc4_router__ | ||
return | ||
|
||
|
||
// tests/approvals/box-enum-contract.algo.ts::BoxContract.constructor() -> void: | ||
constructor: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
proto 0 0 | ||
retsub | ||
|
||
|
||
// tests/approvals/box-enum-contract.algo.ts::BoxContract.__puya_arc4_router__() -> uint64: | ||
__puya_arc4_router__: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
proto 0 1 | ||
txn NumAppArgs | ||
intc_0 // 0 | ||
!= | ||
bz __puya_arc4_router___bare_routing@6 | ||
txna ApplicationArgs 0 | ||
pushbytes 0xf26c6d42 // method "store_enums()void" | ||
pushbytes 0xef186cf7 // method "read_enums()(uint64,uint64)" | ||
uncover 2 | ||
match __puya_arc4_router___store_enums_route@2 __puya_arc4_router___read_enums_route@3 | ||
b __puya_arc4_router___switch_case_default@4 | ||
|
||
__puya_arc4_router___store_enums_route@2: | ||
// tests/approvals/box-enum-contract.algo.ts:8 | ||
// @arc4.abimethod({ name: 'store_enums' }) | ||
txn OnCompletion | ||
intc_0 // NoOp | ||
== | ||
assert // OnCompletion is not NoOp | ||
txn ApplicationID | ||
intc_0 // 0 | ||
!= | ||
assert // can only call when not creating | ||
callsub storeEnums | ||
intc_1 // 1 | ||
retsub | ||
|
||
__puya_arc4_router___read_enums_route@3: | ||
// tests/approvals/box-enum-contract.algo.ts:14 | ||
// @arc4.abimethod({ name: 'read_enums' }) | ||
txn OnCompletion | ||
intc_0 // NoOp | ||
== | ||
assert // OnCompletion is not NoOp | ||
txn ApplicationID | ||
intc_0 // 0 | ||
!= | ||
assert // can only call when not creating | ||
callsub readEnums | ||
pushbytes 0x151f7c75 | ||
swap | ||
concat | ||
log | ||
intc_1 // 1 | ||
retsub | ||
|
||
__puya_arc4_router___switch_case_default@4: | ||
b __puya_arc4_router___after_if_else@10 | ||
|
||
__puya_arc4_router___bare_routing@6: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
txn OnCompletion | ||
intc_0 // 0 | ||
swap | ||
match __puya_arc4_router_____algots__.defaultCreate@7 | ||
b __puya_arc4_router___switch_case_default@8 | ||
|
||
__puya_arc4_router_____algots__.defaultCreate@7: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
txn ApplicationID | ||
intc_0 // 0 | ||
== | ||
assert // can only call when creating | ||
callsub __algots__.defaultCreate | ||
intc_1 // 1 | ||
retsub | ||
|
||
__puya_arc4_router___switch_case_default@8: | ||
|
||
__puya_arc4_router___after_if_else@10: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
intc_0 // 0 | ||
retsub | ||
|
||
|
||
// tests/approvals/box-enum-contract.algo.ts::BoxContract.storeEnums() -> void: | ||
storeEnums: | ||
// tests/approvals/box-enum-contract.algo.ts:8-9 | ||
// @arc4.abimethod({ name: 'store_enums' }) | ||
// public storeEnums(): void { | ||
proto 0 0 | ||
// tests/approvals/box-enum-contract.algo.ts:10 | ||
// this.oca.value = arc4.OnCompleteAction.OptIn | ||
intc_1 // 1 | ||
itob | ||
// tests/approvals/box-enum-contract.algo.ts:5 | ||
// oca = Box<arc4.OnCompleteAction>({ key: Bytes('oca') }) | ||
bytec_0 // "oca" | ||
// tests/approvals/box-enum-contract.algo.ts:10 | ||
// this.oca.value = arc4.OnCompleteAction.OptIn | ||
swap | ||
box_put | ||
// tests/approvals/box-enum-contract.algo.ts:11 | ||
// this.txn.value = TransactionType.ApplicationCall | ||
pushint 6 // 6 | ||
itob | ||
// tests/approvals/box-enum-contract.algo.ts:6 | ||
// txn = Box<TransactionType>({ key: Bytes('txn') }) | ||
bytec_1 // "txn" | ||
// tests/approvals/box-enum-contract.algo.ts:11 | ||
// this.txn.value = TransactionType.ApplicationCall | ||
swap | ||
box_put | ||
retsub | ||
|
||
|
||
// tests/approvals/box-enum-contract.algo.ts::BoxContract.readEnums() -> bytes: | ||
readEnums: | ||
// tests/approvals/box-enum-contract.algo.ts:14-15 | ||
// @arc4.abimethod({ name: 'read_enums' }) | ||
// public readEnums(): Tuple<[UintN64, UintN64]> { | ||
proto 0 1 | ||
// tests/approvals/box-enum-contract.algo.ts:16 | ||
// assert(op.Box.get(Bytes('oca'))[0] === op.itob(this.oca.value)) | ||
bytec_0 // "oca" | ||
box_get | ||
pop | ||
// tests/approvals/box-enum-contract.algo.ts:5 | ||
// oca = Box<arc4.OnCompleteAction>({ key: Bytes('oca') }) | ||
bytec_0 // "oca" | ||
// tests/approvals/box-enum-contract.algo.ts:16 | ||
// assert(op.Box.get(Bytes('oca'))[0] === op.itob(this.oca.value)) | ||
box_get | ||
swap | ||
btoi | ||
swap | ||
assert // Box must have value | ||
itob | ||
== | ||
assert | ||
// tests/approvals/box-enum-contract.algo.ts:17 | ||
// assert(op.Box.get(Bytes('txn'))[0] === op.itob(this.txn.value)) | ||
bytec_1 // "txn" | ||
box_get | ||
pop | ||
// tests/approvals/box-enum-contract.algo.ts:6 | ||
// txn = Box<TransactionType>({ key: Bytes('txn') }) | ||
bytec_1 // "txn" | ||
// tests/approvals/box-enum-contract.algo.ts:17 | ||
// assert(op.Box.get(Bytes('txn'))[0] === op.itob(this.txn.value)) | ||
box_get | ||
swap | ||
btoi | ||
swap | ||
assert // Box must have value | ||
itob | ||
== | ||
assert | ||
// tests/approvals/box-enum-contract.algo.ts:5 | ||
// oca = Box<arc4.OnCompleteAction>({ key: Bytes('oca') }) | ||
bytec_0 // "oca" | ||
// tests/approvals/box-enum-contract.algo.ts:19 | ||
// return new Tuple(new UintN64(this.oca.value), new UintN64(this.txn.value)) | ||
box_get | ||
swap | ||
btoi | ||
swap | ||
assert // Box must have value | ||
itob | ||
// tests/approvals/box-enum-contract.algo.ts:6 | ||
// txn = Box<TransactionType>({ key: Bytes('txn') }) | ||
bytec_1 // "txn" | ||
// tests/approvals/box-enum-contract.algo.ts:19 | ||
// return new Tuple(new UintN64(this.oca.value), new UintN64(this.txn.value)) | ||
box_get | ||
swap | ||
btoi | ||
swap | ||
assert // Box must have value | ||
itob | ||
pushbytes 0x | ||
uncover 2 | ||
concat | ||
swap | ||
concat | ||
retsub | ||
|
||
|
||
// tests/approvals/box-enum-contract.algo.ts::BoxContract.__algots__.defaultCreate() -> void: | ||
__algots__.defaultCreate: | ||
// tests/approvals/box-enum-contract.algo.ts:4 | ||
// export class BoxContract extends arc4.Contract { | ||
proto 0 0 | ||
retsub |
63 changes: 63 additions & 0 deletions
63
tests/approvals/out/box-enum-contract/BoxContract.arc32.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
{ | ||
"hints": { | ||
"store_enums()void": { | ||
"call_config": { | ||
"no_op": "CALL" | ||
} | ||
}, | ||
"read_enums()(uint64,uint64)": { | ||
"call_config": { | ||
"no_op": "CALL" | ||
} | ||
} | ||
}, | ||
"source": { | ||
"approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgp0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo6Qm94Q29udHJhY3QuYXBwcm92YWxQcm9ncmFtOgogICAgaW50Y2Jsb2NrIDAgMQogICAgYnl0ZWNibG9jayAib2NhIiAidHhuIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgY2FsbHN1YiBjb25zdHJ1Y3RvcgoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICBjYWxsc3ViIF9fcHV5YV9hcmM0X3JvdXRlcl9fCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo6Qm94Q29udHJhY3QuY29uc3RydWN0b3IoKSAtPiB2b2lkOgpjb25zdHJ1Y3RvcjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjQKICAgIC8vIGV4cG9ydCBjbGFzcyBCb3hDb250cmFjdCBleHRlbmRzIGFyYzQuQ29udHJhY3QgewogICAgcHJvdG8gMCAwCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo6Qm94Q29udHJhY3QuX19wdXlhX2FyYzRfcm91dGVyX18oKSAtPiB1aW50NjQ6Cl9fcHV5YV9hcmM0X3JvdXRlcl9fOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6NAogICAgLy8gZXhwb3J0IGNsYXNzIEJveENvbnRyYWN0IGV4dGVuZHMgYXJjNC5Db250cmFjdCB7CiAgICBwcm90byAwIDEKICAgIHR4biBOdW1BcHBBcmdzCiAgICBpbnRjXzAgLy8gMAogICAgIT0KICAgIGJ6IF9fcHV5YV9hcmM0X3JvdXRlcl9fX2JhcmVfcm91dGluZ0A2CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBwdXNoYnl0ZXMgMHhmMjZjNmQ0MiAvLyBtZXRob2QgInN0b3JlX2VudW1zKCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZWYxODZjZjcgLy8gbWV0aG9kICJyZWFkX2VudW1zKCkodWludDY0LHVpbnQ2NCkiCiAgICB1bmNvdmVyIDIKICAgIG1hdGNoIF9fcHV5YV9hcmM0X3JvdXRlcl9fX3N0b3JlX2VudW1zX3JvdXRlQDIgX19wdXlhX2FyYzRfcm91dGVyX19fcmVhZF9lbnVtc19yb3V0ZUAzCiAgICBiIF9fcHV5YV9hcmM0X3JvdXRlcl9fX3N3aXRjaF9jYXNlX2RlZmF1bHRANAoKX19wdXlhX2FyYzRfcm91dGVyX19fc3RvcmVfZW51bXNfcm91dGVAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IG5hbWU6ICdzdG9yZV9lbnVtcycgfSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBOb09wCiAgICA9PQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMCAvLyAwCiAgICAhPQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgc3RvcmVFbnVtcwogICAgaW50Y18xIC8vIDEKICAgIHJldHN1YgoKX19wdXlhX2FyYzRfcm91dGVyX19fcmVhZF9lbnVtc19yb3V0ZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6MTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IG5hbWU6ICdyZWFkX2VudW1zJyB9KQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18wIC8vIDAKICAgICE9CiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiByZWFkRW51bXMKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHN1YgoKX19wdXlhX2FyYzRfcm91dGVyX19fc3dpdGNoX2Nhc2VfZGVmYXVsdEA0OgogICAgYiBfX3B1eWFfYXJjNF9yb3V0ZXJfX19hZnRlcl9pZl9lbHNlQDEwCgpfX3B1eWFfYXJjNF9yb3V0ZXJfX19iYXJlX3JvdXRpbmdANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjQKICAgIC8vIGV4cG9ydCBjbGFzcyBCb3hDb250cmFjdCBleHRlbmRzIGFyYzQuQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIG1hdGNoIF9fcHV5YV9hcmM0X3JvdXRlcl9fX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUA3CiAgICBiIF9fcHV5YV9hcmM0X3JvdXRlcl9fX3N3aXRjaF9jYXNlX2RlZmF1bHRAOAoKX19wdXlhX2FyYzRfcm91dGVyX19fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgQm94Q29udHJhY3QgZXh0ZW5kcyBhcmM0LkNvbnRyYWN0IHsKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzAgLy8gMAogICAgPT0KICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGNhbGxzdWIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlCiAgICBpbnRjXzEgLy8gMQogICAgcmV0c3ViCgpfX3B1eWFfYXJjNF9yb3V0ZXJfX19zd2l0Y2hfY2FzZV9kZWZhdWx0QDg6CgpfX3B1eWFfYXJjNF9yb3V0ZXJfX19hZnRlcl9pZl9lbHNlQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6NAogICAgLy8gZXhwb3J0IGNsYXNzIEJveENvbnRyYWN0IGV4dGVuZHMgYXJjNC5Db250cmFjdCB7CiAgICBpbnRjXzAgLy8gMAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6OkJveENvbnRyYWN0LnN0b3JlRW51bXMoKSAtPiB2b2lkOgpzdG9yZUVudW1zOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6OC05CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyBuYW1lOiAnc3RvcmVfZW51bXMnIH0pCiAgICAvLyBwdWJsaWMgc3RvcmVFbnVtcygpOiB2b2lkIHsKICAgIHByb3RvIDAgMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6MTAKICAgIC8vIHRoaXMub2NhLnZhbHVlID0gYXJjNC5PbkNvbXBsZXRlQWN0aW9uLk9wdEluCiAgICBpbnRjXzEgLy8gMQogICAgaXRvYgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6NQogICAgLy8gb2NhID0gQm94PGFyYzQuT25Db21wbGV0ZUFjdGlvbj4oeyBrZXk6IEJ5dGVzKCdvY2EnKSB9KQogICAgYnl0ZWNfMCAvLyAib2NhIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6MTAKICAgIC8vIHRoaXMub2NhLnZhbHVlID0gYXJjNC5PbkNvbXBsZXRlQWN0aW9uLk9wdEluCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxMQogICAgLy8gdGhpcy50eG4udmFsdWUgPSBUcmFuc2FjdGlvblR5cGUuQXBwbGljYXRpb25DYWxsCiAgICBwdXNoaW50IDYgLy8gNgogICAgaXRvYgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6NgogICAgLy8gdHhuID0gQm94PFRyYW5zYWN0aW9uVHlwZT4oeyBrZXk6IEJ5dGVzKCd0eG4nKSB9KQogICAgYnl0ZWNfMSAvLyAidHhuIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6MTEKICAgIC8vIHRoaXMudHhuLnZhbHVlID0gVHJhbnNhY3Rpb25UeXBlLkFwcGxpY2F0aW9uQ2FsbAogICAgc3dhcAogICAgYm94X3B1dAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1lbnVtLWNvbnRyYWN0LmFsZ28udHM6OkJveENvbnRyYWN0LnJlYWRFbnVtcygpIC0+IGJ5dGVzOgpyZWFkRW51bXM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxNC0xNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgbmFtZTogJ3JlYWRfZW51bXMnIH0pCiAgICAvLyBwdWJsaWMgcmVhZEVudW1zKCk6IFR1cGxlPFtVaW50TjY0LCBVaW50TjY0XT4gewogICAgcHJvdG8gMCAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxNgogICAgLy8gYXNzZXJ0KG9wLkJveC5nZXQoQnl0ZXMoJ29jYScpKVswXSA9PT0gb3AuaXRvYih0aGlzLm9jYS52YWx1ZSkpCiAgICBieXRlY18wIC8vICJvY2EiCiAgICBib3hfZ2V0CiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjUKICAgIC8vIG9jYSA9IEJveDxhcmM0Lk9uQ29tcGxldGVBY3Rpb24+KHsga2V5OiBCeXRlcygnb2NhJykgfSkKICAgIGJ5dGVjXzAgLy8gIm9jYSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjE2CiAgICAvLyBhc3NlcnQob3AuQm94LmdldChCeXRlcygnb2NhJykpWzBdID09PSBvcC5pdG9iKHRoaXMub2NhLnZhbHVlKSkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBpdG9iCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxNwogICAgLy8gYXNzZXJ0KG9wLkJveC5nZXQoQnl0ZXMoJ3R4bicpKVswXSA9PT0gb3AuaXRvYih0aGlzLnR4bi52YWx1ZSkpCiAgICBieXRlY18xIC8vICJ0eG4iCiAgICBib3hfZ2V0CiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjYKICAgIC8vIHR4biA9IEJveDxUcmFuc2FjdGlvblR5cGU+KHsga2V5OiBCeXRlcygndHhuJykgfSkKICAgIGJ5dGVjXzEgLy8gInR4biIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjE3CiAgICAvLyBhc3NlcnQob3AuQm94LmdldChCeXRlcygndHhuJykpWzBdID09PSBvcC5pdG9iKHRoaXMudHhuLnZhbHVlKSkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBpdG9iCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo1CiAgICAvLyBvY2EgPSBCb3g8YXJjNC5PbkNvbXBsZXRlQWN0aW9uPih7IGtleTogQnl0ZXMoJ29jYScpIH0pCiAgICBieXRlY18wIC8vICJvY2EiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxOQogICAgLy8gcmV0dXJuIG5ldyBUdXBsZShuZXcgVWludE42NCh0aGlzLm9jYS52YWx1ZSksIG5ldyBVaW50TjY0KHRoaXMudHhuLnZhbHVlKSkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBpdG9iCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo2CiAgICAvLyB0eG4gPSBCb3g8VHJhbnNhY3Rpb25UeXBlPih7IGtleTogQnl0ZXMoJ3R4bicpIH0pCiAgICBieXRlY18xIC8vICJ0eG4iCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czoxOQogICAgLy8gcmV0dXJuIG5ldyBUdXBsZShuZXcgVWludE42NCh0aGlzLm9jYS52YWx1ZSksIG5ldyBVaW50TjY0KHRoaXMudHhuLnZhbHVlKSkKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHN3YXAKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBpdG9iCiAgICBwdXNoYnl0ZXMgMHgKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9ib3gtZW51bS1jb250cmFjdC5hbGdvLnRzOjpCb3hDb250cmFjdC5fX2FsZ290c19fLmRlZmF1bHRDcmVhdGUoKSAtPiB2b2lkOgpfX2FsZ290c19fLmRlZmF1bHRDcmVhdGU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgQm94Q29udHJhY3QgZXh0ZW5kcyBhcmM0LkNvbnRyYWN0IHsKICAgIHByb3RvIDAgMAogICAgcmV0c3ViCg==", | ||
"clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCgp0ZXN0cy9hcHByb3ZhbHMvYm94LWVudW0tY29udHJhY3QuYWxnby50czo6Qm94Q29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW06CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" | ||
}, | ||
"state": { | ||
"global": { | ||
"num_byte_slices": 0, | ||
"num_uints": 0 | ||
}, | ||
"local": { | ||
"num_byte_slices": 0, | ||
"num_uints": 0 | ||
} | ||
}, | ||
"schema": { | ||
"global": { | ||
"declared": {}, | ||
"reserved": {} | ||
}, | ||
"local": { | ||
"declared": {}, | ||
"reserved": {} | ||
} | ||
}, | ||
"contract": { | ||
"name": "BoxContract", | ||
"methods": [ | ||
{ | ||
"name": "store_enums", | ||
"args": [], | ||
"readonly": false, | ||
"returns": { | ||
"type": "void" | ||
} | ||
}, | ||
{ | ||
"name": "read_enums", | ||
"args": [], | ||
"readonly": false, | ||
"returns": { | ||
"type": "(uint64,uint64)" | ||
} | ||
} | ||
], | ||
"networks": {} | ||
}, | ||
"bare_call_config": { | ||
"no_op": "CREATE" | ||
} | ||
} |
Oops, something went wrong.